Skip to content

Commit

Permalink
Update TODO w/ more focused goals
Browse files Browse the repository at this point in the history
  • Loading branch information
macournoyer committed Feb 26, 2009
1 parent 6f147ee commit e34e30e
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 34 deletions.
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -44,7 +44,7 @@ test: tinyrb

sloc: clean
@cp vm/scanner.rl vm/scanner.rl.c
@sloccount vm
@sloccount vm lib
@rm vm/scanner.rl.c

size: clean
Expand Down
13 changes: 13 additions & 0 deletions README
Expand Up @@ -28,6 +28,19 @@ Compile tinyrb:
make test # optional
./tinyrb -h

== What won't be in tinyrb
* alias keyword (see alias_method)
* undef keyword (see undefine_method)
* Alternate string delimiters (%q, %Q, etc.)
* heredoc strings
* Parallel assignment (a, b = 1, 2)
* :: as . (Class::new)
* Character code literal (?c)
* protected, private, public (yes everything is public, mind you)
* ObjectSpace
* Regexp literal (not sure about this one yet)
* ... other to come for sure.

== Credits
Inspired by:
lua, http://www.lua.org
Expand Down
51 changes: 18 additions & 33 deletions TODO
@@ -1,52 +1,37 @@
== Soon
[x] Implement String
[x] Implement Object
[x] Implement Class
[x] Implement Fixnum
[x] Make parser output AST
[x] Implement if, unless
[x] Implement simple method argument passing
[x] Implement while, until
[x] Include GC (Boehm)
[x] Monomorphic method cache (using CallSite)
[x] Implement basic method definition
[x] Implement GET/SETCONST
[x] Implement basic class definition
[x] Pass args to defined methods
[x] Bootstrap all class correctly (nil,true,false too)
[x] Fix CallSite error in recursive calls
[x] Allow reopening classes
[x] Implement Array
[x] Implement Hash
[x] Implement Module
[x] Implement yield
[x] Implement some corelib stuff in Ruby (under /lib)
[x] Implement splat operator
@Next
[ ] Range
[ ] Array splat
[ ] Implement IO
[ ] Implement File
[ ] Implement metaclass
[ ] def <object>.some_method
[ ] Implement Dir
[ ] Allow {...} for block
[ ] Implement Proc
[ ] require
[ ] being...rescue
[ ] def...rescue
[ ] Fix operator precedence, add () and unary -
[x] Add support for escape chars in strings, (\n, \r, etc.)
[ ] Implement exceptions
[ ] Implement metaclass
[ ] Implement super
[ ] super(...)
[ ] return w/ args
*** See TODO in code too!

== Later
[ ] FFI
[ ] Implement IO and File
@Later
[ ] FFI or dl
[ ] Compile to file
[ ] Embed bytecode of /lib stuff inside executable
[ ] puts nil # => nil in MRI
[x] Inline some methods (+,<,>,==) as VM instructions, eg.: FIXNUM_ADD, STRING_CONCAT
[ ] Cache constant lookup
[ ] Fix Hash to use key.hash (see TODO in hash.c)
[ ] Reimplement Array, Hash using Tuple like Rubinius
[ ] Peephole optimization (Remove useless register allocations)
[ ] Implement case...when
[ ] Implement Float, Bignum
[ ] Run RubySpecs
[ ] Sandbox
[ ] Get it to build w/ -ansi gcc option (might need to get rid of khash.h)

== Oh Yeah That'll be Cool!
@Someday
[ ] Rubygem support w/ http://github.com/fabien/minigems
[ ] Replace GC w/ smaller, simpler & embedable one (Io's maybe?)
[ ] REPL
Expand Down

0 comments on commit e34e30e

Please sign in to comment.