This is the roadmap for releasing a version 0.01 release of Saffire.
These are all needed the core components for Saffire.
- Parser / Lexer [completed]
- The parser/lexer part (yacc & bison) should be able to parse Saffire source code
- AST [completed]
- The Abstract Tree Syntax (AST) generator should be able to generate an AST tree from the parsed data.
- Annotations
- Saffire should support annotations out of the box. How do we return them so we can use them in code. What annotations are there, and make sure we can parse them.
- Object System
- The object system should not differentiate between operator methods, comparison methods and normal methods.
- Garbage collection
- No garbage collection is available for this release.
- Memory manager
- No dedicated memory manager is available for this release.
- Iterators
- Iterators should be defined and made functional.
- Increment/decrements - inplace operators
- i++ and ++i should work as expected. Also, += etc
- Traceback
- Bytecode should have line numbers stored and tracebacks should be available during exceptions and from the saffire.traceback() method.
- Exceptions [completed]
- Exceptions should be defined properly, with a logical hierarchy, like: exception -> ioException -> fileException -> fileNotFoundException etc.
- Varargs [completed]
- Variable arguments should be functional.
- Generators
- Generators will not be available in this release, but the "yield" keyword is reserved.
- CLI
- The command line version of Saffire should be functional.
- Lint check
- Lint checker should be functional.
- FastCGI
- FastCGI version of Saffire should be functional.
- saffire
- The saffire module is the most generic module that holds all information about the execution of saffire. The interface should be defined and implemented
- io
- The IO module is a generic module for dealing with IO. For now, it holds print and printf() functionality, which should be mapped to fprintf(stdout,).
- files and streams
- There should be generic way to deal with files and all kind of streams. writing to stdout:// or console:// should do this. reading from http:// should read from an url, while log:// might write to a custom stream that might do a syslog of the data (for instance). This context interface should be defined and implemented.
- http
- A http module for dealing with fastCGI should be designed and implemented.
- ansicolor
- A simple module/class that defines ansi colors
- unittests
- More and better unittests for the different components should be written.
- Specs
- The specifications at spec.saffire-lang.org should be up-to-date with the current implementation.
- GCOV
- Every update to the main branch should trigger a gcov at gcov.saffire-lang.org.
- Wiki
- The wiki pages should be updated.
- Bugtracker
- A bugtracker (preferably jira - a request for opensource license have been made) should be up and running so issues and bugs could be documented.
- 5 minute tutorial system
- A simple tutorial system should be available to users so
- Blogs on the site
- The saffire-lang.org website should have a simple blog-system (maybe jekyll might be enough) so we can add news quickly.
- SaffireConnect
- A simple saffire-connect system, with badges and stuff in order to "gamificate" the language. Badges are earned through all kind of stuff (attending meetings, contributions, blogposts etc)
- Vagrant development setup
- Check if the vagrant setup is still functional. Fix if needed.