Skip to content

Commit

Permalink
Closes #109.
Browse files Browse the repository at this point in the history
  • Loading branch information
winitzki committed Feb 5, 2017
1 parent 386631f commit f23a8d9
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Version history

- 0.1.8 "Singleton" molecules and reactions are now called "static", which is more accurate. Added more examples, including a concurrent Game of Life.
- 0.1.8 "Singleton" molecules and reactions are now called "static", which is more accurate. Added more examples, including a fully concurrent Game of Life. Some optimizations in the reaction scheduler.

- 0.1.7 New compile-time restrictions, towards guaranteeing single reply for blocking molecules. It is now not allowed to call blocking molecules inside loops, or to emit replies in any non-linear code context (such as, under a closure or in a loop). Change of artifact package from `code.chymyst` to `io.chymyst`. This version is the first one published on Sonatype Maven repository.

Expand Down Expand Up @@ -74,7 +74,7 @@ Version 0.7: Static optimizations: use advanced macros and code transformations

3 * 3 - add logging of reactions currently in progress at a given RS. (Need a custom thread class, or a registry of reactions?)

3 * 4 - use java.monitoring to get statistics over how much time is spent running reactions, waiting while BlockingIdle(), etc.
3 * 4 - use `java.monitoring` to get statistics over how much time is spent running reactions, waiting while BlockingIdle(), etc.

2 * 3 - implement `Perishable()` static molecules that can be eventually consumed (but not repeatedly emitted)

Expand All @@ -84,7 +84,7 @@ Version 0.7: Static optimizations: use advanced macros and code transformations

3 * 5 - implement automatic thread fusion for static molecules?

5 * 5 - is it possible to implement distributed execution by sharing the join pool with another machine (but running the reaction sites only on the master node)?
5 * 5 - is it possible to implement distributed execution by sharing the join pool with another machine (but running the reaction sites only on the master node)? Use Paxos, Raft, or other consensus algorithm to ensure consistency?

3 * 4 - LAZY values on molecules? By default? What about pattern-matching then? Probably need to refactor SyncMol and AsyncMol into non-case classes and change some other logic. — Will not do now. Not sure that lazy values on molecules are important as a primitive. We can always simulate them using closures.

Expand Down Expand Up @@ -116,14 +116,12 @@ Version 0.7: Static optimizations: use advanced macros and code transformations
5 * 5 - How to rewrite reaction sites so that blocking molecules are transparently replaced by a pair of non-blocking molecules? Can this be done even if blocking emitters are used inside functions? (Perhaps with extra molecules emitted at the end of the function call?) Is it useful to emit an auxiliary molecule at the end of an "if" expression, to avoid code duplication? How can we continue to support real blocking emitters when used outside of macro code?

2 * 2 - Revisit Philippe's error reporting branch, perhaps salvage some code

3 * 3 - How to implement "Wavefront" computations such as Game of Life efficiently with more concurrency?


3 * 3 - Replace some timed tests by probabilistic tests that run multiple times and fail much less often; perhaps use Li Haoyi's `utest` framework that has features for this. Also, it has features for specifying compilation errors, which I currently can't do. Investigate adding some minimal sugar to `utest` so that it looks superficially more like `scalatest`.

3 * 3 - Implement "pipelined" molecules, detect them automatically. The criterion is that the union of all conditionals should be factorizable.

3 * 3 - SmartThread should keep information about which RS and which reaction is now running. This can be used both for monitoring and for automatic assignment of thread pools for reactions defined in the scope of another reaction.
3 * 3 - `SmartThread` should keep information about which RS and which reaction is now running. This can be used both for monitoring and for automatic assignment of thread pools for reactions defined in the scope of another reaction.

## Will not do for now

Expand Down

0 comments on commit f23a8d9

Please sign in to comment.