CoreASM-v1.1
From CoreASM Wiki
This package will include:
- CoreASM Engine 1.1
- Current branch in Perforce:
//CoreASM/development/main/... - Branch in Perforce after release:
//CoreASM/development/v1.1/...
- Current branch in Perforce:
- Carma
- Current branch in Perforce:
//CoreASM/development/main/... - Branch in Perforce after release:
//CoreASM/development/v1.1/...
- Current branch in Perforce:
- CoreASM Eclipse Plugin ?
- Current branch in Perforce:
//CoreASM/development/eclipse-plugin/... - Branch in Perforce after release:
//CoreASM/development/eclipse-plugin/v??/...
- Current branch in Perforce:
Download
http://www.coreasm.org/downloads/ [not available yet]
Known Problems
To Do List
High Priority
- show the surrounding text in error messages
- Leave a note in the user manual regarding the potential problem of "call-by-name" method and recursive calls (see Call-by-name and Recursive Calls)
- change the scheduler diagram to add the checking for single-agent inconsistency.
- fix the classloader problem in the engine
- state the invalid value in error message "Incremental add update only applies to modifiable enumerables."
- High Priority: inconsistent updates in a sequence (second part) should AT LEAST give a warning!!
- introduction of braces for parallel blocks
- BUG?: updates to a domain (and similar enumerable objects) are ignored in a sequence
- running
forall n in Nodes do Configure(n)withConfigure(node) = let n = 5 in ...means trouble! - Policy plugins in TR
- Add a section on Termination conditions to the user manual
- Make necessary changes to facilitate using rules in recursive patterns
Medium Priority
- With the new CoreASMError, many of the exceptions thrown can be changed to CoreASMError
- Add a refrence to the declaring ASTNode in Backgrounds, Universes and Functions similar to Rules
- tag updates with nodes so that later looking at an update, we know where in spec this update is coming from
- predefined elements of universes and enumerations should get a name similar to their variable names
- add "static" keyword to the user manual
- Bring back the conditional expression ?:
- Add a background TIME which is the NUMBER background (for now)
- assign some info to ids (like who introduced it, what is it, etc)
- Access to the OS environment
- a 'new(universe/background)' function
- options plugin has some problem with option values
- Eclipse plugin input-window (perhaps even on Carma as well) freezes on MacOS X.
- Do not evaluate the operands of operators, leave it to the plugins. What was wrong with that? :-/
- command-line input in Input Plugin
- multi-set!
- concat(list1, list2) which can be used in fold and map
- adding/removing pairs to/from maps
- addall {a,b,c} to mySet
-
include FILE - ForEach construct
- Seqblock with one rule is equivalent to the inner rule
Low Priority
- add a parsing command
- case rule with pattern matching
- add the unicode versions of the operators in set plugin
- let plugins have an open API of the form String->Object
- fix the single-argument limitation of the dynamic function call
- Eclipse plugin should have a button to reload/recreate a new engine. It helps when you add new plugins.
- dynamic rule call
- Type constructs
- study the idea of using threads in parallel rules (block-rule, forall, etc.)
- the order of arguments in functions passed to foldr and perhaps foldl are reversed!
- quote and unquote
- Eclipse plug-in: syntax highlighting for String constants ends by EOL (which is incorrect)
- Eclipse plug-in: tabs are counted as 8 (or whatever defined localy) characters in eclipse column number but are counted as 1 character in parser error reports.
Change List
- The first version of Modularity Plugin is implemented. It has a simple include construct that basically loads the module into the file. It also introduces a CoreModule declaration which is not interpreted for now.
- Engine error messages are improved a bit.
- Specification lines loaded in the engine are tagged with the source file and original line number so that plugins that change the specification (such as the Modularity Plugin and TabBlocks plugin) does not mess with error messages.
- Extension Point plugins can now specify a call-order request so that if two plugins are registered for the same engine mode change, if needed, they can rely on a proper call order.
- There is no order enforced on the declarations. init rule, use clauses, rule declarations, etc. can appear in any order.
- new rule construct: case TERM of (VALUE -> RULE)+ endcase
- String values can be viewed as a list of their characters
- Error handling of modifying non-modifiable locations is improved.
- initially is improved to accept maps of lists to elements for functions with arity of more than one
- Cleaned out the set plugin so that set elements are unmodifiable (to be consistent with other data structures)
- improved Enumerable to support indexed enumeration which helps choose and forall rules and exists and forall expressions
- added a pick expression to the ChooseRulePlugin of the form: pick x in X with G
- 'subset' added to Set plugin
- A rule-call stack is maintained by the interpreter which helps with error reporting
- concurrent threads are used for multi-agent simulation
- Policy plugins are defined
- a "toSet" function that makes a set out of any enumerable
- a "toList" function that makes a list out of any enumerable
- Some minor changes (mostly to method names) to match the new Technical Report
- Parser is cleaned up and Specification Java class is beafed up. The spec file name and its directory is now accessible in runtime.
- in a multi-agent specification, inconsistent updates are reported if they are produced by a single agent
- IO Plugin keeps a string rep of the message not the original element.
- TurboASM Plugin logs a warning message if it leaves a sequence as a result of incosistent updates.
Debugging
- Error is reported if more than one rule with the same name is defined

