🧩 The Module Update
This update combines several improvements to the core API, marking a major milestone towards the 1.0 release. We are so back.
The main install is now a single telem.lua file. Vendor dependencies previously in vendor.lua are now combined with the core API.
A new module loader has been added for building inputs, outputs, and middleware. The loader supports single-file or multi-file formats, as well as a compressed Luz format for very large sources. An upcoming release will formalize the module API and add documentation; for now, take a look at the cobbled-together quick start guide: https://github.com/cyberbit/telem-modules/wiki/Module-Quick-Start
Custom input/output/middleware can now be added to Backplane as functions, without needing to wrap in telem.input.custom() or equivalent.
Backplane now reads inputs in parallel! This is thanks to a revolutionary new idea called "good design" that I was unfamiliar with when I started this project. Most input integrations have been refactored to execute their peripheral calls in parallel. Cycle execution time is no longer tightly correlated to the number of metrics (in my test world it is upwards of 50x faster for 7 Mekanism machines). To avoid CC event overflow, input reads are executed in batches, though the batching is not very smart and will likely be revised.
Mod integrations have been migrated to the telem-modules repository. This was done for a number of reasons, many of my thoughts are on #85. Navigation on the documentation site has been updated slightly to reflect this (Input/Advanced Peripherals -> Input/Modules/Advanced Peripherals). To ease the transition, the updated installer downloads all mod integrations automatically, in the release flavor selected. In the future, modules will be opt-in and configurable.
"And there was much rejoicing"
Internal
- Update build script to emit one file with combined core + vendor dependencies
Installer
- Update installer for single-file build
- Add module download to installer
- Add parallel downloading to installer
- Remove installer dependency on custom download proxy
Dependencies
- Add lazy initialization to vendor loader
- Add Luz decompressor by MCJack123
- Fluent: Add 1 chainable method to Fluent entrypoint
API
- Add module loader
- Add module autoload to library entrypoint
Backplane
- Update
addInput,addOutput, andmiddlewareto directly accept functions for custom adapters and middleware (#86) - Update
cycleto read inputs in parallel (#87)
Inputs
- Migrate mod integrations to cyberbit/telem-modules (#85)
Full Changelog: v0.9.1...v0.10.0