deleted web and dist

This commit is contained in:
Andreas Rumpf
2008-08-23 11:32:48 +02:00
parent 07d5a8085b
commit 972c510861
50 changed files with 4986 additions and 2289 deletions

View File

@@ -1 +0,0 @@
.. include:: ../doc/docs.txt

View File

@@ -1 +0,0 @@
%(body)s

View File

@@ -1,19 +0,0 @@
"There are two major products that come out of Berkeley: LSD and UNIX.
We don't believe this to be a coincidence." -- Jeremy S. Anderson.
Here you can download the latest version of the Nimrod Compiler.
Please choose your platform:
* source for Linux (i386): `<download/nimrod_linux_i386_0.6.0.zip>`_
* source for Linux (amd64): `<download/nimrod_linux_amd64_0.6.0.zip>`_
* source for Linux (sparc, untested!): `<download/nimrod_linux_sparc_0.6.0.zip>`_
* source for Mac OS X (i386): `<download/nimrod_macosx_i386_0.6.0.zip>`_
* source for Mac OS X (amd64, untested!): `<download/nimrod_macosx_amd64_0.6.0.zip>`_
* source for Solaris (i386, untested!): `<download/nimrod_solaris_i386_0.6.0.zip>`_
* source for Solaris (amd64, untested!): `<download/nimrod_solaris_amd64_0.6.0.zip>`_
* source for Solaris (sparc, untested!): `<download/nimrod_solaris_sparc_0.6.0.zip>`_
* source for Windows (i386): `<download/nimrod_windows_i386_0.6.0.zip>`_
* source for Windows (amd64, untested!): `<download/nimrod_windows_amd64_0.6.0.zip>`_
* installer for Windows (i386): `<download/nimrod_windows_0.6.0.exe>`_
(includes LLVM and everything else you need)
.. include:: ../install.txt

View File

@@ -1,64 +0,0 @@
====
Home
====
"The most important thing in the programming language is the name. A language
will not succeed without a good name. I have recently invented a very good
name and now I am looking for a suitable language."
-- D. E. Knuth
**This page is about the Nimrod programming language, which combines Lisp's
power with Python's readability and C++'s performance.**
Welcome to the Nimrod programming language
------------------------------------------
**Nimrod** is a new statically typed, imperative
programming language, that supports procedural, functional, object oriented and
generic programming styles while remaining simple and efficient. A special
feature that Nimrod inherited from Lisp is that Nimrod's abstract syntax tree
(*AST*) is part of the specification - this allows a powerful macro system which
can be used to create domain specific languages.
*Nimrod* is a compiled, garbage-collected systems programming language
which has an excellent productivity/performance ratio. Nimrod's design
focuses on the 3E: efficiency, expressiveness, elegance (in the order of
priority).
Some more of Nimrod's highlights:
* Native code generation (currently via compilation to C).
* Garbage collection, but not dependant on a Virtual Machine.
* Portable: The Nimrod Compiler runs on Windows, Linux and Mac OS X.
Porting to other platforms is easy.
* System programming features: Ability to manage your own memory and access the
hardware directly. You will never have to use C/C++ for that again!
* Zero-overhead iterators.
* Modern type system with local type inference, tuples, variants, etc.
* User-defineable operators; new operators often easier to read than
overloaded ones.
* High level datatypes: strings, sets, sequences, etc.
* Compile time evaluation without resorting to meta-programming facilities.
* Forward compability: If later versions of the language introduce new
keywords old code won't break!
* Bindings to GTK2, the Windows API, the POSIX API. New bindings are easily
generated in a semi-atomatic way.
* A plugable parser system: If you don't like Nimrod's syntax, you can plug
in a parser and a source renderer for your own syntax!
* A documentation generator with an internal reStructuredText parser: This
can also be used to write documentation that is not embedded into the
source code. This makes documentation writing a joy (well, almost).
* A Pascal to Nimrod conversion utility: This is particularly useful for
generating bindings to any library which has a Pascal binding
(these are many!).
..
The Zen of Nimrod
-----------------
* Faster computers are for solving bigger problems, not wasting cycles.
* Static is better than dynamic: More efficient, more understandable,
better verifyable.
* Don't criple the language in the name of simplicity.
* Be backward and *forward* compatible.

View File

