rubyx/lib/parfait
Torsten Rüger 8ed013c2b9 Change Locals in calling convention
Just like the args, locals are now inlined into the Message.
Message is off course bigger, but as they are created at compile time, that hardly matters
Some programs did get somewhat smaller, especially with both changes, but not super much
2019-08-23 10:23:01 +03:00
..
behaviour.rb Get a basic MetaClass going 2019-02-16 23:24:16 +02:00
binary_code.rb increase binary_code size to 32 2019-08-22 12:26:40 +03:00
block.rb Copy risc compiler stuff to mom 2019-08-06 18:33:27 +03:00
cache_entry.rb make all instances attr read writers 2018-08-11 19:15:34 +03:00
callable_method.rb make all instances attr read writers 2018-08-11 19:15:34 +03:00
callable.rb still some names that needed changing 2018-08-12 14:48:20 +03:00
class.rb Get a basic MetaClass going 2019-02-16 23:24:16 +02:00
data_object.rb Renaming Vool exppressions rightly 2019-08-19 11:33:12 +03:00
dictionary.rb make all instances attr read writers 2018-08-11 19:15:34 +03:00
factory.rb small refactor 2019-08-01 09:20:08 +03:00
integer.rb increase binary_code size to 32 2019-08-22 12:26:40 +03:00
list.rb Remove Padded module 2019-08-17 21:07:07 +03:00
message.rb Change Locals in calling convention 2019-08-23 10:23:01 +03:00
meta_class.rb Using MetaClass to compile class methods into 2019-02-17 14:37:50 +02:00
named_list.rb chaning calling convention not to add frame/arg types 2018-08-12 14:47:05 +03:00
object.rb Fixing tests for implicit return 2019-08-17 23:29:42 +03:00
README.md litte bit of docs 2018-08-24 18:49:44 +03:00
space.rb Change Locals in calling convention 2019-08-23 10:23:01 +03:00
type.rb Copy risc compiler stuff to mom 2019-08-06 18:33:27 +03:00
vool_method.rb Renaming Vool exppressions rightly 2019-08-19 11:33:12 +03:00
word.rb Remove Padded module 2019-08-17 21:07:07 +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/blog/more-clarity went on here http://ruby-x.org/blog/layers-vs-passes.html and is now documented here http://ruby-x.org/rubyx/parfait.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.