rubyx/lib/parfait
Torsten Ruger 5346077a72 use the return jump to jump to the return sequence
thus every method only has one exit
should make multi return messages smaller
especially when we have escape analisis
(maybe will help with inlining too)
2018-08-02 17:36:39 +03:00
..
behaviour.rb fix test ripples and minor parfait naming 2018-06-29 21:03:06 +03:00
binary_code.rb reimplement instruction listeners with indexes 2018-06-09 17:41:39 +03:00
block.rb misc 2018-07-30 10:26:47 +03:00
cache_entry.rb remove Risc.resolve_to_index 2018-07-16 19:00:04 +03:00
callable_method.rb use the return jump to jump to the return sequence 2018-08-02 17:36:39 +03:00
callable.rb push the name down into callable 2018-07-30 10:21:43 +03:00
class.rb rename typed_method to callable_method 2018-07-07 09:11:09 +03:00
data_object.rb integer was wrong padded§ length 2018-05-30 14:55:17 +03:00
dictionary.rb switch to 0 based indexing 2018-05-14 11:55:01 +03:00
integer.rb create return address as own class to hold return addresses 2018-05-30 23:49:01 +03:00
list.rb fix list to expand 2018-06-29 20:58:59 +03:00
message.rb store method, not name, in message 2018-07-22 22:29:32 +03:00
named_list.rb misc to_s and small fixes 2018-07-04 08:28:29 +03:00
object.rb use existing constant 2018-05-16 12:55:51 +03:00
page.rb move parfait up one, as per its module structure 2017-01-18 20:09:43 +02:00
README.md polish docs 2018-03-11 16:11:15 +05:30
space.rb some more addresses 2018-07-15 15:13:25 +03:00
type.rb push the name down into callable 2018-07-30 10:21:43 +03:00
vool_method.rb rename typed_method to callable_method 2018-07-07 09:11:09 +03:00
word.rb move adapter stuff around 2018-06-29 14:26:25 +03:00

Parfait: a thin layer

Parfait is the run-time of the object system. To be more precise, it is that part of the run-time needed to boot.

The run-time needs to contain quite a lot of functionality for a dynamic system. And a large part of that functionality must actually be used at compile time too.

We reuse the Parfait code at compile-time, to create the data for the compiled code. To do this the compiler (re) defines the object memory (in parfait_adapter).

A work in progress that started from here : http://ruby-x.org/2014/06/10/more-clarity.html went on here http://ruby-x.org/2014/07/05/layers-vs-passes.html

A step back: the code (program) we compile runs at run - time. And so does parfait. So all we have to do is compile it with the program.

And thus parfait can be used at run-time.

It's too simple: just slips off the mind like a fish into water.

Parfait has a brother, the Builtin module. Builtin contains everything that can not be coded in ruby, but we still need (things like List access).

Vm vs language- core

Parfait is not the language core library. Core library functionality differs between languages and so the language core lib must be on top of parfait.

To make this point clear, i have started using different names for the core classes. Hopefully more sensible ones, ie List instead of Array, Dictionary instead of Hash.

Also Parfait is meant to be as thin as humanly possibly, so extra (nice to have) functionality will be in future modules.