rubyx/lib/parfait
Torsten Ruger 1a236aa50e make binary code indexed (not derive from word)
still some work to be done there, as we should really have a byte buffer
2015-10-26 12:24:47 +02:00
..
binary_code.rb make binary code indexed (not derive from word) 2015-10-26 12:24:47 +02:00
class.rb fixing indexed stuff 2015-10-26 12:22:32 +02:00
dictionary.rb fixed simple layout offset bug in layout 2015-10-13 14:46:07 +03:00
frame.rb rename phisol to soml 2015-10-23 14:22:55 +03:00
indexed.rb fixing indexed stuff 2015-10-26 12:22:32 +02:00
integer.rb moved the whole parfait into its namespace/module 2015-05-11 18:55:49 +03:00
layout.rb fixing indexed stuff 2015-10-26 12:22:32 +02:00
list.rb move methods back to the module 2015-10-25 19:32:36 +02:00
message.rb fix offsets, debugging revealed them to be 1 off 2015-10-22 11:48:03 +03:00
meta_class.rb wit metaclass and class functions 2015-10-25 15:40:12 +02:00
method.rb store three versions of the code in method 2015-10-23 14:41:47 +03:00
object.rb layout moves to 0 2015-10-25 20:44:30 +02:00
page.rb moved the whole parfait into its namespace/module 2015-05-11 18:55:49 +03:00
README.md rename phisol to soml 2015-10-23 14:22:55 +03:00
space.rb several larger changes came together, bit of cleaning too 2015-10-06 00:27:13 +03:00
value.rb more dead code goes 2015-07-21 20:24:31 +03:00
variable.rb fold last of the virtual into register 2015-10-22 18:16:29 +03:00
word.rb also giving word it's length 2015-10-26 12:23:52 +02:00

Notice of change

The stuff below, like the whole of Parfait, was written before soml. Ie before there was a seperate language to compile a higher language to. Soml is not so dynamic, could do without much of the ObjectSpace that is the core of Parfait.

So things will change. How will become clear when soml is finished.

Parfait: a thin layer

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

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 vm. To do this the vm (re) defines the object memory (in parfait_adapter).

To do the actual compiling we parse and compile the parfait code and inline it to appropriate places.

A work in progress that started from here : http://salama.github.io/2014/06/10/more-clarity.html went on here http://salama.github.io/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 the vm 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.