2020-02-07 10:14:20 +01:00
|
|
|
# ToDo
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2020-02-07 10:14:20 +01:00
|
|
|
These are things that could be nice improvements to the current ruby-x.
|
|
|
|
Below is a list for things that are outside the scope of rubyx gem.
|
2014-04-29 16:11:36 +02:00
|
|
|
|
2020-02-07 10:14:20 +01:00
|
|
|
- Better elf support
|
2017-01-01 23:29:20 +01:00
|
|
|
- better elf tests
|
2019-08-24 15:58:14 +02:00
|
|
|
- ruby spec integration
|
2017-01-01 23:29:20 +01:00
|
|
|
- better arm coverage (more instructions, better tests)
|
2015-05-18 09:19:28 +02:00
|
|
|
- utf8 support (string improvements generally)
|
2019-08-24 15:58:14 +02:00
|
|
|
- risc optimisations
|
2020-02-07 10:14:20 +01:00
|
|
|
- register allocation
|
|
|
|
|
|
|
|
## Parfait
|
|
|
|
|
|
|
|
Improving any of the parfait classes is a simple way to get started. Most of the classes
|
|
|
|
in lib/parfait , that have an mri equivalent (like string/array/hash/integer) have a list
|
|
|
|
of methods at the bottom that need implementing (and testing)
|
|
|
|
|
|
|
|
## Github issues
|
|
|
|
|
|
|
|
Some issues already exist, any many more are obvious, just have not been written down.
|
|
|
|
If you wan to start on something, make it an issue first.
|
|
|
|
|
|
|
|
## Concurrency
|
|
|
|
|
|
|
|
Solving concurrency is up for grabs. Any solution is a start, channels ala go are nice and
|
|
|
|
lock free stuff is the ultimate goal.
|
|
|
|
|
|
|
|
## GC
|
|
|
|
|
|
|
|
No attempt has been made to garbage collect. It is not easy, and also interlinked with
|
|
|
|
concurrency, to make it even more fun. My personal thinking is that there are many more
|
|
|
|
pressing things, but if someone want to have a shot, so be it.
|
|
|
|
|
|
|
|
# External (new) gems
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2018-08-14 10:23:19 +02:00
|
|
|
## Platforms
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2017-01-01 23:29:20 +01:00
|
|
|
x86 is up for grabs. I have intentionally started on arm (the most sold cpu) because i do
|
|
|
|
this for fun. And my pi is fun.
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2017-01-01 23:29:20 +01:00
|
|
|
There is a ruby intel assembler called wilson out there. Or then there is Metasm, with
|
|
|
|
good support for many other cpu's (and a lot more code)
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2018-08-14 10:23:19 +02:00
|
|
|
## Compliance
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2018-08-14 10:23:19 +02:00
|
|
|
Is admittedly a little more fun, but also not really my personal goal in the near future.
|
2014-04-27 21:19:32 +02:00
|
|
|
|
|
|
|
If i am really honest about this, i think ruby is a little quirky around the edges and i
|
|
|
|
think a lot of that can/should be done as a compatibility layer. Keeping the core clean (and shiny).
|
|
|
|
|
2020-02-07 10:14:20 +01:00
|
|
|
RubyX follows the microkernel idea: if you can leave it out, do. Most of what makes the
|
|
|
|
current mri should be external gems.
|
|
|
|
|
2018-08-14 10:23:19 +02:00
|
|
|
## Stdlib
|
2014-04-27 21:19:32 +02:00
|
|
|
|
|
|
|
Stdlib is not clean. More like a layer that accumulated over the years.
|
|
|
|
|
2018-08-14 10:23:19 +02:00
|
|
|
Very nice solutions exist for most of the important things.
|
|
|
|
Like celluloid for concurrency. Celluloid-io for
|
2015-06-08 12:30:32 +02:00
|
|
|
good performance io with or without zero-mq. Fiddle looks nice admittedly.
|
2014-04-27 21:19:32 +02:00
|
|
|
|
2020-02-07 10:14:20 +01:00
|
|
|
Stdlib should be implemented as a n external gem.
|
2017-01-01 23:29:20 +01:00
|
|
|
|
2018-08-14 10:23:19 +02:00
|
|
|
|
2020-02-07 10:14:20 +01:00
|
|
|
# Stary sky
|
2018-08-14 10:23:19 +02:00
|
|
|
|
|
|
|
Iterate:
|
|
|
|
|
2019-08-24 15:58:14 +02:00
|
|
|
- more cpus (ie intel)
|
|
|
|
- more systems (ie mac)
|
|
|
|
more syscalls, there are after all some hundreds (most as external gems)
|
|
|
|
- A lot of modern cpu's functionality has to be mapped to ruby and implemented in assembler to be useful
|
|
|
|
- Different sized machines, with different register types ?
|
|
|
|
- Housekeeping (the superset of gc) is abundant
|
|
|
|
- Any amount of time could be spent on a decent digital tree (see judy). Or possibly Dr.Cliffs hash.
|
|
|
|
- Also better string/arrays would be good.
|
|
|
|
- The minor point of threads and hopefully lock free primitives to deal with that.
|
|
|
|
- Other languages, python at least, maybe others
|
2018-08-14 10:23:19 +02:00
|
|
|
|
|
|
|
And generally optimise and work towards that perfect world (we never seem to be able to attain).
|