renamed to kide(crystal)
This commit is contained in:
parent
74266bb4a9
commit
5dfabf72f5
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 sapphire-ruby
|
||||
Copyright (c) 2014 kide-ruby
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -1,7 +1,7 @@
|
||||
# sapphire-vm.github.io
|
||||
# kide-vm.github.io
|
||||
|
||||
|
||||
Sapphires webpage is done with github pages: https://help.github.com/categories/20/articles
|
||||
Kides webpage is done with github pages: https://help.github.com/categories/20/articles
|
||||
|
||||
###Contribute
|
||||
|
||||
|
@ -13,9 +13,9 @@ layout: site
|
||||
<h2 class="center">More Detail</h2>
|
||||
<div>
|
||||
<ul class="nav nav-list">
|
||||
<li><a href="/sapphire/layers.html"> Layers of Sapphire </a> </li>
|
||||
<li><a href="/sapphire/memory.html"> Memory </a> </li>
|
||||
<li><a href="/sapphire/optimisations.html"> Optimisation ideas </a> </li>
|
||||
<li><a href="/kide/layers.html"> Layers of Kide </a> </li>
|
||||
<li><a href="/kide/memory.html"> Memory </a> </li>
|
||||
<li><a href="/kide/optimisations.html"> Optimisation ideas </a> </li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
@ -24,7 +24,7 @@
|
||||
<div class="navbar effect navbar-inverse navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a href="https://github.com/sapphire-vm/"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>
|
||||
<a href="https://github.com/kide-vm/"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>
|
||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse" href="#">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
@ -36,7 +36,7 @@
|
||||
<a href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="link3">
|
||||
<a href="/sapphire/layers.html">Sapphire</a>
|
||||
<a href="/kide/layers.html">Kide</a>
|
||||
</li>
|
||||
<li class="link3">
|
||||
<a href="/qemu.html">Virtual Pi</a>
|
||||
|
@ -31,7 +31,7 @@ ruby core/std-lib
|
||||
|
||||
Off course the ruby-core and std libs were designed to do for ruby what libc does for c. Unfortunately they are badly designed and suffer from above brainwash (designed around c calls)
|
||||
|
||||
Since sapphire is pure ruby there is a fair amount of functionality that would be nicer to provide straight in ruby. As gems off course, for everybody to see and fix.
|
||||
Since kide is pure ruby there is a fair amount of functionality that would be nicer to provide straight in ruby. As gems off course, for everybody to see and fix.
|
||||
For example, even if there were to be a printf (which i dislike) , it would be easy to code in ruby.
|
||||
|
||||
What is needed is the underlying write to stdout.
|
||||
@ -39,7 +39,7 @@ What is needed is the underlying write to stdout.
|
||||
Solution
|
||||
--------
|
||||
|
||||
To get sapphire up and running, ie to have a "ruby" executable, there are really very few kernel calls needed. File open, read and stdout write, brk.
|
||||
To get kide up and running, ie to have a "ruby" executable, there are really very few kernel calls needed. File open, read and stdout write, brk.
|
||||
|
||||
So the way this will go is to write syscalls where needed.
|
||||
|
||||
|
@ -25,5 +25,5 @@ assmbler i found a fibonachi in 10 or so instructions.
|
||||
To summarise, function definition and calling (including recursion) works.
|
||||
If and and while structures work and also some operators and now it's easy to add more.
|
||||
|
||||
So we have a Fibonacchi in ruby using a while implementation that can be executed by sapphire and outputs the
|
||||
So we have a Fibonacchi in ruby using a while implementation that can be executed by kide and outputs the
|
||||
correct result. After a total of 7 weeks this is much more than expected!
|
||||
|
@ -24,7 +24,7 @@ And what are these funtions? get_instance_variable or set too. Same for function
|
||||
|
||||
This functionality, ie getting the n'th data in an object, is essential, but c makes such a good point of of it having no place in a public api. So it needs to be implemented in a "private" part and used in a save manner. More on the layers emerging below.
|
||||
|
||||
The Kernel is a module in sapphire that defines functions which return function objects. So the code is generated, instead of parsed. An essential destinction.
|
||||
The Kernel is a module in kide that defines functions which return function objects. So the code is generated, instead of parsed. An essential destinction.
|
||||
|
||||
#### System
|
||||
|
||||
@ -50,7 +50,7 @@ Some few machine functions return Blocks, or append their instructions to blocks
|
||||
|
||||
The Kernel functions return function objects. Kernel functions have the same name as the function they implement, so Kernel::putstring defines a function called putstring. Function objects (Vm::Function) carry entry/exit/body code, receiver/return/argurmt types and a little more.
|
||||
|
||||
The important thing is that these functions are callable from ruby code. Thus they form the glue from the next layer up, which is coded in ruby, to the machine layer. In a way the Kernel "exports" the machine functionality to sapphire.
|
||||
The important thing is that these functions are callable from ruby code. Thus they form the glue from the next layer up, which is coded in ruby, to the machine layer. In a way the Kernel "exports" the machine functionality to kide.
|
||||
|
||||
##### Parfait
|
||||
|
||||
@ -60,22 +60,22 @@ Parfait is heavy on Object/Class/Metaclass functionality, object instance and me
|
||||
|
||||
Stdlib would be the next layer up, implementing the whole of ruby functionality in terms of what Parfait provides.
|
||||
|
||||
The important thing here is that Parfait is written completely in ruby. Meaning it get's parsed by sapphire like any other code, and then transformed into executable form and written.
|
||||
The important thing here is that Parfait is written completely in ruby. Meaning it get's parsed by kide like any other code, and then transformed into executable form and written.
|
||||
|
||||
Any executable that sapphire generates will have Parfait in it. But only the final version of sapphire as a ruby vm, will have the whole stdlib and parser along.
|
||||
Any executable that kide generates will have Parfait in it. But only the final version of kide as a ruby vm, will have the whole stdlib and parser along.
|
||||
|
||||
#### Sapphire
|
||||
#### Kide
|
||||
|
||||
Sapphire uses the Kernel and Machine layers straight when creating code. Off course.
|
||||
The closest equivalent to sapphire would be a compiler and so it is it's job to create code (machine layer objects).
|
||||
Kide uses the Kernel and Machine layers straight when creating code. Off course.
|
||||
The closest equivalent to kide would be a compiler and so it is it's job to create code (machine layer objects).
|
||||
|
||||
But it is my intention to keep that as small as possible. And the good news is it's all ruby :-)
|
||||
|
||||
##### Extensions
|
||||
|
||||
I just want to mention the idea of extensions that is a logical step for a minimal system. Off course they would be gems, but the integesting thing is they (like sapphire) could:
|
||||
I just want to mention the idea of extensions that is a logical step for a minimal system. Off course they would be gems, but the integesting thing is they (like kide) could:
|
||||
|
||||
- use sapphires existing kernel/machine abstraction to define new functionality that is not possible in ruby
|
||||
- use kides existing kernel/machine abstraction to define new functionality that is not possible in ruby
|
||||
- define new machine functionality, adding kernel type api's, to create wholly new, possibly hardware specific functionality
|
||||
|
||||
I am thinking graphic accellaration, GPU usage, vector api's, that kind of thing. In fact i aim to implement the whole floating point functionality as an extensions (as it clearly not essential for OO).
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
layout: site
|
||||
title: Sapphire, where it started
|
||||
title: Kide, where it started
|
||||
---
|
||||
|
||||
<!-- story -->
|
||||
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
layout: main
|
||||
title: Ruby in Ruby
|
||||
sub-title: Sapphire hopes make the the mysterious more accessible, shed light in the farthest (ruby) corners, and above all, <b>empower you</b>
|
||||
sub-title: Kide hopes make the the mysterious more accessible, shed light in the farthest (ruby) corners, and above all, <b>empower you</b>
|
||||
---
|
||||
|
||||
<div class="row vspace20">
|
||||
|
@ -1,12 +1,12 @@
|
||||
---
|
||||
layout: sapphire
|
||||
title: Sapphire, a simple and minimal oo machine
|
||||
layout: kide
|
||||
title: Kide, a simple and minimal oo machine
|
||||
---
|
||||
|
||||
|
||||
<div class="row vspace10">
|
||||
<div class="span12 center">
|
||||
<h3><span>Sapphire layers</span></h3>
|
||||
<h3><span>Kide layers</span></h3>
|
||||
<p>Map pretty much to top level directories.</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -24,7 +24,7 @@ title: Sapphire, a simple and minimal oo machine
|
||||
those classes are derived from Vm versions.
|
||||
<br/>
|
||||
There is an intel directory which contains an expanded version of wilson, but it has yet to be made to fit into
|
||||
the architecture. So for now sapphire produces arm code.
|
||||
the architecture. So for now kide produces arm code.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: sapphire
|
||||
layout: kide
|
||||
title: Memory layout and management
|
||||
---
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: sapphire
|
||||
layout: kide
|
||||
title: Optimisation ideas
|
||||
---
|
||||
|
@ -68,7 +68,7 @@ In an oo system this can be enforced by strict pass-by-value over thread borders
|
||||
The itc (inter thread communication) objects are the only ones that need current thread synchronization techniques.
|
||||
The one mechanism that could cover all needs could be a simple lists.
|
||||
|
||||
### Sapphire
|
||||
### Kide
|
||||
|
||||
The original problem of what a program does during a kernel call could be solved by a very small number of kernel threads.
|
||||
Any kernel call would be listed and "c" threads would pick them up to execute them and return the result.
|
@ -54,7 +54,7 @@ I noticed that quite quickly after i started the project, i was diverging radica
|
||||
is not just from my old ideas, which is nice in itself. A certain freshness and the fact that i am not just going over
|
||||
old ground. No, it's from any old ideas that i am aware of.
|
||||
|
||||
I just noticed another sapphire project with similar goals, but sort of more traditional choices. Ie llvm to generate binaries
|
||||
I just noticed another kide project with similar goals, but sort of more traditional choices. Ie llvm to generate binaries
|
||||
and a more static aproach. And that would have been me as a younger version. Now i go the long way because i know i have
|
||||
all the time i need, and what matters is direction, not speed.
|
||||
|
||||
|
20
what_is.html
20
what_is.html
@ -1,6 +1,6 @@
|
||||
---
|
||||
layout: site
|
||||
title: Sapphire and Ruby, Ruby and Sapphire
|
||||
title: Kide and Ruby, Ruby and Kide
|
||||
---
|
||||
|
||||
<div class="content">
|
||||
@ -13,7 +13,7 @@ title: Sapphire and Ruby, Ruby and Sapphire
|
||||
<h3><span>The three Rubies</span></h3>
|
||||
</div>
|
||||
<div class="span4 center">
|
||||
<h3><span>and Sapphire</span></h3>
|
||||
<h3><span>and Kide</span></h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -32,13 +32,13 @@ title: Sapphire and Ruby, Ruby and Sapphire
|
||||
|
||||
<div class="span4">
|
||||
<h4>Vm</h4>
|
||||
<h5>Sapphire</h5>
|
||||
<blockquote><p> The heart of the sapphire-vm project is sapphire, the virtual machine <br /></p></blockquote>
|
||||
<p>Sapphire is written in 100% ruby</p>
|
||||
<p>Sapphire uses an existing ruby to bootstrap itself</p>
|
||||
<p>Sapphire generates native code, and ( with 1+2) creates a native ruby virtual machine. </p>
|
||||
<p>Sapphire does not interpret, it parses and compiles (just making sure that's clear)</p>
|
||||
<p>Sapphire uses a statically typed value based core with rtti and oo syntax to achieve this
|
||||
<h5>Kide</h5>
|
||||
<blockquote><p> The heart of the kide-vm project is kide, the virtual machine <br /></p></blockquote>
|
||||
<p>Kide is written in 100% ruby</p>
|
||||
<p>Kide uses an existing ruby to bootstrap itself</p>
|
||||
<p>Kide generates native code, and ( with 1+2) creates a native ruby virtual machine. </p>
|
||||
<p>Kide does not interpret, it parses and compiles (just making sure that's clear)</p>
|
||||
<p>Kide uses a statically typed value based core with rtti and oo syntax to achieve this
|
||||
(think c++ with ruby syntax)</p>
|
||||
|
||||
</div>
|
||||
@ -53,7 +53,7 @@ title: Sapphire and Ruby, Ruby and Sapphire
|
||||
Stdlib, as Libc , have grown over the decades to provide overlapping and sometimes inconsistant features, most
|
||||
of which can and should be outside such a standard component.
|
||||
</p>
|
||||
<p> Sapphire considers only that core which can not be suplied though an external gem, this is called
|
||||
<p> Kide considers only that core which can not be suplied though an external gem, this is called
|
||||
Parfait. It only provides Array and String and an ability to access
|
||||
the operating system, in 100% ruby.</p>
|
||||
<p>Full ruby stdlib compliance is not an initial project goal, but may be achieved through external libraries</p>
|
||||
|
Loading…
x
Reference in New Issue
Block a user