Skip to content

Instantly share code, notes, and snippets.

@jaytaph
Last active December 12, 2015 10:49
Show Gist options
  • Save jaytaph/4761543 to your computer and use it in GitHub Desktop.
Save jaytaph/4761543 to your computer and use it in GitHub Desktop.
roadmap - saffire v0.01

Saffire v0.01 Roadmap

This is the roadmap for releasing a version 0.01 release of Saffire.

Generic

These are all needed the core components for Saffire.

Core functionality

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.

Saffire language

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 Module Library

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

unittests
More and better unittests for the different components should be written.

Other non-C issues

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment