#ReleaseThursday A historic moment in the https://thi.ng/umbrella microverse!

I just re-published all 214 projects, the first release referencing their new home at @Codeberg with updated links in all packages, examples, readmes and other documentation... 🎉

(Also added a prominent note [hopefully prominent enough!] at the top of the main readme to inform about this project migration...)

Happy Coding! :) The detangling from US big tech continues...

#ThingUmbrella #OpenSource #Codeberg #TypeScript #JavaScript

thi.ng/umbrella

thi.ng/umbrella

#ReleaseThursday 🎉 Just pushed a new version of the https://thi.ng/column-store database and query engine which adds support for new column types (fixed-size n-dimensional int/uint/float vectors) and RLE (run-length encoding) compression support for more column types. I also updated/extended the readme and started adding/porting more tests...

Related to these changes is that https://thi.ng/rle-pack now also offers the `encodeSimple()`/`decodeSimple()` functions which work for arrays of any type. This is in addition to the more advanced bitwise RLE packing offered so far (but only available for integer arrays). The readme for that package also has more code examples now...

Happy Coding! :)

#ThingUmbrella #OpenSource #TypeScript #JavaScript

In-memory column store database with indexing (WIP)

thi.ng/column-store

Get ready for the biggest moment yet! Nitrocid 0.2.0 RC will be here soon! Keep checking for updates!

#Nitrocid #NitrocidKS #KernelSimulator #TechNews #TechUpdates #Aptivi #csharp #programming #dotnet #ReleaseThursday

#ReleaseThursday #OpenSourceXmas A little present (to some of you)... Been meaning to release these recent additions before the holidays, but only getting around to it now. The most important new things are these:

https://thi.ng/units now includes a Lisp-like formula DSL to combine, calculate and convert quantities and units in a much concise manner than via the normal TypeScript API (see attached examples)

https://thi.ng/pixel-io-tiff is a new package (only 2.6KB) to provide TIFF image format parsing and EXIF/GPS metadata extraction (without having to parse the image fully). Also includes format conversions for https://thi.ng/pixel buffers (grayscale 8/16bit, RGB 24/32bit), but only supports most common TIFF features (e.g. tiles, strips, uncompressed or deflate). Supports multiple sub-images... Write support will be released early next year

https://thi.ng/math now has conversions to/from fractions, using "continued fractions" for best possible precision (also includes recursion-free implementations of GCD & LCM).

https://thi.ng/binary now provides `DATAVIEW`, a JS-native DataView-like API tailored for using `Uint8Array` or vanilla JS numeric arrays (assuming the array contains u8 values) and accessors for signed/unsigned 8-64bit word sizes and little/big endian ordering.

See main #ThingUmbrella readme for other recent updates:
https://github.com/thi-ng/umbrella?tab=readme-ov-file#latest-updates

#TypeScript #JavaScript #OpenSource #DSL #Lisp #UnitConversion #TIFF #Binary #Fraction

Updated internal state handling of the https://thi.ng/parse parser generators & DSL to define parsers. Seeing a 1.2 - 1.6x speedup of parsing performance in example projects (see project readme for links), especially for larger inputs...

#ThingUmbrella #ReleaseThursday #Parser #DSL #TypeScript #JavaScript

Purely functional parser combinators & AST generation for generic inputs

thi.ng/parse

#ThingUmbrella #ReleaseThursday 🚀 Some new exciting *major* upgrades with important features & fixes to the following packages:

https://thi.ng/geom — v7 is adding support for polygons with holes, paths with sub-paths (i.e. holes or multiple curves) as new/updated shape types and adding & updating 20+ of the polymorphic shape operators, predicates, conversion & sampling functions...

Full changelog:
https://github.com/thi-ng/umbrella/blob/develop/packages/geom/CHANGELOG.md

https://thi.ng/hiccup-canvas — v3 fixes a long standing issue with drawing paths with holes and/or containing SVG-compatible elliptic arc segments, both of which are now fully supported (in addition to circular arcs, which are *only* available for the canvas API)

Relevant section in the readme:
https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup-canvas/README.md#path

Full changelog:
https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup-canvas/CHANGELOG.md

