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
memoized
module- 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
WeakMap
to stop memory leaks
Future
- Stabilized API for
memoized
module to prepare for releasing version 1.0.0 - Fully documented and tested
memoized
module - 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
memoized
module- 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
dom
andcomponent
modules - Fixed faulty regular expression in the internal function
kebabCase
in thecomponent
module
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
addEventListener
based event system- Stops memory leaks from old handlers exported to
window.eventHandlers
- Improves performance by stopping the use of
eval
by the browser for inline event handlers
- Stops memory leaks from old handlers exported to
- Added a
state
decorator 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
state
by fixing type checking bug - Fixed incorrect behavior in
property
andstate
decorators- 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.ts
location defined inpackage.json
instead 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:
dom
module testing with Mocha and Chaiserve
based preview server instead ofhttp-server
due to vulnerabilities- Improved README.md
- Automatic binding to
observedAttributes
and type conversion inproperty
decorator forComponent
- Simplified
components
module with new and improved API - Cleaned up and rewritten code for the
components
module - 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
shx
andnpm-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