Decker 1.64
Decker 1.64 is a maintenance release that dramatically reduces deck size and offers a number of scripting enhancements.
Fixes (Web):
- "sys.ms" is now rounded properly, rather than truncated.
- The "Edit -> Invert" tool did not work correctly.
Fixes (Web and Native):
- Corrected column name collisions for certain cases of the "cross" operator.
- Corrected failures to round-trip canvas widget clipping rectangles.
- When canvas.text[] was asked to wrap text within a specified bounding rectangle it was not correctly clipped.
New Features:
- Introduced a new image codec, IMG3, which offers superior compression to previous codecs. Opening and saving an existing deck with Decker 1.64 will apply IMG3 to any card/prototype background images, canvas images, inline images within rich text, or image data in module keystores where it will improve upon the previous representation. In practice I have observed up to 4x improvements in deck size with this new codec, especially in decks that make extensive use of color or dithered photographic images; your results will vary.
- The new "sys.z" field provides a local time zone offset, in hours.
- The new "sys.ops" field offers a way for Lil code to measure how many "ops" elapse in the interpreter. The Lil Playground includes the "performance" example program demonstrating how to use this feature to compare the performance of two script fragments.
- Decker's Listener now preserves a longer history scroll, making print[] and show[] more useful for debugging.
- Slightly improved the performance of "while" loops; a tight loop could now use up to 9% fewer ops.
- Improved the performance of unicode text ingestion; for realistic prose examples Decker and Lilt can read unicode text roughly twice as fast.
- Improved the performance of dictionary amends and unioning dictionaries with the comma operator.
- Many example decks and modules have been updated to take advantage of new features: twee, pdf, plot, bn, brushes, publictransit.
- Keystores have been generalized to support any datatype as keys and function more generally as mutable dictionaries, for situations where immutable dicts are not sufficiently performant. Keystores can now be created on the fly using the keystore[] constructor function.
- Introduced four new unary primitives to Lil: trim (strip leading and trailing whitespace from strings), ceil (ceiling; a counterpart to floor, for completeness and clarity), rev (reverse the order of elements of strings, lists, or tables), and distinct (remove duplicate elements from strings, lists, or tables):

- The RText Interface now offers a slightly more general "rtext.trim[]" as a counterpart to the "trim" primitive.
Breaking Changes:
- The KeyStore interface now reserves the ".dict" and ".value" keys (in addition to ".keys" and ".type", as previously). If any existing modules need to store or access data with those specific names, they can use the ".value[]" function to do so indirectly:

Non-reserved keys that are valid Lil identifiers can still be read and written directly like an ordinary dictionary, as before. The read-only ".dict" attribute of a KeyStore constructs an ordinary dictionary based on its current contents.
- The names "trim", "ceil", "rev", and "distinct" are now reserved keywords; code that uses these names for variables will need to rename them. Decks which use these names for widgets or cards may rename those elements or use more verbose methods of referring to them; e.g. card.widgets["rev"] instead of "rev". Contraptions may continue to use these names for attributes.
As always, pardon our dust. I hope the new functionality will more than compensate for minor breakage of existing projects.
If you encounter any problems with this release, please reach out immediately!
Elsewhere In The Deckerverse:
A lot of folks seem to enjoy WigglyPaint. Did you know there's a fresh v1.5 release out with new tools and toys to play with? Of course, as with any Decker project, it's even more fun if you customize it and make it your own!
Files
Get Decker
Decker
A multimedia sketchbook
| Status | In development |
| Category | Tool |
| Author | Internet Janitor |
| Tags | 1-bit, Decker, ditherpunk, Game engine, HyperCard, No AI, Painting, zine |
| Accessibility | Color-blind friendly, High-contrast, Interactive tutorial |
More posts
- Decker 1.6619 days ago
- Decker 1.6561 days ago
- Decker 1.63Dec 19, 2025
- Decker 1.62Nov 28, 2025
- Decker 1.61Nov 14, 2025
- Decker 1.60Oct 03, 2025
- Decker 1.59Sep 12, 2025
- Decker 1.58Aug 15, 2025
- Decker 1.57Jul 25, 2025

Comments
Log in with itch.io to leave a comment.
thank you lord janitor
IMG3 is kinda magic, dang! I'm seeing decks go to a quarter of the size!
Just watched a deck I am working on halved in size after saving in this update. Incredible!