-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathindex.html
61 lines (58 loc) · 3.97 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!doctype html>
<html lang="en">
<head>
<title>Natalie, a Ruby Implementation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/typesafe.css">
<style>
em.highlight { font-style: normal; background-color: #ffc; }
h2 { border-bottom: 3px double #999; }
</style>
<script src="plotly-2.32.0.min.js" charset="utf-8"></script>
</head>
<body>
<h1><img src="icon.svg" alt="logo for Natalie" style="vertical-align: middle; width: 64px"> Natalie, a Ruby Implementation</h1>
<p>Natalie is a work-in-progress <em class="highlight">Ruby implementation</em>, compiled to C++, <span style="white-space:nowrap">by
<a href="https://timmorgan.dev">Tim Morgan</a></span> and contributors.</p>
<ul>
<li>Follow development: <a href="https://github.com/natalie-lang/natalie">GitHub</a></li>
<li>Watch hacking sessions: <a href="https://www.youtube.com/playlist?list=PLWUx_XkUoGTq-nkbhnk6PN4m109ISo5BX">YouTube</a></li>
<li>Chat with us: <a href="https://discord.gg/hnHp2tdQyn">Discord Server</a></li>
</ul>
<h2>What can Natalie do?</h2>
<p><img src="demo.gif" alt="small demo"></p>
<p>Natalie can already run quite a few small scripts, which you can find in the <a href="https://github.com/natalie-lang/natalie/tree/master/examples">examples directory</a>:
a small program that brute forces arithmetic for a math game, the ubiquitous recursive Fibonacci script, a GTK hello world example, and so on.</p>
<p>Natalie hosts this very website, with <a href="https://github.com/natalie-lang/natalie-lang.org/blob/master/server.rb">this little program</a>,
compiled to a binary and running in a Docker container. That's neat!</p>
<p>The biggest chunk of idiomatic Ruby code that Natalie has compiled is the Natalie <em class="highlight">compiler itself</em> (which is written in Ruby),
so that's pretty cool! If you've ever wanted to play with a self-hosted compiler, Natalie might be a fun project to get your feet wet!</p>
<h2>Helping Out</h2>
<p><em class="highlight">You can help</em> with the development of Natalie! There are <a href="https://github.com/natalie-lang/natalie/issues">many issues</a>
documented on the GitHub project if you want some direction. Or better yet, you may want to try Natalie on a script of your own
and see what is broken. Then fix it! :-)</p>
<div id="is-natalie-ruby-yet-stats-panel">
<h2>Is Natalie Ruby yet?</h2>
<div id="chart" style="height:400px;margin:0 0 -20px -50px"></div>
<p>
Based on the specs from <a href="https://github.com/ruby/spec/">github.com/ruby/spec</a> and as of today we have:
</p>
<div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;">
<span style="color: #00aa00;font-weight: 900;font-size: 1.2em;" id="successful-tests-counter">0</span> tests passing<br/>
<span style="color: #aa5500;font-weight: 900;font-size: 1.2em;" id="failing-tests-counter">0</span> tests failing<br/>
<span style="color: #aa0000;font-weight: 900;font-size: 1.2em;" id="erroring-tests-counter">0</span> tests erroring<br/>
<span style="color: #3d0000;font-weight: 900;font-size: 1.2em;" id="not-compiling-tests-counter">0</span> test files not compiling*<br/>
<span style="color: #830a46;font-weight: 900;font-size: 1.2em;" id="crashing-tests-counter">0</span> test files crashing*<br/>
<span style="color: #888888;font-weight: 900;font-size: 1.2em;" id="timeout-tests-counter">0</span> test files timing out*<br/>
</div>
<p>
*Test files represent many tests, so the number of individual tests we're missing for these groups is much larger. :-(
</p>
<p>
A more detailed overview about each individual spec and it's errors can be found <a href="/specs">here</a>.
</p>
</div>
<script src="main.js"></script>
</body>
</html>