NAUSEA - Tasks: task #4846, Implement "pseudo...
You are not allowed to post comments on this tracker with your current authentication level.
task #4846: Implement "pseudo S-expression"
Submitter: | Luca Saiu <positrone> | ||
Submitted: | Tue 18 Oct 2005 09:24:06 PM UTC | ||
Should Start On: | Mon 17 Oct 2005 10:00:00 PM UTC | Should be Finished on: | Mon 17 Oct 2005 10:00:00 PM UTC |
Category: | General Infrastructure | Priority: | 1 - Later |
Status: | None | Assigned to: | None |
Percent Complete: | 0% | Open/Closed: | Open |
Difficulty: | Medium |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
CC list is empty
Follows 1 latest change.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2005-10-19 | positrone | Difficulty | None | Medium |
Powered by Savane 3.13-3230.
Corresponding source code
A pseudo S-expression will be a data structure similar to an S-expression, but not garbage collected and (if possible) faster. I've not decided yet whether to use a simple "copy on-set-c?dr" policy or a reference counter. I'll have to benchmark a bit.
Pseudo S-expressions will support fixnums, symbols, booleans, floats, strings, conses and the eol.
Pseudo S-expression will support read and print, but not eval.
The idea is avoiding garbage collections for all the structures which don't need it, for example for messages to be sent over sockets. This should essentially eliminate all GCs for interactive clients after models are loaded, thus reducing pauses and increasing locality.
A separate namespace such as "pseudoscheme" should be used to avoid confusion. The interface will be a subset of the interface in the "scheme" namespace: in particular an SExpression class will be provided.
I've not decided yet whether to provide conversion operators from and to pseusoscheme SExpressions. They would make code more compact, but could they also introduce errors? By now I think not, but the issue must be pondered.