Decker 1.55


Decker 1.55 is a major update which overhauls the semantics of the Lil scripting language and provides numerous bugfixes and minor usability improvements.

Fixes (Web):

  • Corrected an inconsistency in the behavior of accessing font glyphs by index.
  • Corrected conversion of tilde characters (~) into the DeckRoman UNKNOWN character.

Fixes (Native):

  • In some situations, Native-Decker was failing to load deck metadata, including custom palettes, when opening .html exports.
  • Fixed read[] ignoring the requested filetype and exclusively reading data as a Deck.

Fixes (Web and Native):

  • Corrected the dimensions of the "scale" spinner in fonts.deck.
  • In some situations, moving widgets with the same name on different cards would produce incorrect undo history while editing.
  • The Lil phrase "insert with end" now produces the empty table, as intended, instead of a 0-row, 1-column table.

New Features:

  • Fonts.deck now includes full DeckRoman support for the "sloppy" fonts, courtesy of olszoj.
  • Lilt can now import[] a deck and obtain a dictionary of its module values, as a convenience for using modules from CLI scripts.
  • Lil module KeyStores can now directly store tables, images, sounds, and arrays, reducing the amount of marshaling and conversion necessary to store these forms of data alongside the module. Prefer using the KeyStore for large static data over stuffing it into the module's source code!
  • Clicking the middle mouse button while using drawing tools now acts as a pipette tool, selecting the current pixel as a new stroke color. Your mileage may vary depending on your intersecting choices of pointing device, operating system, and (for web-decker) web browser.
  • Introduced the Lil "nil" datatype and the associated "fill" primitive.

Breaking Changes:

The introduction of nil to Lil represents a subtle but sweeping set of alterations to the semantics of Lil, in a way which I believe will ultimately make it easier to construct robust programs. I apologize in advance for the growing pains which will result from these changes, and I offer my sincere assurance that I never intend to introduce another breaking change of this magnitude in the future. My recent blog post Nil for Lil describes some of the problems this change intends to address.

Many Lil scripts will continue to work as expected. The "fill" keyword is now reserved, and may require some variables to be renamed. The behavior of the "unless" operator has changed; it now coalesces to the left argument if and only if the right argument is nil, rather than 0. Expressions which rely on comparing an out-of-bounds index (outdex) of a list, dictionary, or table to the literal 0 (as by "0~") may need to instead compare with nil ("nil~"). Examine the Lil and Decker reference manuals for details on changes to the behavior of the "parse" operator (returning nil for missing slots instead of 0 or "" as a placeholder) and the similar changes to readcsv[]. Parsing and emitting JSON or LOVE data will round-trip nil as "null".

This release includes version bumps for a number of Lil modules: dialogizer/dd (v1.5), puppeteer/pt (v1.2), path (v1.2), and plot (v2.1). If you're using any of these in your existing decks, be sure to upgrade the modules to the latest version alongside Decker. I've tested all of my contraptions in the Bazaar, and as far as I can tell only the Validator was broken (ironically); I'll have an updated version posted promptly.

I recommend that anyone migrating a large project from earlier versions of Decker to 1.55 make a backup of their deck and retain a copy of their previous Decker executable before moving forward just in case anything goes haywire. If you need help with a migration, feel free to reach out. As always, please notify me promptly with details if you encounter bugs or odd behavior in this release. Please pardon my dust!

Elsewhere In The Deckerverse:

Over 70 participants have signed up for treegravy's Decker Visual Novel Jam, but there's still more than a month left to join in! Stop by the jam's community forum for a peek at what your fellow Deckbuilders are cooking up!

Files

Decker-1.55-mac.zip 2.6 MB
1 day ago
Decker-1.55-win.zip 2.4 MB
1 day ago
lilt-1.55.zip 481 kB
1 day ago

Get Decker

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

Thanks for the update! 

Not sure if it's related to the update, but for some reason attribute values are not saving in the properties panel for a custom contraption. You can set the value but after closing and reopening the panel it will revert.

Tested on: Web Decker and Native Decker (debian)

(1 edit) (+1)

On which contraption are you observing this problem? It's most likely case-specific. If it's something you've written yourself, what do the attribute get_ and set_ handlers look like?

(1 edit) (+1)

Apologies, I may have misunderstood how properties and attributes work. I played around with it some more and I think I figured out what I was doing wrong.

(+1)

If there's any further confusion about contraption implementation, feel free to open a thread in the community forum!