Fixed allSelectorsSent because a simpler implementation was overriding the original.
[cslatevm.git] / TODO.org
blob6db5de8e6c59c0f726f00020ac1686a34d41ca3d
1 * Syntax
2 ** DONE Bootstrap in :=.                                          :macro:global:
3 ** DONE Allow | as a binary selector character.
4 ** DONE Implement "&foo" in message sends as "&foo: True".
5 ** DONE Core use of ::= binding.                                  :macro:global:
6 ** DONE Implement creation of local variables for assignments.
7 ** DONE Implement generalized word-quoting. foo{any text...} http://atomo-lang.org/docs/macros.html#section_macro-quotes :lexer:
8 *** DONE Implement bytes{1 2 3 4} to create literal ByteArrays.
9 *** DONE Implement words{foo bar baz} to tokenize a list of words.
10 *** DONE Implement p{/usr/lib/foo} to create literal Path objects.
11 *** DONE Implement q{} to create ##() literal/read-time arrays.
12 *** DONE Implement glob{foo?.*.c} to create Glob objects.
13 *** DONE Implement r{[a-z](.*)[ ]} to create regular expression matchers.
14 *** TODO Implement math{3 + 4 * 5} to apply the precedence library's `math to it.
15 *** TODO Implement comment{} or why{} or doc{} for comments and reclaim double-quotes.
16 ** TODO Implement method definition as "signature := body".
17    Requires method header rewrite at macro-expansion time.
18 ** STARTED Implement "%" as a binary selector lexeme unless used as Eventually prefix.
19 ** TODO Implement mutator selector pattern of "foo:=" and sunset "foo:". :global:
20 ** TODO Externalize `setTo: rules into data structures.
21 ** STARTED Implement Ruby === for includes:/select:/case-statement usage. :vm:support:
22    With different assymetrical selector, e.g. isCaseOf:.
23    Root -> \=. Collection -> includes:, Block -> applyWith:. Regex -> matches:.
24 ** TODO Implement \=:= as pattern-matching binding.                      :macro:
25    Requires generation of ::= statements.
26    Requires destructuring of Patterns/Partials
27 ** TODO Implement initial setting of a local to a literal as a static initialization.
28    Requires some VM support to instantiate the context with the values.
29 ** TODO Implement | as a special binary macro for chaining expressions and shell pipelines.
30 ** TODO Change block header syntax to [|( ... ) body ]. :lexer:global:incompatible:
31 ** TODO Swap {} with []                              :lexer:global:incompatible:
32 * Libraries
33 ** TODO Finish XTreams refactoring of base libraries.
34 ** TODO Mini-language for unit testing.
35 ** TODO Add DoubleFloat support to FFI.
36 * System Structure
37 ** TODO Implement file loading as parse-compile-then-execute and use/install the result object.
38 ** TODO Re-implement the bootstrap assembly in terms of these compiled file-methods.
39 ** TODO Implement an Eco-system style repository of modules that can be loaded per-caller.
40 ** TODO Rename files to mirror module name (very closely if not identically).
41 * Documentation
42 ** TODO Anatomy-style documentation tool based on the parser.
43 ** TODO Literate-style documentation facility based on the doctool.
44 * Promotion
45 ** Implement online tutorials using doc tool
46 ** Fill out rosetta code http://www.rosettacode.org/wiki/Category:Slate
47 ** Install Packages for various OS/distributions (pkg/)
48 * Quality
49 ** Unit tests
50 ** Fix bugs on http://code.google.com/p/slate-language/issues/list
51 ** NOTE ExtensibleSequence's removeFirst/removeFirst:/removeLast/removeLast: are just open-coded versions of first/first:/last/last: where the firstIndex or lastIndex are updated.
52 ** TODO Fix File's size method (...).