@@ -1 +0,0 @@
Visit our project page at Launchpad: https://launchpad.net/nimrod.

View File

@@ -1,31 +0,0 @@
====
News
====
Developers needed
=================
Yes, this is nothing new. If you are interested to help designing and
implementing the new programming language Nimrod, visit our project page at
Launchpad: https://launchpad.net/nimrod and contact me.
2008-08-22 Version 0.6.0 released
=================================
Nimrod version 0.6.0 has been released! Get it `here <./download.html>`_.
**This is the first version of the compiler that is able to compile itself!**
A nice side-effect from this is that a source-based installation does not
depend on FreePascal any longer.
Changes:
* various bug fixes, too many to list them here
* cleaned up the type system: records are now superfluous and not
supported anymore
* improved the performance of the garbage collector
* new modules in the library:
- ``parseopt``: a simple to use command line parser
- ``hashes``: efficient computation of hash values
- ``strtabs``: efficient mapping from strings to strings
- ``parsecfg``: an efficient configuration file parser
* macros and compile-time evaluation implemented (however, still experimental)
* generics implemented (however, still experimental)

View File

@@ -1,138 +0,0 @@
===========================================
Questions and Answers
===========================================
General
=======
`What is Nimrod?`:Q:
**Nimrod** is a new statically typed, imperative
programming language, that supports procedural, functional, object oriented and
generic programming styles while remaining simple and efficient. A special
feature that Nimrod inherited from Lisp is that Nimrod's abstract syntax tree
(*AST*) is part of the specification - this allows a powerful macro system which
can be used to create domain specific languages.
`How is Nimrod licensed?`:Q:
The Nimrod compiler is GPL licensed, the runtime library is LGPL licensed.
This means that you can use any license for your own programs developed with
Nimrod. If I receive enough requests with good arguments, I may change the
license of Nimrod to the BSD license.
Installation
============
`Is bootstrapping without Python possible?`:Q:
Yes. You then have to compile by hand. It is not difficult (but it is not
easy either). Please read the code in the ``koch.py`` script how this is can
be accomplished (look for the ``cmd_boot`` routine).
`A source-based download depending on the platform?`:Q:
The reason is that the C code *generated* by Nimrod is not
portable (the compiler itself is, of course!). The generated C
code is used for the installation, so you have to pick the right package.
`Why is compilation so slow?`:Q:
*Compilation* is fast. The problem is that Nimrod always
recompiles **everything**. In the next version, only modules that
have changed will be recompiled.
Another issue may be that the C compiler that is called by Nimrod is slow.
Especially GCC's compile times are a bad joke. On Linux you may be able to get
`Tiny C <http://fabrice.bellard.free.fr/tcc/>`_ to work. TCC has excellent
compile times. You should not use TCC for producing the release version
though, as it has no optimizer.
`Which version of Freepascal is needed to compile Nimrod?`:Q:
Version 2.0.0 or later. Earlier development versions like 1.9.6 may work,
but 1.0.10 won't. Note that I have never compiled Nimrod with FPC's
optimizer turned on; it may break things due to bugs in FPC (yes, this has
happend!).
`How do I build a shared library?`:Q:
This is currently not supported.
`How do I use a different C compiler than the default one?`:Q:
Edit the ``config/nimrod.cfg`` file.
Change the value of the ``cc`` variable to one of the following:
============== ============================================
Abbreviation C/C++ Compiler
============== ============================================
``dmc`` Digital Mars C++
``wcc`` Watcom C++ (now unsupported!)
``bcc`` Borland C++ (including Borland C++Builder)
``vcc`` Microsoft's Visual C++
``gcc`` Gnu C
``pcc`` Pelles C (now unsupported!)
``lcc`` Lcc-win32 (now unsupported!)
``tcc`` Tiny C (now unsupported!)
``llvm_gcc`` LLVM-GCC compiler
``icc`` Intel C++ compiler
``ucc`` Generic UNIX C compiler
============== ============================================
If your C compiler is not in the above list, try using the
*generic UNIX C compiler* (``ucc``). If the C compiler needs
different command line arguments try the ``--passc`` and ``--passl`` switches.
`The linker outputs strange errors about missing symbols`:Q:
I have seen this bug only with the GNU linker. The reason for this unknown.
Try recompiling your code with the ``--c_file_cache:off`` command line switch.
`Calling the C compiler fails - what's wrong?`:Q:
First try to edit the path to your C compiler in the
``config/nimrod.cfg`` file. For the Windows version bundled with
LLVM search for the line containing ``llvm_gcc.path``. Set this
variable to the ``bin`` directory of LLVM.
Many C compilers need special environment variables to work
properly. Although Nimrod tries hard to set them correctly (see
``extccomp.pas`` for details), this may fail if you use a
different version of the C compiler. The solution is to
ensure that all environment variables are set correctly.
You can set environment variables temporarily by using the
``@putenv "key" "val"`` directive in the ``config/nimrod.cfg``
configuration file. There are also ``@append_env`` and
``@prepend_env`` directives for appending or prepending
to environment variables.
`Calling the C compiler still fails`:Q:
Try to call the C compiler directly by doing the following::
nimrod --compile_only --gen_script your_path/your_file
sh ./your_path/rod_gen/compile_your_file.sh
Questions about the Nimrod language
===================================
`How to overload the ``in`` operator?`:Q:
The ``in`` and ``not_in`` operators are implemented as templates. The reason is
that these operators need a reverse unification algorithm (don't ask). See the
``system.nim`` module for a deeper explanation. The solution is to implement a
simple ``in_Operator`` proc where the arguments are the other way round::
proc in_operator(s: string, c: char): bool =
for x in items(s):
if x == c: return True
return False
writeln(stdout, 'z' in "abcdz") # now works!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

View File

@@ -1,398 +0,0 @@
/* global */
html{height: 100%;}
body
{ font-family: verdana, arial, sans-serif;
padding: 0px;
margin: 0px;
font-size: .70em;
}
pre, tt
{
font-size: 130%;
}
p
{ margin: 0px;
padding: 0px 0px 16px 0px;
line-height: 1.7em;
}
#column2 h1
{ font-family: arial, sans-serif;
letter-spacing: .1em;
}
#column2 h2
{ margin: 0px;
padding: 0px 0px 4px 0px;
font-size: 100%;
}
img{border: 0px;}
a.reference{outline: none;}
/* image positioning - left, right and center */
.left
{ float: left;
padding: 0px 8px 0px 0px;
}
.right
{ float: right;
padding: 0px 0px 0px 8px;
}
.center
{ display: block;
text-align: center;
margin: 0 auto;
}
/* block quote */
blockquote
{ margin: 20px 0px 20px 0px;
padding: 10px 20px 0px 20px;
border-left: 8px solid;
}
/* unordered list */
ul
{ margin: 2px 0px 16px 16px;
padding: 0px;
}
ul li
{ list-style-type: square;
margin: 0px 0px 6px 0px;
padding: 0px;
}
/* ordered list */
ol
{ margin: 8px 0px 0px 24px;
padding: 0px;
}
ol li
{ margin: 0px 0px 11px 0px;
padding: 0px;
}
/* main container */
#main
{ width: 780px;
margin-left: auto;
margin-right: auto;
}
/* links above the logo / footer */
#links, #footer
{ margin-left: auto;
margin-right: auto;
padding: 10px 21px 0px 19px;
width: 720px;
height: 26px;
font-size: 94%;
text-transform: uppercase;
}
#links{text-align: right;}
#footer{text-align: center;}
#links a.reference, #footer a.reference{text-decoration: none;}
#links a.reference:hover, #footer a.reference:hover{text-decoration: underline;}
/* logo */
#logo
{ margin-left: auto;
margin-right: auto;
width: 760px;
height: 100px;
text-align: left;
}
#logo h1
{ margin: 0px;
padding: 41px 0px 0px 19px;
font-size: 150%;
letter-spacing: .2em;
}
/* navigation menu */
#menu
{ height: 42px;
width: 760px;
margin-left: auto;
margin-right: auto;
}
#menu ul{margin: 0px auto;}
#menu li
{ float: left;
margin: 0px;
padding: 0px;
}
#menu li a, #menu li a:visited
{ display: block;
float: left;
height: 37px;
text-decoration: none;
padding: 3px 19px 2px 19px;
text-transform: uppercase;
color: #DBD7D1;
}
/* main content */
#content
{ margin-left: auto;
margin-right: auto;
width: 760px;
height: auto;
padding: 0px;
overflow: hidden;
}
/* column 1 - contains sidebar items */
#column1
{ width: 207px;
float: right;
padding: 16px 0px 15px 0px;
}
.sidebaritem
{ text-align: left;
width: 188px;
float: left;
margin: 0px 0px 25px 0px;
}
.sbihead
{ height: 14px;
width: 188px;
padding: 5px 0px 5px 19px;
text-transform: uppercase;
}
.sbihead h1
{ padding: 0px;
margin: 0px;
font-weight: bold;
font-size: 112%;
}
#column1 h1 a, #column1 h1 a:hover, #column1 h1 a:visited
{
text-decoration:none;
font-size: 80%;
}
.sbicontent{padding: 14px 8px 8px 19px;}
.sbicontent p
{ line-height: 14px;
padding: 0px 0px 8px 0px;
}
.sbilinks{padding: 0px;}
.sbilinks ul{margin: 0px auto;}
.sbilinks li
{ margin: 0px;
float: left;
list-style: none;
}
.sbilinks li a.reference , .sbilinks li a.reference:hover
{ float: left;
height: 16px;
text-decoration: none;
padding: 5px 0px 4px 19px;
width: 188px;
border: 0px;
}
/* column 2 - page content */
#column2
{ text-align: justify;
width: 512px;
float: left;
padding: 12px 3px 15px 19px;
}
#column2 h1
{ padding: 6px 0px 4px 0px;
margin: 0px 0px 12px 0px;
border-bottom: 1px solid;
/* font-size: 150%; */
text-transform: uppercase;
font-weight: normal;
}
.sidebaritem a.reference , .sidebaritem a.reference:hover
{ padding: 0px 0px 2px 0px;
text-decoration: none;
border-bottom: 1px dashed;
}
.sidebaritem a.reference:hover{border-bottom: 1px solid;}
/* contact page - form layout */
form{margin-top: 0px;}
div.row
{ clear: both;
width: 448px;
}
div.row span.formlabel
{ float: left;
width: 150px;
text-align: left;
}
div.row span.forminput
{ float: right;
text-align: right;
}
div.spacer
{ clear: both;
width: 80px;
}
input, textarea
{ width: 259px;
font-family: verdana, arial, sans-serif;
border: 1px solid;
font-size: 100%;
margin: 2px;
}
.submit
{ font-family: verdana, arial, sans-serif;
border: 1px solid;
width: 70px;
height: 22px;
cursor: pointer;
font-size: 100%;
}
html{height: 100%;}
body
{ background: #837560;
color: #70695A;
}
blockquote
{ background: #FFFFFF;
color: #70695A;
border-color: #767676;
}
#main
{ background: #FFFFFF url(back.png) repeat-y;
color: #70695A;
}
#links, #footer, #menu, #menu li a.reference
{ background: #FFFFFF url(menu.png);
color: #DBD7D1;
border-color: #D7D7D7;
}
#links a.reference, #footer a.reference,
#links a.reference:hover, #footer a.reference:hover
{ background: transparent;
color: #DBD7D1;
}
#logo
{ background: #FFFFFF url(logo.jpg) no-repeat;
color: #70695A;
}
#logo h1
{ background: transparent;
color: #FFFFFF;
}
#column2 h1, #column2 h1 a.reference,
#column2 h2, #column2 h2 a.reference
{ background: transparent;
color: #CE7014;
border-color: #CAAE90;
font-size: 150%;
}
#column2 h2, #column2 h2 a.reference {
font-size: 110%;
}
#menu li a:hover, #menu li a#selected,
#menu li a#selected:hover
{ background: #FFFFFF url(menu_hover.png);
color: #70695A;
}
#content
{ background: transparent;
color: #111; /* #70695A; */
}
#column2 a.reference, #column2 a.reference:hover {
color: #fb7f03;
}
#column2 a.reference:visited {
color: #7b5224;
}
.sidebaritem, .sidebaritem a.reference, .sidebaritem a.reference:hover
{ background: transparent;
color: #DBD7D1;
}
.sbihead
{ background: #FFFFFF url(sbi_header.png);
color: #70695A;
}
.sbihead h1
{ background: transparent;
color: #70695A;
}
.sbilinks li a.reference
{ background: #FFFFFF url(link.png);
color: #DBD7D1;
}
.sbilinks li a.reference:hover
{ background: #B7B7B7;
color: #CE7014;
}
input, textarea
{ background: #FFFFFF;
color: #70695A;
border-color: #CAAE90;
}
span.Q {
font-size: 120%;
font-weight: bold;
}
span.newsdate {
font-size: 110%;
font-weight: bold;
}

