mastodon.uno è uno dei tanti server Mastodon indipendenti che puoi usare per partecipare al fediverso.
Mastodon.Uno è la principale comunità mastodon italiana. Con 77.000 iscritti è il più grande nodo Mastodon italiano: anima ambientalista a supporto della privacy e del mondo Open Source.

Statistiche del server:

6,2K
utenti attivi

#codegenerator

0 post0 partecipanti0 post oggi

Thanks to @made I recently learned that dynamic code generation doesn't play nice with certain Content Security Policies (CSP). This has a major impact on a few core packages in #ThingUmbrella, like the thi.ng/vectors package which contains ~900 vector functions, most of them code generated and optimized for different vector sizes/dimensions (incl. n-dimensional versions). This package (and some others using a similar approach) are key dependencies for dozens of other geometry/visualization related packages... However, I found code generation the only way to practically manage & maintain the sheer amount of functionality provided.

Because of this (CSP impact), I've been working on a new code generator, which converts the dynamically generated code into statically generated source code files. This will make the overall initial package size bigger, but this shouldn't be a major problem in practice, since there're also very positive effects, including:

- The new format allows for doc strings for _all_ generated vector ops (with the dynamic approach there was no way to properly attach those in TypeScript)
- The new file structure (single function per source file) massively helps with dead code elimination when using a bundler, resulting in smaller final file/bundle sizes. When NOT using a bundler, similar filesize savings can be had by using direct imports (to individual functions) rather than full package imports
- None of the unused versions need to be code generated at runtime anymore, so also improving startup time

The new codegen is already covering around more than a third of the 900 ops. If you want to keep an eye on progress & discussion, follow this issue:

github.com/thi-ng/umbrella/iss

thi.ng/vectorsOptimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts

How to structure a #python project with both generated and authored code?

Python tools don't handle well anything other than $root/$package or $root/src/$package

Code generator removes files that it finds, assuming they're outdated

editors can handle a separate subdirectory, but using linter or tests would required synchronizing that directory with the main source directory.

Each of these solutions sucks.

I'm thinking of designating special sub-package `extras` would do the work, it wouldn't clash with generated code, but perhaps others have better ideas.

Discussione continua

Did some further updates to the #TypeScript code generator for #WASM bindings (thi.ng/wasm-api-bindgen) and released new versions of all thi.ng/wasm-api packages. The new codegen creates even smaller code (approx. -20%), achieved via better re-use of newly introduced helper functions to reduce boilerplate...

These changes will have compounding effects for larger numbers (or complexities) of generated types, especially those involving structs with string fields and/or arrays/slices...

thi.ng/wasm-api-bindgenPolyglot bindings code generators for hybrid JS & WebAssembly projects