improve texts
This commit is contained in:
parent
b7902e6953
commit
6d950086e7
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-8 Torsten Ruger
|
Copyright (c) 2014-20 Torsten Ruger
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
a copy of this software and associated documentation files (the
|
a copy of this software and associated documentation files (the
|
||||||
|
23
README.md
23
README.md
@ -101,6 +101,9 @@ they are
|
|||||||
([quite readable](https://github.com/ruby-x/rubyx/blob/2f07cc34f3f56c72d05c7d822f40fa6c15fd6a08/lib/risc/builtin/object.rb#L48))
|
([quite readable](https://github.com/ruby-x/rubyx/blob/2f07cc34f3f56c72d05c7d822f40fa6c15fd6a08/lib/risc/builtin/object.rb#L48))
|
||||||
through the ruby magic.
|
through the ruby magic.
|
||||||
|
|
||||||
|
I am in the process of converting builtin to a simple language on top of SlotMachine,
|
||||||
|
which i'm calling SlotLanguage. But this is wip.
|
||||||
|
|
||||||
## Types and classes, static vs dynamic
|
## Types and classes, static vs dynamic
|
||||||
|
|
||||||
Classes in dynamic languages are open. They can change at any time, meaning you can
|
Classes in dynamic languages are open. They can change at any time, meaning you can
|
||||||
@ -129,6 +132,20 @@ by SlotMachine and Risc only.
|
|||||||
|
|
||||||
## Other
|
## Other
|
||||||
|
|
||||||
|
### CLI
|
||||||
|
|
||||||
|
There is a basic command line interface in *bin/rubyxc* . It can be used to
|
||||||
|
- *compile* ie create an executable form a ruby source file
|
||||||
|
- *interpret* compile the given source file to risc, and run the interpreter on it
|
||||||
|
- *execute* like compile, but runs the executable (needs qemu configured)
|
||||||
|
|
||||||
|
The easiest way to execute a binary is by using qemu on your machine. Qemu comes with
|
||||||
|
commands that have a linux baked in, qemu-arm in case of arm. So running
|
||||||
|
*./bin/rubyxc hello.rb* will produce a *hello* arm executable, that can be run on any
|
||||||
|
machine where qemu is installed with *qemu-arm ./hello* .
|
||||||
|
|
||||||
|
On my fedora, the package to install is "qemu", quite possible on mac with homebew, too.
|
||||||
|
|
||||||
### Interpreter
|
### Interpreter
|
||||||
|
|
||||||
After doing some debugging on the generated binaries i opted to write an interpreter for the
|
After doing some debugging on the generated binaries i opted to write an interpreter for the
|
||||||
@ -169,8 +186,12 @@ in vain. If you're interested in an existing issues, just comment on it.
|
|||||||
|
|
||||||
Fork and create a branch before sending pulls.
|
Fork and create a branch before sending pulls.
|
||||||
|
|
||||||
|
PS: I have started formulating a Democratic Open Source process, but it is still early days.
|
||||||
|
Still, if you want to help, reach out. I am hoping to initiate an alternative to the
|
||||||
|
benevolent dictator model that is currently the norm.
|
||||||
|
|
||||||
## Copyright
|
## Copyright
|
||||||
|
|
||||||
Copyright (c) 2014-8 Torsten Ruger.
|
Copyright (c) 2014-20 Torsten Ruger.
|
||||||
|
|
||||||
See LICENSE.txt for further details.
|
See LICENSE.txt for further details.
|
||||||
|
44
ToDo.md
44
ToDo.md
@ -1,16 +1,39 @@
|
|||||||
ToDo
|
# ToDo
|
||||||
=====
|
|
||||||
|
|
||||||
Some things that would be nice . .
|
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.
|
||||||
|
|
||||||
- Better elf support. I think it should be relatively easy to produce an executable binary
|
- Better elf support
|
||||||
(so linking could be skipped). Off course the possibility to link in another library would be nice
|
|
||||||
- better elf tests
|
- better elf tests
|
||||||
- more mains tests
|
|
||||||
- ruby spec integration
|
- ruby spec integration
|
||||||
- better arm coverage (more instructions, better tests)
|
- better arm coverage (more instructions, better tests)
|
||||||
- utf8 support (string improvements generally)
|
- utf8 support (string improvements generally)
|
||||||
- risc optimisations
|
- risc optimisations
|
||||||
|
- 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
|
||||||
|
|
||||||
## Platforms
|
## Platforms
|
||||||
|
|
||||||
@ -27,6 +50,9 @@ Is admittedly a little more fun, but also not really my personal goal in the nea
|
|||||||
If i am really honest about this, i think ruby is a little quirky around the edges and i
|
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).
|
think a lot of that can/should be done as a compatibility layer. Keeping the core clean (and shiny).
|
||||||
|
|
||||||
|
RubyX follows the microkernel idea: if you can leave it out, do. Most of what makes the
|
||||||
|
current mri should be external gems.
|
||||||
|
|
||||||
## Stdlib
|
## Stdlib
|
||||||
|
|
||||||
Stdlib is not clean. More like a layer that accumulated over the years.
|
Stdlib is not clean. More like a layer that accumulated over the years.
|
||||||
@ -35,12 +61,10 @@ Very nice solutions exist for most of the important things.
|
|||||||
Like celluloid for concurrency. Celluloid-io for
|
Like celluloid for concurrency. Celluloid-io for
|
||||||
good performance io with or without zero-mq. Fiddle looks nice admittedly.
|
good performance io with or without zero-mq. Fiddle looks nice admittedly.
|
||||||
|
|
||||||
## Concurrency
|
Stdlib should be implemented as a n external gem.
|
||||||
|
|
||||||
Solving concurrency is up for grabs. Any solution is a start, channels ala go are nice and
|
|
||||||
lock free stuff is the ultimate goal.
|
|
||||||
|
|
||||||
## Stary sky
|
# Stary sky
|
||||||
|
|
||||||
Iterate:
|
Iterate:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user