What’s new in v8.1.1?

I noticed there’s a new update! I can’t seem to find the differences or patch notes anywhere though. What was added? I assume it’s just some backend stuff but it would be nice to know!

8.1.1 is just bugfixes. Here's the scoop on 8.1.0:

  • New Features:
    • lists as dictionaries: alphanumeric indices for lists, access fields (JSON) and columns (CSV) by name
    • include custom block data dependencies in libraries, eliminates the need for initialization routines creating and populating variables required by custom block definitions
    • visually highlight variable scope when mouse-hovering over a variable declaration in visible stepping mode
    • visually highlight the variable declaration of variable accessor blocks when mouse-hovering over them in visible stepping mode
    • visually highlight senders / receivers when mouse-hovering over messaging blocks in visible stepping mode
    • show intermediate results when debugging a script, i.e. when clicking on a script in visible stepping mode. Thanks, Vic!
    • new "When (sprite) is edited" event hat block, supports light user interaction logging
    • new PIPE primitive in the control category
    • "touching" predicate now also accepts a 2-item list representing x/y-coordinates to check for collision with an arbitrary point
    • hyper-rays: support lists of relative angles in the left "ray length TO sprite" input slot for instant fields of vision
    • added "delete" option to context menu of global and sprite-local variable declarations in the blocks palette
    • added "translations" selector to metaprogramming blocks
    • new "disable dragging data" preference setting for (kids') MicroWorld creators
    • pixels library: Added command blocks to rename and export costumes
    • new "ide_blocks" extension primitive
    • new extension primitives: "txt_to_utf8(txt)" and "txt_from_utf8(utf8List)", thanks, John!
    • new extension primitive "txt_transform(name, txt)" for encoding, decoding, escaping, unescaping and hashing text
    • new extension primitive "cst_export(cst, name)" for exporting/downloading a costume
    • new extension primitive: "syn_scripts([xml])" for getting & setting (and deleting!) the scripts of a sprite
    • codification: calling "code of" on a sprite returns a text version of its scripting area (concatenated codified scripts delimited by empty lines)
    • extensions can auto-load and auto-exec allowed or allow-listed external JS scripts that modify the IDE, e.g. to add buttons by storing the external url in global (optionally hidden) variables whose name starts with "module"
    • extensions can add custom buttons to the palette, thanks, Bernat!
    • added retina support for inlined morphic worlds, enabling high-res embedding of Snap! components into other websites
    • added configuration options for embedding Snap! into other websites
    • new API methods for synchronizing scripts across sprites and Snap! instances
    • new API methods for signalling scripts through highlighting blocks that correspond to marked portions of mapped text code
  • Notable Changes:
    • enabled same-named global and sprite-local variables
    • no more error messages when the number of actual arguments doesn't match the number of implicit parameters
    • removed empty parens from extension prims "ide_all_blocks", "ide_language" and "ide_translations"
    • hyperized bitwise operators, and gave them more mnemonic block names, thanks, Bernat and Brian!
    • optional inputs "broadcast" and "switch to scene" blocks don't auto-fill when called with an input list
    • made formal parameters available in variable-menu dropdowns of all blocks inside of block editors
    • hyperized "code of" reporter (codification primitive)
    • round watcher readouts to 6 decimal digits (like Scratch), instead of 9
    • updated "for each" help screen, thanks, Brian!
    • TuneScope extension update, thanks, Harsh, Jo and Glen!
    • SciSnap2 extension update, thanks, Eckart!
    • MQTT library update, thanks, Simon!
    • removed PIPE from all libraries (b/c it is now a built-in primitive in the control blocks palette)
    • updated "Codification" example project
    • hide "stage selected - no motion primitives" text when hiding the category names in single palette mode
    • order "my scripts" list by their top-down position in the scripting area (not by the time of their placement)
    • don't show "result pic" option in block context menu with "click-to-run" disabled
    • enable JavaScript extensions when running Snap! locally without a webserver (location.protocoll "file:")
    • enable "JavaScript function" primitive to be hidden / shown independently from enabling JavaScript extensions
    • shrunk some new built-in costumes, to make them load faster
  • Notable Fixes:
    • fixed refactoring (renaming) variables (I hope, haha!)
    • fixed retaining transience when renaming a global or sprite-local variable
    • fixed displaying message senders
    • improved text wrapping - wrap words that are too wide for a line by letters
    • improved touch-hold gesture on mobile Android devices, thanks, @ego-lay-atman-bay!
    • don't show block relabel options that are marked as hidden
    • fixed aggressive cache issue, thanks, Michael!
    • fixed exporting pics of morphs in dev mode, thanks, @xBZZZZ!
    • fixed API->broadcast() to also accept a data payload, thanks, Zak!
    • SciScnap2 library: fixed SQL queries containing the percent characters
    • fixed exporting information about blocks in custom categories when creating a summary document (#3097)
    • fixed occasional "reporter did not report" error when changing a custom command block to become a reporter
    • fixed a naming issue when importing duplicate data files
    • fixed occasional errors when using "broadcast" and "this script" in the same script
    • fixed deselecting / selecting blocks in the "Unused Blocks" dialog
    • fixed "obj_name" extension prim to also accept numbers as names
    • fixed "Make Variables" extension for numerical names
    • fixed palette category ghosting update when hiding / unhiding blocks using extension primitives
    • fixed accidentally drawing unwanted dots when changing a pen color dimension thanks, Joan!
    • fixed zebra coloring for polyadic read-only input slots
    • fixed a label rendering glitch when flashing blocks
    • prevented variables from being renamed to blanks
    • caught an occasional maximimum call-stack size range error when embedding blocks into a scripts pic
    • improved frame scheduling, prevent excessive frame drops, thanks, SArpnt!
    • hiding the keyboard handler text area better by reducing its visible dimensions to zero
    • fixed a codification glitch for empty list slots
    • fixed deleting embedded reporters in keyboard-entry mode
    • fixed zebra coloring when importing a script from file or smart PNG
    • fixed accidentally triggering "When I receive green flag" events for any broadcast message
    • COMBINing an empty list with JOIN results in an empty text rather than in the number zero
    • hide new primitives in old microworlds
    • explicitly garbage collect (i.e. remove) terminated audio elements
    • don't crash the "play frequency" block when passing a non-numerical input
  • Documentation Updates:
    • new "docs" folder for documentation files, thanks, Michael!
    • new doc for extensions, thanks, Michael!
    • extended API documentation
  • Translation Updates:
    • German
    • Catalan, thanks, Joan!
    • Dutch, thanks, Hans!
    • Brazilian Portuguese, thanks, Artur!

And here's the list for 8.1.1:

  • Notable Fixes:
    • loading old projects only hides new blocks if they already contain hidden ones
    • distinguish selected named list indices ("random", "last") from same-named typed-in dictionary keys
    • fixed opening projects when the language is set to non-English
  • Documentation Updates:
    • updated API documentation for "noAutoFill" configuration setting

It’s an impressive list of (mostly, relatively) small improvements!

  • projects no longer generate project url,you have to open them again each time

Thank you. Yeah, we're kinda running out of big missing features! The big thing in 8.1 that our gang is most excited about is non-numeric list indices, to make dictionaries, but we could already make dictionaries; they were just slower.

Unshared projects don't put the URL in the title bar.

shared ones do,but quickly clear it when trying to reload

i wonder if there's a performance difference between ring variables and list dictionaries

I just tested that out, and man, that is awesome! It was a bit jaring to be able to type text in a round slot (normally a number slot), but it's gonna come in handy with a ton of projects, and also remove the need to import the asoc block in pretty much every project I make.

  • made more blocks into the snapshot lib

there's basically no performance difference between using the OF block on rings and dictionary lists. tested both for 1 minute each with alphabet keys. i'm not sure whether it's the blocks being the same or

anyways assoc fast now enjoy
make sure to switch out any assoc blocks in your project because that ASSOC block, despite the lightning symbol, is literally 2% the speed

it just gives a big confusing list though :(

why? can you revert this change? its kinda annoying

There was a reason. I think teachers were getting confused about whether projects were shared or not.

Glad you like it!

bc unshared projects dont need a project link
no one would be able to view it even if there was one

So, question, am I misunderstanding the dictionary function or could it be used to emulate structs from C?


It's basically just asoc put into the item of block