As mentioned in other recent messages, the thi.ng/geom changes also have triggered updates and feature support in other related packages, e.g. http://thi.ng/geom-axidraw, https://thi.ng/geom-sdf. There're also new/updated examples... (See recent toots & package readmes for links)

Happy coding! :)

#ThingUmbrella #Geometry #SVG #Canvas #Visualization #OpenSource #TypeScript #JavaScript

Functional, polymorphic API for 2D geometry types & SVG generation

thi.ng/geom

#ReleaseThursday 🚀 — This week's second round of releases is featuring:

https://thi.ng/geom — added support for more shape pairings in the polymorphic intersection function to altogether 18, now also including: line↔︎group (incl. nested groups), line↔︎polygon, line↔︎polyline, ray↔︎group, ray↔︎line

https://thi.ng/geom-isec — simplified intersection result type (intersection point(s) now always in an array), added computation of point-inside-shape flags to more shape types, bug fixes

https://thi.ng/meta-css — more updates to CSS template handling, spec doc system and tons more additions to the generative baseframework specs/templates, now already consisting of 932 CSS utility classes (incl. 61 callable templates/functions/macros), which can be used as-is or as starting point to define your own custom CSS framework(s). All explained in the readme... This toolchain will likely keep on seeing a flurry of other updates since I'm heavily using it for the design of the new thi.ng website too! Together with mprocs[1] and Vite it also offers a very nice hot-reloading workflow...

https://thi.ng/hiccup-css — added support for SASS-style `&`-parent reference when defining nested selectors, updated readme w/ examples

https://thi.ng/random — added a `weightedProbability()` function to simplify dealing with arbitrarily shaped distributions (attached code example to compute the histogram & visualize results as ASCII-art is from the API docs)

As usual, please check the readmes and changelogs for more details!

#ThingUmbrella #TypeScript #JavaScript #Geometry #Intersections #CSS #MetaCSS #OpenSource

[1] https://github.com/pvolok/mprocs

Open source building blocks for computational design. Est. 2006

thi.ng is a set of ~350 complementing code libraries & projects, a long-term effort devoted to Computational Design and Art in its many forms.

thi.ng

#ThingUmbrella #ReleaseThursday & new package announcement:

https://thi.ng/imago is a declarative & extensible image processor using JSON arrays to define pipelines (or rather trees, because nestable) of processing steps as pure data. Each pipeline can produce file outputs at any point. Multiple outputs are supported & expected. So far there're a dozen operations/transforms (most of them with many options). More to come and it's also very straightforward to add support for custom image transforms.

The following file formats are supported: AVIF, GIF, JPEG, JPEG2000, JPEG XL, PNG, SVG (input only), TIFF, WebP, raw data (output only). Output file names can be templated with various presets (e.g. dimensions, date, time, hashes etc.)

All image I/O & processing is done via https://sharp.pixelplumbing.com and https://thi.ng/pixel & https://thi.ng/pixel-dither. Whilst "sharp" is doing most of the behind-the-scenes heavy lifting, this new library allows for a wider set of transformations and options to define various ops (e.g. sizes/positions can also be given as percent). Sharp on its own also has other limitations (which can only be overcome with extra interim in-memory serializations)...

**Docs & examples are still forthcoming — please bear with me! 😉**

Ps. This project is the spritual successor of an eponymous project I started in Clojure/Java back in 2014... The big wheel keeps on turning!

Pps. ...it's also the 190th (😱) library/project in #ThingUmbrella!

#OpenSource #ImageProcessing #Declarative #TypeScript #JavaScript

Open source building blocks for computational design. Est. 2006

thi.ng is a set of ~350 complementing code libraries & projects, a long-term effort devoted to Computational Design and Art in its many forms.

thi.ng

#ReleaseThursday As promised, a new version of https://thi.ng/fibers is out now and includes several new fiber operators/combinators and all the essentials for channel-based communication between processes/fibers (aka #CSP). The CSP channel supports arbitrary buffer sizes & implementations to achieve a range of blocking/non-blocking behaviors for reads/writes. And because all channel ops (read/write/close) are fiber-based, they can also be combined with all the other available operators, enabling some pretty powerful and expressive usage patterns...

More demos & tutorial forthcoming. Check the readme, API docs & examples and please report back with any feedback/questions/suggestions...

🫶🚀

#ThingUmbrella #TypeScript #CooperativeMultitasking