Skip to content

Releases: HereIsKevin/boreDOM

0.10.0

29 Dec 02:29
Compare
Choose a tag to compare

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

30 Jul 19:15
Compare
Choose a tag to compare

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 and component modules
  • Fixed faulty regular expression in the internal function kebabCase in the component 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

09 Jul 01:37
Compare
Choose a tag to compare

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
  • 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 and state 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 in package.json instead of having multiple copies
    • Updated examples to use new structure
  • Simple stopwatch app benchmarks to compare boreDOM and ReactJS

0.7.0

04 Jul 22:09
Compare
Choose a tag to compare

Version 0.7.0 is a feature release of boreDOM with:

  • dom module testing with Mocha and Chai
  • serve based preview server instead of http-server due to vulnerabilities
  • Improved README.md
  • Automatic binding to observedAttributes and type conversion in property decorator for Component
  • 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

28 Jun 23:45
Compare
Choose a tag to compare

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

21 Jun 16:52
Compare
Choose a tag to compare

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

20 Jun 01:11
Compare
Choose a tag to compare

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

11 Jun 01:18
Compare
Choose a tag to compare

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

08 Jun 21:25
Compare
Choose a tag to compare

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 and npm-run-all
  • Exact same API as version 0.3.0

0.3.0

26 May 00:24
Compare
Choose a tag to compare

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