Snap 10.1.0 has been released

10.1.0:

  • New Features:
    1. OOP 2.0
      • new list-dictionary based object system with data scope and Lieberman style prototypical inheritance
      • new "parent" selector for accessing list items, points to entry at ellipsis "..."
      • new "object" item in the THIS (runtime environment) primitive reporter's dropdown menu
      • new OOP library
    2. support for input-groups in custom blocks
      • new "group" option in custom block slot type editor's special settings menu for multiple inputs
      • metaprogramming support for input groups (represented by a list of slot types)
      • new "Declare & Initialize Script Variables" library
    3. UI Looks
      • flat / default (skeuomorphic) design
      • bright / dark (color) theme
      • new "theme" configuration key in the API
      • new "cube" and "cubeSolid" symbols
    4. Other
      • new Continuations library for run/cc and call/cc
  • Notable Changes:
    • preserve the order of items when using lists as dictionaries or data objects
    • variadic slots in custom blocks now support '%nl' as separators and expansion labels
    • Boolean input slot default values can be specified through metaprogramming
    • variadic Boolean input slot defaults can be specified both in the UI and through metaprogramming
    • added an official "Restore primitives" item to the project menu, if a project / scene has customized prims
    • default values and expansion labels of variadic input slots in custom blocks are now translatable by prefixing them with $-underscore
  • Notable Fixes:
    • exclude variables declared inside input rings from the dropdown menu of reachable variables
    • automatically declare variadic upvars inside custom blocks when evaluating them
    • fixed a LISP-encoding conflict between a variadic expression and formal ring parameters
    • fixed naming a block to a JS property such as "constructor"
    • fixed a variable refactoring (renaming) bug in custom block definitions
  • Documentation Updates:
    • updated API.md with new "theme" configuration key for "bright" or "dark" UI modes
    • updated LISP syntax documentation for script parameters
  • Translation Updates:
    • German

My dark flat theme userscript is now (somewhat) obsolete! Nice.

There's a heck of a lot of new stuff in this release - thanks Jens :slight_smile:

Nice additions & improvements.
Still … the user documentation gap (online help + ref. manual) keeps on widening.

after all these years..

and the opposite,

ah, yes, the dev version doesn't work because "VariableFrame is not defined"
i really hope that serviceworker problem gets fixed if it hasn't already

What does this do?

If your dictionary has an entry whose key is "..." then when you attempt to look up a key with ITEM key OF dictionary and the key isn't in that dictionary, we look in the dictionary that's the value of "..." (and same in that dictionary's "..." if the key still isn't found, recursively).

The reason it's "..." instead of "parent" is to avoid translation issues.

Yeah shut up. I know.

Prototype inheritance, right?
... as a key in the list
can be accessed with parent or ... in item _ of _
similar to __proto__ in JavaScript

It looks like it's used in the new OOP library.

Yeah that's what it's for!

yes, here's the teaser I posted on social media for the new OOP features:

OOP won’t show up in libraries list

Try clearing your cache

How?

Cuz it says snap 10.1.0 it just won’t show up the library

You can clear cache in chrome following this

And on firefox

As a side note, as I was searching for these, I found out that chrome now gives you a shortcut to the clear browsing data screen (where you clear cache) when you type "clear cache" into the address bar, which is pretty handy.

I guess you feel it’s all your fault. It isn’t (at least not entirely), and your feeling guilty doesn’t help anyone. For starters, why can’t jens make sure every block introduced or updated be accompanied by an up-to-date online help text?

I guess he could, although traditionally that's my job too.