I am very happy to announce that the Typescript implementation of Sodium is ready!
It features a newly developed scheme for memory management, which was needed
because Javascript has no finalizers. Memory management in Sodium is 100%
automatic.
This scheme imposes one small requirement on the API: You must declare any Sodium
objects held inside closures using wrapper functions lambda1, lambda2 ..
lambda6 - depending on the number of arguments that the closure has.
These take a second argument, which is a list of the Sodium objects contained
in the context of the closure. For example:
This allows Sodium to track all dependencies. There are some limitations to this
scheme - for example, it can't track dependencies if you poke arbitrary Sodium
objects into a StreamSink, but I think these should not affect any normal usages.
Time will tell.
CHANGELOG
1.0.5 Migrate build environment over to fuse-box.
Begin adding fantasy-land compatibility
1.0.0 Add snapshot3(), snapshot4(), snapshot5() and snapshot6().
Fix a serious bug in TimerSystem where timers sometimes don't fire.