Hamsters.js

100% Vanilla Javascript Multithreading & Parallel Execution Library

ARTISTIC-2.0 License

Downloads
347
Stars
569
Committers
9

Bot releases are hidden (Show)

Hamsters.js - v4.1.2 Bug Fix Release

Published by austinksmith over 7 years ago

This release is mostly a stop gap release to resolve outstanding bugs that were reported, this will likely be the last version that is hand written and optimized specifically for each platform as the library complexity is getting a little out of hand. Future releases assuming they are performant will be written with the latest features in mind and transpiled to provide legacy support.

Resolved Issues

Microsoft Edge navigator.hardwareConcurrency is undefined error.
Node Worker is undefined error.

Beta Features

When using the library within Node.js you can now pass an optional Worker parameter referencing which third party worker implementation you would like to use. This feature is in beta and may or may not work depending on the implementation you choose to use. Please submit a issue report if you encounter problems with a specific implementation.

var hamsters = require('hamsters.js');
var webWorker = require('....').Worker;

hamsters.init({
  maxThreads: 3,
  persistence: false,
  Worker: webWorker
});
Hamsters.js - v4.1.1 Released

Published by austinksmith over 7 years ago

This release resolves all remaining legacy fall back support bugs including issues with Node.js attempting to invoke workers that don't exist.

RESOLVED ISSUES
Erroneous results when using legacy processing mode and invoking multiple threads - https://github.com/austinksmith/Hamsters.js/issues/27
Node.js Worker is not defined on initialization - https://github.com/austinksmith/Hamsters.js/issues/28
Hamsters.tools.loop functionality not taking into account legacy mode

Special thanks to @Zodiase for discovering the problems.

Hamsters.js - v4.1.0 Released

Published by austinksmith over 7 years ago

This release is a somewhat large change which deviates from how the library was used in the past, library will no longer automatically initialize when your application loads. This decision was made in order to allow for more fine tuned control over the library operation and you can now pass an optional startOptions configuration object to control library behavior on initialization.

  var startOptions = {
    maxThreads: integer,
    cache: boolean,
    debug: booealn,
    persistence: boolean
  };
  hamsters.init(startOptions);

At the moment only the above configuration options are available for your control, in later releases more options will be exposed.

Another notable change is when making use of the optional dataType argument the library will no longer automatically convert your input array into a TypedArray, you as the developer must ensure you are already passing the library the proper array type. The library will still ensure your final output matches the same dataType as you supplied in your arguments.

Finally this release includes many performance improvements and resolves some edge case problems related to the hamsters.tools.loop functionality.

ENJOY

Happy Hamster

Hamsters.js - v4.0.0

Published by austinksmith over 7 years ago

Resolved Issues
This change removes all remaining special cases for Node.js support, previously the library was having node look for the file under src/common/wheel.min.js which was typically reserved only for when using Internet Explorer 10. This is no longer the case and will require a proper working third party web worker implementation in order for Node.js to function outside of the legacy fallback mode.

Hamsters.js - v3.9.9

Published by austinksmith over 7 years ago

Resolved Issues
Node.js legacy fallback mode not working
Library will leave less crud in memory after initial setup

Hamsters.js - v3.9.8

Published by austinksmith over 7 years ago

Improvements

  • Node error using global variable self issue is now resolved
  • Memoization support is working again and moved to an in memory cache
  • Removed some old unused logic and optimized existing logic

Notes
The memoization method has been moved from sessionStorage to being an in memory cache, this means the only limit to the number of cached results is how much memory is available on the client so please ensure you're only caching the results you really need to cache.

Hamsters.js - v3.9.7

Published by austinksmith over 7 years ago

Very minor update, this release fixes issues with bower package settings

Hamsters.js - v3.9.6

Published by austinksmith almost 8 years ago

_V3.9.6 Release Notes_

This release consolidates the src/react-native version back into the normal es5/es6 library versions and the library should now officially work under Node.js.

RESOLVED ISSUES
Path naming issues with IE10 support when making use of web workers
NPM issues with module.exports, library should now officially work within Node.js

KNOWN ISSUES
Memoization support is broken and not 100% functional, avoid using cache: true

Hamsters.js - v3.9 HOTFIX Release

Published by austinksmith almost 8 years ago

_V3.9.1 HOTFIX Release Notes_

RESOLVED
Non transferrable object functionality has been restored thanks @wolfiex for discovering the issue
Resolves processDataType returning the dataType instead of the data itself in the event it doesn't match with known TypedArrays

KNOWN ISSUES
Memoization support is broken and not 100% functional, avoid using cache: true

Hamsters.js - V3.9

Published by austinksmith almost 8 years ago

_V3.9 Release Notes_

BETA SUPPORT
React-native support
ES6 support

RESOLVED
Transferrable object issues
Performance issues related to try catch logic

KNOWN ISSUES
Memoization support is broken and not 100% functional, avoid using cache: true

Hamsters.js - v3.8

Published by austinksmith almost 9 years ago

Eliminates use of eval/new function for legacy devices
Replaces eval call with new function call for loop tool abstraction
Resolves legacy issues with loop tool abstraction
Adds typed array support for legacy and worker environments where applicable (improves output consistency)

Hamsters.js - v3.6

Published by austinksmith about 9 years ago

  1. Removes external file dependency for SharedWorker support inside Workers
  2. Adds fallback support inside workers for browsers that don't support SharedWorkers
  3. Library cleanup
Hamsters.js - v3.5

Published by austinksmith about 9 years ago

Adds Node.js support

Implements true threading for Internet Explorer 10 when making use of the common files, falls back to using legacy processing when unable to connect to common/node/wheel.min.js file

Worker environment support (does not support transferrable objects)

Hamsters.js - v3.4

Published by austinksmith about 9 years ago

Resolves issues with debugging and concurrency
Introduces unit tests
Improved debugging for legacy devices

Hamsters.js - v3.3

Published by austinksmith about 9 years ago

Introduces persistence mode for real time applications such as online games
Dramatically reduced garbage collection for consistent performance
Any typed array passed into a functions params object will make use of transferrable objects now, not just 'array'
Improved multicore performance scaling
Dramatically reduced latency when using optional dataType argument

Hamsters.js - v3.2

Published by austinksmith about 9 years ago

Removes all remaining reliance on global window object, should now function outside of browsers
No longer appends setup functions to self object
Slight optimizations

Hamsters.js - v3.1

Published by austinksmith about 9 years ago

Increase maxThread fallback count from 2 to 4
Finalized performance improvements
Library polish (jslint)
Reduced library complexity and overhead

Hamsters.js - v3.0-Hotfix

Published by austinksmith about 9 years ago

Resolves critical security error in IE11

Hamsters.js - v3.0

Published by austinksmith about 9 years ago

Eliminates all dom interaction from the library
Further reduces library runtime overhead & complexity
Major performance improvements when using typed arrays
Massively reduced thread creation performance cost
Removed scar tissue
Fixed minified version runtime issues (YUI compressor instead of UglifyJS)

Hamsters.js - v2.9

Published by austinksmith about 9 years ago

Resolves remaining blob creation memory issues in IE11
Improved memory management, single blob creation per session
Reduced dom overhead and interaction, single dom element & interaction per session
Improved thread creation performance & library startup
Reduced library variable size and complexity
Removed browser specific tweaks, rely on browser manufacturers to optimize structured cloning algorithms
Improved general performance

Package Rankings
Top 4.99% on Npmjs.org
Top 14.03% on Bower.io
Badges
Extracted from project README
npm version downloads