Releases: HereIsKevin/boreDOM
0.10.0
Introduction
In boreDOM 0.10.0, the new memoized module is nearly complete. With blazing fast performance from caching, boreDOM easily beats frameworks like React and Angular. A new diff algorithm runs in linear time, relying on simple and fast string comparisons powered by the data to DOM mirroring system instead of using slow DOM calls.
Features
- Revolutionary new diff system in the
memoizedmodule- Sanitizes nodes for faster iteration
- Uses data to DOM mirroring with a diff algorithm for speed
- Fully caches groups of DOM nodes used in diff for performance
- Over twice as fast large diffs, even faster on small diffs
- Optimized cache for speed, using
WeakMapto stop memory leaks
Future
- Stabilized API for
memoizedmodule to prepare for releasing version 1.0.0 - Fully documented and tested
memoizedmodule - Further optimizations on rendering performance
- Add recursive templating system to improve performance and diff accuracy
0.9.0
Introduction
After a long time in development, with over twice as much time and effort poured into redesigning the architecture of boreDOM, 0.9.0 is out. To replace the slow and aging O(n^2) virtual DOM-based diff algorithm, an revolutionary memoized DOM at runtime algorithm has been implemented.
Despite taking slightly longer to start up, due to the extensive caching of data, memoized dom is extrodinarily efficient at updating. Without the overhead of a virtual DOM, each render has nearly no overhead, as all the locations of the possible changes has already been cached. No DOM lookups are necessary, causing the algorithm to be O(n).
Since all the possible differences are already found, the algorithm is extremely GC-friendly, never allocating anything other than the occasional new node. Unlike most libraries of its kind, boreDOM does not require compilation, causing it to be easier to use than Svelte, Imba, and Solid. The lack of compilation allows a speady start, only requiring the most basic of tools, a browser, to get started.
Features
- New
memoizedmodule- Efficient interpolation of values through caching and marker nodes with comments
- Simplified and performant subsequent renders
- Highly optimized caching algorithm to improve initial render time
- Ability to easily render up to 2000 times per second
- Fully tested
domandcomponentmodules - Fixed faulty regular expression in the internal function
kebabCasein thecomponentmodule
Future
- Improved diff algorithm for large amounts of interpolated nodes
- Further optimizations in the initial render time
- Reduced cache size to conserve memory and improve performance
0.8.0
Version 0.8.0 is a feature release of boreDOM with:
- No API changes, but many breaking behavioral changes and file location changes
addEventListenerbased event system- Stops memory leaks from old handlers exported to
window.eventHandlers - Improves performance by stopping the use of
evalby the browser for inline event handlers
- Stops memory leaks from old handlers exported to
- Added a
statedecorator to allow more complex values to be stored and auto-updated without an attribute backing it - Allow retrieval of methods in arrays and objects in values stored in
stateby fixing type checking bug - Fixed incorrect behavior in
propertyandstatedecorators- Moved caching to class to allow for per-instance value storage, prevents new instances from affecting old ones
- Properly retrieves initial attributes after the first time by caching per-instance instead of per definition
- Reorganized and improved package structure
- ESM first, CommonJS second while still retaining compatibility with both
.d.tslocation defined inpackage.jsoninstead of having multiple copies- Updated examples to use new structure
- Simple stopwatch app benchmarks to compare boreDOM and ReactJS
0.7.0
Version 0.7.0 is a feature release of boreDOM with:
dommodule testing with Mocha and Chaiservebased preview server instead ofhttp-serverdue to vulnerabilities- Improved README.md
- Automatic binding to
observedAttributesand type conversion inpropertydecorator forComponent - Simplified
componentsmodule with new and improved API - Cleaned up and rewritten code for the
componentsmodule - Updated examples to use the new API
0.6.0
Version 0.6.0 is a feature release of boreDOM with:
- Full removal of old element system
- Feature parity for decorator-less code and pure JavaScript (see counter example)
- Type memorization and conversion for attributes
- Setting attributes through
{}
- Updated examples to use new components
- Fully typed examples rewritten in TypeScript
- Prebuilt non-NPM tarballs with examples
0.5.0
Version 0.5.0 is a feature release of boreDOM with:
- Automatic conversion to string in HTML templates
- Type memorization and conversion in attribute decorators
- Updated examples to work with new API
- Prebuilt released documentation
- Fully linted and formatted codebase
0.4.0
Version 0.4.0 is a feature release of boreDOM, with:
- WebComponent-based components (to replace boreDOM Elements) with
- Improved encapsulation and optimized reactivity through native features
- Performance improvement through diffing only changed components
- Declarative and readable API with proposal decorators
- Fully documented core API
- New examples for new components
- Updated README
0.3.2
Version 0.3.2 is a patch release of boreDOM, with:
- Removal of recursive proxies to:
- Prevent the call stack size maximum from being exceeded on circular dependencies
- Improve performance
- Simplify the source code
- Slight behavioral change due to the remove of recursive proxies
- Exact same API as v0.3.1
0.3.1
Version 0.3.1 is a patch release of boreDOM, with:
- Hybrid NPM package with both CommonJS and ESM builds
- Organized and improved build scripts
- Cross platform build scripts with
shxandnpm-run-all - Exact same API as version 0.3.0
0.3.0
Version 0.3.0 is the first proper release of boreDOM, with:
- Perfected builds
- Moderately stabilized api
- Support for both CommonJS and ESM
- Additional improvements in the code
- ...and more