- Incremental Proof of Concept. Transition from a base spike/PoC (version 0.0.1) to usable gem (version 0.1.0).
- Usable versions. Transition from minimally usable gem (version 0.1.0) to stable API release (version 1.0.0)
PoC Incremental Versions
Version 0.0.8: lambdas (already released)
- Implementation of DAG stack including GC mark of local variables residing on it
- lambda support
- refactor of break implementation
- proc support using the same functionality as for lambda
Version 0.0.11: for, retry, redo
- refactor of non-local jumps to use ruby API
- trivial implementation of for
- implementation of retry and redo as non-local retro-jumps (like the implementation of loop/while)
Version 0.0.13: Methods with variable number of arguments
Version 0.0.14: Support for method replacement
Version 0.0.15: continuation objects
Etc...
Version 0.1.0: First usable release
- Any ruby code executable by MRI can be executed by fastruby
Usable Versions (Following semantic versioning)
Zero used as mayor version number is used when API is changed every day without backward compatibility (despite the fact that will be backward compatibility when possible). Also, on 0.X.X versions the API is completely undefined.
Bugs and spec un-compliance of 0.1.0 release will be fixed on subsequent stabilization releases (0.1.1, 0.1.2, etc...)
Version 0.1.0: Execution of Ruby
Features:
- Any executable code in ruby is executable via fastruby and gives the same results
- Interoperation between ruby and fastruby is granted
Version 0.2.0: Fast execution of ruby, internal optimizations
Features
- All internal optimizations documented up to 0.1.0 release
- Linear stack when possible using nonlambda qualifier
- Method dispatcher cache (to speedup calls from ruby)
- Optimization of C frames to make ruby return using C return when possible (useful on small methods)
- Linear stack when possible using nonlambda qualifier
- C extension points
- API to define methods in C, by class, method name and signature allowing replacement of ruby standard lib implementation in the future.
Version 0.4.0: Fast execution of ruby, C extension API 2
- C extension points
- Macro methods (keeping dynamism). Examples:
- Fixnum#+(x:Fixnum) => INT2FIX(FIX2INT(self)+FIX2INT( x) )
- String#[](x:Fixnum) => rb_str_new2(RSTRING(self)->ptr[FIX2INT(x)],1)
- String#[]=(x:Fixnum,y:Fixnum) =>
RSTRING(self)->ptr[FIX2INT(x)]=FIX2INT(y)
- Macro methods (keeping dynamism). Examples:
Version 0.5.0: Faster standard lib
- Ruby standard lib re-implemented in a separated gem optimized for fastruby
- Fastruby works with and without optimized stdlib
No hay comentarios:
Publicar un comentario