github jmoenig/Snap v10.0.0

latest releases: v10.1.9, v10.1.8, v10.1.7...
3 months ago

10.0.0:

  • New Features:
    1. Blocks all the way
      • all blocks in the palette are now custom blocks, except hat blocks and rings
      • bootstrap global custom blocks as primitives
      • new "primitive" (pragma) block for custom block definitions
      • support for associating custom block definitions with primitives
      • support for overloading primitives with custom block definitions and organizing them in libraries
      • new experimental (hidden) option to bulk-toggle the use-primitive switch in all customized primitives
      • export and include customized primitives in libraries
    2. New blocks and new block features
      • new "skew" primitive block for costumes
      • new "a new clone of 'Turtle sprite'" feature - makes a new temporary Turtle sprite that does not inherit anything
      • lazy translation support for data
    3. Customizing Blocks
      • color type input slots for custom blocks
      • variadic variables type input slots for custom blocks
      • destinations, locations, keys, data types, objects + self, sprites + self, collidables, object attributes, microphone, scenes, primitives, properties and extensions dropdown menus for custom blocks
      • upvars in custom blocks can now have different default names than their formal parameter names
      • "collapse" label support for variadic inputs in custom blocks
      • variadic "collapse" (prefix label) support for custom blocks
      • default values for variadic slots inside custom blocks
      • initial subslot number support for variadic inputs
      • special "receivers" type input slots for custom blocks (as in the "broadcast" primitive)
      • special "send data" type input slots for custom blocks (as in the "switch to scene" primitive)
      • max/min subslot number support for variadic inputs in custom blocks
      • new "input names" selector in the (attribute OF target) primitive reporter
      • prefixing a default text value in the slot-type dialog with dollar-underscore tags it as translatable selector
      • support translating custom drop-downs by prefixing items with $_
    4. Customizing the palette
      • custom blocks can be rearranged in the palette via their context menu, thanks, Simon Mong for pioneering this!
      • custom blocks can be grouped in the palette by adding vertical spaces in between them
    5. Customizing the IDE
      • new API configuration option to hide the project name, thanks, Bernat!
      • new API configuration option to hide project specific entries in the file/project menu
    6. Metaprogramming
      • new Metaprogramming library
      • allow (nested) lists of block label parts in the DEFINE command to express multi-line block labels
      • metaprogramming support for color type input slots (number: 13, spec: "clr", mnemonic: "color")
      • metaprogramming support for color type variadic variables slots (number: 14, spec: "scriptVars", mnemonic: "vars")
      • metaprogramming support for "collapse" labels in variadic inputs
      • metaprogramming support for c-slots with loop arrows (number: 15, spec: "ca", mnemonic: "loop")
      • metaprogramming support for "expand" (slot prefix) labels in variadic inputs
      • metaprogramming support for default values of variadic inputs
      • metaprogramming support for initial variadic subslots
      • metaprogramming support for message-receiver type multi-slots (number: 16, spec: "receive", mnemonic: "receivers")
      • metaprogramming support for send-data type multi-slots (number: 17, spec: "send")
      • metaprogramming support for max/min subslot number in variadic inputs in custom blocks
      • metaprogramming support for newlines in custom block labels ("$nl")
    7. Extensions
      • new "Code to Blocks to Code" library, translates text code to blocks and vice-versa
      • new 3D Beetle Geometry extension, thank you, Bernat!
      • new experimental "Embroidery" library
      • new EDC Early Maths Microworlds, thanks, Zak Kolar and Bernat!
      • new "writing and formatting" library, thanks, Tethrarxitet!
      • new "Outlines and Halos" library
      • new "snap" category with new "snap_block_selectors" extension primitive
      • new "bootstrap" and "un-bootstrap" extension primitives
      • new "bootstrapped(block)?" extension primitive
      • new "snap_yield" extension primitive
      • new extension primitives for encoding / decoding blocks to and from xml
      • new 'xhr_binary(url, webIDL_type)' extension primitive
      • new "binary data from (url) type (webIDL)" reporter in the web-services library
      • pixels library: new "grayscales of (costume)" reporter
      • pixels library: new "rectangle costume" reporter
      • new "sigmoid" easing function in the animations library (for neural networks)
    8. Hypermutation
      • new "changeBy(data, delta)" extension primitive
    9. Live Coding
      • new live coding "performer mode" setting, thank you, Bernat!
    10. Matrix-kernel convolutions
    11. Lisp code / codification
      • new LISP-like text syntax for blocks and scripts
      • new "Lisp code..." entry in blocks context menu
      • new "code..." entry to blocks context menu if "Codification support" setting is enabled
    12. User interface
      • copy text from variable watchers, block result bubbles and sprite speech/thought balloons to the clipboard
      • new Search feature for the library browser, thanks, Michael!
      • new "svg poly" export format for vector pen trails, optimized for speed and laser-cutting
      • export vector pen trails as embroidery files (DST, EXP)
      • added pen trails export options to the project ("file") menu
      • added ability to switch octaves in the piano keyboard menu, thanks, ego-lay-atman-bay!
  • Notable Changes:
    1. Blocks all the way
      • renamed "primitive" blocks into "extension"
    2. Blocks behavior
      • drawing a dot when moving zero steps now observes the flat-line-ends settings and draws a centered square or rhombus the size of current pen and in its direction
      • optimized FOR-loop and FOR-EACH-loop for speed
    3. Custom Blocks
      • keep the order & position of existing custom blocks in the project palette when overloading them with imported blocks
      • support for multiple separator lines in input slot dropdown menus
      • Libraries (and Costumes, etc) media files are now in a JSON format, which supports translation and additional search metadata.
      • arcs library: changed label wording to TurtleStitch convention, added "arc left" version
    4. Metaprogramming
      • automatically add generic inputs in DEFINE matching the number of placeholders in the label
      • when querying the defintion of a block via metaprogramming the number of inputs of the resulting ring now matches that of the header expression
      • block label symbols are now shown with their name prefixed by "$" instead of an underscore to avoid confusing them with inputs when metaprogramming
      • the metaprogramming getter for "translations" block attribute selector now always returns a list
      • custom block definition comments can now be deleted by setting them to nothing (empty string, zero or false)
      • the "define" block now always creates a new custom block definition instead of sometimes modifying the definition body of an existing one with a matching label
      • support for smooth animations in recursive control structures defined using metaprogramming
      • When programmatically setting the "slots", "defaults", "menus", "editables" or "replaceables" of a custom block to a non-list type, apply the type to all slots instead of just the first one.
    5. Hypermutation
      • the "change by" command for variables is now hyperized and even recursively mutates (!) data
    6. User interface
      • scroll long text inside result balloons instead of shortening it
      • Confirmation pop-ups when closing the browser tab only appears in the event of unsaved changes, thanks, 2-www
      • more help screens, thanks, Brian and the forum gang!
    7. Lisp code
      • splitting a LISP-formatted text by "blocks" returns a block-syntax tree
      • converting a block-syntax tree to "text" using the list-selectors reporters reeturns LISP code
  • Notable Fixes:
    • fixed a type error when using metaprogramming to copy default inputs from a primitive over to a custom block definition
    • fixed referencing system drop-down menus in metaprogramming
    • fixed correctly evaluating (reifying) static (irreplaceable) C-slots inside custom blocks
    • only capture the caller once in repeating recursive calls
    • fixed a rendering situation glitch for live rings
    • fixed a bug in the colors library, thanks, Brian!
  • Documentation Updates:
    • new Snap! Lisp Syntax documentation
    • updated extensions.md
  • Translation Updates:
    • German

Don't miss a new Snap release

NewReleases is sending notifications on new releases.