lunes, 19 de septiembre de 2011

Fastruby roadmap up to 0.5.0

Fastruby development (up to 1.0.0 release) will be divided into two main phases:
  • 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)
This is a rough roadmap and might change in the future if new ideas or optimizations are discovered

PoC Incremental Versions


Version 0.0.8: lambdas (already released)
Version 0.0.9: proc
Version 0.0.10: Gem packaging fixes

Version 0.0.11: for, retry, redo
Version 0.0.12: Full exception support

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
Version 0.3.0: Fast execution of ruby, C extension API

  • 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:
      1. Fixnum#+(x:Fixnum) => INT2FIX(FIX2INT(self)+FIX2INT( x) )
      2. String#[](x:Fixnum) => rb_str_new2(RSTRING(self)->ptr[FIX2INT(x)],1)
      3. String#[]=(x:Fixnum,y:Fixnum) =>
        RSTRING(self)->ptr[FIX2INT(x)]=FIX2INT(y)

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