improve texts

This commit is contained in:
Torsten Rüger 2020-02-07 16:14:20 +07:00
parent b7902e6953
commit 6d950086e7
3 changed files with 57 additions and 12 deletions

View File

@ -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
a copy of this software and associated documentation files (the

View File

@ -101,6 +101,9 @@ they are
([quite readable](https://github.com/ruby-x/rubyx/blob/2f07cc34f3f56c72d05c7d822f40fa6c15fd6a08/lib/risc/builtin/object.rb#L48))
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
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
### 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
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.
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 (c) 2014-8 Torsten Ruger.
Copyright (c) 2014-20 Torsten Ruger.
See LICENSE.txt for further details.

44
ToDo.md
View File

@ -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
(so linking could be skipped). Off course the possibility to link in another library would be nice
- Better elf support
- better elf tests
- more mains tests
- ruby spec integration
- better arm coverage (more instructions, better tests)
- utf8 support (string improvements generally)
- 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
@ -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
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 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
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: