diff --git a/LICENSE.txt b/LICENSE.txt index 5aea6015..734e59a2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -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 diff --git a/README.md b/README.md index 6c75c1e0..26d3acde 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/ToDo.md b/ToDo.md index 8c3a8ccd..97dbb993 100644 --- a/ToDo.md +++ b/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 -(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: