had to change the name

This commit is contained in:
Torsten Ruger 2014-07-17 01:03:17 +03:00
parent 6ef7ef0572
commit 74266bb4a9
15 changed files with 40 additions and 40 deletions

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014 crystal-ruby
Copyright (c) 2014 sapphire-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

View File

@ -1,7 +1,7 @@
# crystal-vm.github.io
# sapphire-vm.github.io
Crystals webpage is done with github pages: https://help.github.com/categories/20/articles
Sapphires webpage is done with github pages: https://help.github.com/categories/20/articles
###Contribute

View File

@ -13,9 +13,9 @@ layout: site
<h2 class="center">More Detail</h2>
<div>
<ul class="nav nav-list">
<li><a href="/crystal/layers.html"> Layers of Crystal </a> </li>
<li><a href="/crystal/memory.html"> Memory </a> </li>
<li><a href="/crystal/optimisations.html"> Optimisation ideas </a> </li>
<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>
</ul>
</div>
</div>

View File

@ -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/crystal-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/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 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="/crystal/layers.html">Crystal</a>
<a href="/sapphire/layers.html">Sapphire</a>
</li>
<li class="link3">
<a href="/qemu.html">Virtual Pi</a>

View File

@ -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 crystal 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 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.
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 crystal 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 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.
So the way this will go is to write syscalls where needed.

View File

@ -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 crystal and outputs the
So we have a Fibonacchi in ruby using a while implementation that can be executed by sapphire and outputs the
correct result. After a total of 7 weeks this is much more than expected!

View File

@ -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 crystal that defines functions which return function objects. So the code is generated, instead of parsed. An essential destinction.
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.
#### 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 crystal.
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.
##### 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 crystal 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 sapphire like any other code, and then transformed into executable form and written.
Any executable that crystal generates will have Parfait in it. But only the final version of crystal as a ruby vm, will have the whole stdlib and parser along.
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.
#### Crystal
#### Sapphire
Crystal uses the Kernel and Machine layers straight when creating code. Off course.
The closest equivalent to crystal would be a compiler and so it is it's job to create code (machine layer objects).
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).
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 crystal) 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 sapphire) could:
- use crystals existing kernel/machine abstraction to define new functionality that is not possible in ruby
- use sapphires 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).

View File

@ -1,6 +1,6 @@
---
layout: site
title: Crystal, where it started
title: Sapphire, where it started
---
<!-- story -->

View File

@ -1,7 +1,7 @@
---
layout: main
title: Ruby in Ruby
sub-title: Crystal hopes make the the mysterious more accessible, shed light in the farthest (ruby) corners, and above all, <b>empower you</b>
sub-title: Sapphire 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">

View File

@ -1,12 +1,12 @@
---
layout: crystal
title: Crystal, a simple and minimal oo machine
layout: sapphire
title: Sapphire, a simple and minimal oo machine
---
<div class="row vspace10">
<div class="span12 center">
<h3><span>Crystal layers</span></h3>
<h3><span>Sapphire layers</span></h3>
<p>Map pretty much to top level directories.</p>
</div>
</div>
@ -24,7 +24,7 @@ title: Crystal, 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 crystal produces arm code.
the architecture. So for now sapphire produces arm code.
</p>
</div>
</div>

View File

@ -1,5 +1,5 @@
---
layout: crystal
layout: sapphire
title: Memory layout and management
---

View File

@ -1,5 +1,5 @@
---
layout: crystal
layout: sapphire
title: Optimisation ideas
---

View File

@ -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.
### Crystal
### Sapphire
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.

View File

@ -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 crystal project with similar goals, but sort of more traditional choices. Ie llvm to generate binaries
I just noticed another sapphire 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.

View File

@ -1,6 +1,6 @@
---
layout: site
title: Crystal and Ruby, Ruby and Crystal
title: Sapphire and Ruby, Ruby and Sapphire
---
<div class="content">
@ -13,7 +13,7 @@ title: Crystal and Ruby, Ruby and Crystal
<h3><span>The three Rubies</span></h3>
</div>
<div class="span4 center">
<h3><span>and Crystal</span></h3>
<h3><span>and Sapphire</span></h3>
</div>
</div>
@ -32,13 +32,13 @@ title: Crystal and Ruby, Ruby and Crystal
<div class="span4">
<h4>Vm</h4>
<h5>Crystal</h5>
<blockquote><p> The heart of the crystal-vm project is crystal, the virtual machine <br /></p></blockquote>
<p>Crystal is written in 100% ruby</p>
<p>Crystal uses an existing ruby to bootstrap itself</p>
<p>Crystal generates native code, and ( with 1+2) creates a native ruby virtual machine. </p>
<p>Crystal does not interpret, it parses and compiles (just making sure that's clear)</p>
<p>Crystal uses a statically typed value based core with rtti and oo syntax to achieve this
<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
(think c++ with ruby syntax)</p>
</div>
@ -53,7 +53,7 @@ title: Crystal and Ruby, Ruby and Crystal
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> Crystal considers only that core which can not be suplied though an external gem, this is called
<p> Sapphire 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>