View File

@@ -1,62 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Nimrod Programming System</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="style/style.css" />
</head>
<body>
<div id="main">
<div id="links">
<!-- **** INSERT LINKS HERE **** -->
</div>
<div id="logo"><h1>Nimrod Programming System</h1></div>
<div id="content">
<div id="menu">
<ul>
#for $name, $t in $tabs
#if $tab == $t
<li><a id="selected" href="${t}.html" title = "Nimrod - $name">$name</a></li>
#else
<li><a href="${t}.html" title = "Nimrod - $name">$name</a></li>
#end if
#end for
</ul>
</div>
<div id="column1">
<div class="sidebaritem">
<div class="sbihead">
<h1>latest news</h1>
</div>
<div class="sbicontent">
$ticker
</div>
</div>
<div class="sidebaritem">
<div class="sbihead">
<h1>additional links</h1>
</div>
<div class="sbilinks">
<!-- **** INSERT ADDITIONAL LINKS HERE **** -->
<ul>
<li><a class="reference" href="http://llvm.org">LLVM</a></li>
<li><a class="reference" href="http://gcc.gnu.org">GCC</a></li>
</ul>
</div>
</div>
</div>
<div id="column2">
$content
</div>
</div>
<div id="footer">
copyright &copy; 2008 Andreas Rumpf | Last update: $lastupdate
| <a class="reference" href="http://validator.w3.org/check?uri=referer">XHTML 1.1</a>
| <a class="reference" href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a>
| <a class="reference" href="http://www.dcarter.co.uk">design by dcarter</a>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,137 +0,0 @@
/*
:Authors: Ian Bicking, Michael Foord
:Contact: fuzzyman@voidspace.org.uk
:Date: 2005/08/26
:Version: 0.1.0
:Copyright: This stylesheet has been placed in the public domain.
Stylesheet for Docutils.
Based on ``blue_box.css`` by Ian Bicking
and ``html4css1.css`` revision 1.46.
*/
@import url(html4css1.css);
body {
font-family: Arial, sans-serif;
}
em, i {
/* Typically serif fonts have much nicer italics */
font-family: Times New Roman, Times, serif;
}
a.target {
color: blue;
}
a.target {
color: blue;
}
a.toc-backref {
text-decoration: none;
color: black;
}
a.toc-backref:hover {
background-color: inherit;
}
a:hover {
background-color: #cccccc;
}
div.attention, div.caution, div.danger, div.error, div.hint,
div.important, div.note, div.tip, div.warning {
background-color: #cccccc;
padding: 3px;
width: 80%;
}
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
text-align: center;
background-color: #999999;
display: block;
margin: 0;
}
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: #cc0000;
font-family: sans-serif;
text-align: center;
background-color: #999999;
display: block;
margin: 0;
}
h1, h2, h3, h4, h5, h6 {
font-family: Helvetica, Arial, sans-serif;
border: thin solid black;
/* This makes the borders rounded on Mozilla, which pleases me */
-moz-border-radius: 8px;
padding: 4px;
}
h1 {
background-color: #444499;
color: #ffffff;
border: medium solid black;
}
h1 a.toc-backref, h2 a.toc-backref {
color: #ffffff;
}
h2 {
background-color: #666666;
color: #ffffff;
border: medium solid black;
}
h3, h4, h5, h6 {
background-color: #cccccc;
color: #000000;
}
h3 a.toc-backref, h4 a.toc-backref, h5 a.toc-backref,
h6 a.toc-backref {
color: #000000;
}
h1.title {
text-align: center;
background-color: #444499;
color: #eeeeee;
border: thick solid black;
-moz-border-radius: 20px;
}
table.footnote {
padding-left: 0.5ex;
}
table.citation {
padding-left: 0.5ex
}
pre.literal-block, pre.doctest-block {
border: thin black solid;
padding: 5px;
}
.image img { border-style : solid;
border-width : 2px;
}
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
font-size: 100%;
}
code, tt {
color: #000066;
}