rubyx/ToDo.md

59 lines
2.1 KiB
Markdown
Raw Normal View History

2014-04-27 21:19:32 +02:00
ToDo
=====
2017-01-01 23:29:20 +01:00
Some things that would be nice . .
2014-04-29 16:11:36 +02:00
2017-01-01 23:29:20 +01:00
- Better elf support. I think it should be relatively easy to produce an executable binary
(so linking could be skipped). Off course the possibility to link in another library would be nice
- better elf tests
2019-08-24 15:58:14 +02:00
- more mains tests
- 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
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).
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
2018-08-14 10:23:19 +02:00
## Concurrency
2017-01-01 23:29:20 +01:00
Solving concurrency is up for grabs. Any solution is a start, channels ala go are nice and
lock free stuff is the ultimate goal.
2018-08-14 10:23:19 +02:00
## Stary sky
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).