new website

This commit is contained in:
Araq 2014-12-10 00:40:48 +01:00
commit 74fdd5c2ea
30 changed files with 1055 additions and 494 deletions

View file

@ -1,8 +1,6 @@
version 0.10 version 0.10
============ ============
Repetition renders the ridiculous reasonable.
- document 'converter' - document 'converter'
- document the tables module better - document the tables module better

View file

@ -418,14 +418,14 @@ proc main(c: var TConfigData) =
quit("[Error] cannot write file: " & outfile) quit("[Error] cannot write file: " & outfile)
removeFile(temp) removeFile(temp)
copyDir("web/assets", "web/upload/assets") copyDir("web/assets", "web/upload/assets")
buildJS("web/upload") #buildJS("web/upload")
buildNewsRss(c, "web/upload") buildNewsRss(c, "web/upload")
buildAddDoc(c, "web/upload") #buildAddDoc(c, "web/upload")
buildDocSamples(c, "web/upload") #buildDocSamples(c, "web/upload")
buildDoc(c, "web/upload") #buildDoc(c, "web/upload")
buildDocSamples(c, "doc") #buildDocSamples(c, "doc")
buildDoc(c, "doc") #buildDoc(c, "doc")
buildPdfDoc(c, "doc") #buildPdfDoc(c, "doc")
var c: TConfigData var c: TConfigData
initConfigData(c) initConfigData(c)

View file

@ -1,27 +1,24 @@
#! stdtmpl | standard #! stdtmpl | standard
#proc generateHTMLPage(c: var TConfigData, currentTab, content, rss: string): string = #proc generateHTMLPage(c: var TConfigData, currentTab, content, rss: string): string =
# result = "" # result = ""
<!doctype html> <!DOCTYPE html>
<html> <html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>$c.projectTitle</title>
<link rel="stylesheet" type="text/css" href="assets/style.css" />
<head> <link rel="shortcut icon" href="http://reign-studios.net/philipwitte/nim/favicon.ico">
<title>$c.projectTitle</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="assets/style.css" />
#if len(rss) > 0: #if len(rss) > 0:
<link href="$rss" title="Recent changes" type="application/atom+xml" rel="alternate"> <link href="$rss" title="Recent changes" type="application/atom+xml" rel="alternate">
#end fi #end if
</head> </head>
<body>
<body> <header id="head">
<div id="site"> <div class="page-layout tall">
<!-- site_head --> <div id="head-logo"></div>
<div id="site_head"> <a id="head-logo-link" href="http://reign-studios.net/philipwitte/nim/home.htm"></a>
<div id="logo"></div> <nav id="head-links">
</div>
<!-- site_neck -->
<div id="site_neck">
#for i in 0.. c.tabs.len-1: #for i in 0.. c.tabs.len-1:
# var name = c.tabs[i].key # var name = c.tabs[i].key
# var t = c.tabs[i].val # var t = c.tabs[i].val
@ -32,48 +29,124 @@
#end if #end if
href="${t}.html" title = "$c.projectName - $name">$name</a> href="${t}.html" title = "$c.projectName - $name">$name</a>
#end for #end for
</div> </nav>
</div>
</header>
<!-- site_body --> # if currentTab == "index":
<div id="site_body"> <section id="neck" class="home">
# else:
<section id="neck">
# end
<div class="page-layout tall">
<div id="glow-arrow"></div>
<!-- sidebar_wrapper --> # if currentTab == "index":
<div id="sidebar_wrap"> <div id="slideshow">
<div id="sidebar"> <!-- slides -->
<div id="sidebar_head"></div> <div id="slide0" class="">
<h2>Latest News</h2> <div>
# if len(c.ticker) > 0: <h2>nim looks like this..</h2>
$c.ticker <pre><span class="cmt"># compute average line length</span>
# end if <span class="kwd">var</span>
<span class="tab"> </span>sum = <span class="val">0</span>
<span class="tab end"> </span>count = <span class="val">0</span>
<span class="kwd">for</span> line <span class="kwd">in</span> stdin.lines:
<span class="tab"> </span>sum += line.len
<span class="tab end"> </span>count += <span class="val">1</span>
echo(<span class="val">"Average line length: "</span>,
<span class="kwd">if</span> count: sum / count <span class="kwd">else</span>: <span class="val">0</span>)
</pre>
</div>
<div>
<h2>..and this...</h2>
<pre><span class="cmt"># create and greet someone</span>
<span class="kwd">type</span> <span class="def">Person</span> = <span class="typ">object</span>
<span class="tab"> </span>name: <span class="typ">string</span>
<span class="tab end"> </span>age: <span class="typ">int</span>
<span class="kwd">proc</span> <span class="def">greet</span>(p:<span class="typ">Person</span>) =
<span class="tab"> </span>echo <span class="val">"Hi, I'm "</span>, p.name, <span class="val">"."</span>
<span class="tab end"> </span>echo <span class="val">"I am "</span>, p.age, <span class="val">" years old."</span>
<span class="kwd">var</span> p = <span class="typ">Person</span>(name:<span class="val">"Jon"</span>, age:<span class="val">18</span>)
p.greet() <span class="cmt"># or greet(p)</span>
</pre>
</div>
</div> <!-- slide0 -->
<div id="slide1" class="active">
#let quoteIdx = if c.quotations.hasKey(currentTab): currentTab else: "index"
<div class="quote-image"></div>
<p class="quote">
${c.quotations[quoteIdx].quote}
<br>
<b style="float: right">-- ${c.quotations[quoteIdx].author}</b>
</p>
<br/>
</div>
</div>
<div id="slideshow-nav">
<div id="slideControl0" onclick="slideshow_click(0)"></div>
<div id="slideControl1" onclick="slideshow_click(1)" class="active"></div>
</div>
# end
<aside id="sidebar">
# if len(c.links) > 0: # if len(c.links) > 0:
<h2>More Links</h2> <h3>More Links</h3>
<div id="sidebar-links">
# for i in 0..c.links.len-1: # for i in 0..c.links.len-1:
<a class="link" href="${c.links[i].val}" id="${c.links[i].id}">${c.links[i].key}</a> <a href="${c.links[i].val}" id="${c.links[i].id}">${c.links[i].key}</a>
# end for # end for
</div>
# end if # end if
</div> <h3 class="blue">Latest News</h3>
</div> <div id="sidebar-news">
<!-- page --> # if len(c.ticker) > 0:
<div id="page"> $c.ticker
#if c.quotations.hasKey(currentTab): # end if
<div class="quote-image"></div> </div>
<p class="quote"> </aside>
${c.quotations[currentTab].quote} </div>
<br> </section>
<b style="float: right">-- ${c.quotations[currentTab].author}</b>
</p> <section id="body">
<br/> <div id="body-border"></div>
#end if <div id="glow-line"></div>
<div class="page-layout">
$content <article id="content" class="page">
</div> $content
</div> </article>
<!-- site_foot --> </div>
<div id="site_foot"> </section>
<div id="legal">Copyright &copy; 2014 - Andreas Rumpf &amp; Contributors - All rights reserved - <a href="http://reign-studios.com/philipwitte/">Design by Philip Witte</a></div>
</div> <!--- #foot --->
</div> <footer id="foot" class="home">
<div class="page-layout tall">
<div id="foot-links">
<div>
<h4>Documentation</h4>
<a href="documentation.html">Stable Documentation</a>
<!-- <a href="">Development Documentation</a> -->
<a href="https://github.com/Araq/Nimrod">Github Issues &amp; Requests</a>
</div>
<div>
<h4>Community</h4>
<a href="http://forum.nim-lang.org">User Forum</a>
<a href="http://webchat.freenode.net/?channels=nimlang">Online IRC</a>
<a href="http://irclogs.nim-lang.org/">IRC Logs</a>
</div>
</div>
<div id="foot-legal">
<h4>Written in Nim - Powered by <a href="#">Jester</a></h4>
Web Design by <a href="#">Philip Witte</a> &amp; <a href="#">Dominik Picheta</a><br>
Copyright © 2014 - <a href="#">Andreas Rumpf</a> &amp; <a href="#">Contributors</a>
</div>
</div>
</footer>
<script> <script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@ -83,6 +156,40 @@
ga('create', 'UA-48159761-1', 'nim-lang.org'); ga('create', 'UA-48159761-1', 'nim-lang.org');
ga('send', 'pageview'); ga('send', 'pageview');
var timer;
var prevIndex = 0;
function setSlideShow(index, short) {
if (index > 1) index = 0;
for (var i = 0; i < 10; ++i) {
var x = document.getElementById("slide"+i);
if (!x) break;
x.className = "";
document.getElementById("slideControl"+i).className = "";
}
document.getElementById("slide"+index).className = "active";
document.getElementById("slideControl"+index).className = "active";
prevIndex = index;
startTimer(short ? 8000 : 32000);
}
function nextSlide() { setSlideShow(prevIndex + 1, true); }
function startTimer(t) { timer = setTimeout(nextSlide, t); }
function slideshow_enter() { clearTimeout(timer); }
function slideshow_exit () { startTimer(16000); }
function slideshow_click(index) {
clearTimeout(timer);
setSlideShow(index, false);
}
window.onload = function() {
var slideshow = document.getElementById("slideshow");
slideshow.onmouseenter = slideshow_enter;
slideshow.onmouseleave = slideshow_exit;
startTimer(8000);
};
</script> </script>
</body> </body>
</html> </html>

BIN
web/assets/images/bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
web/assets/images/foot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

BIN
web/assets/images/head.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 971 B

After

Width:  |  Height:  |  Size: 107 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

View file

@ -1,210 +1,566 @@
* { cursor:default; }
a, a * { cursor:pointer; text-decoration:none; }
html, body { * { cursor:default; }
margin:0; a, a * { cursor:pointer; }
padding:0;
width:100%; html { margin:0; overflow-x:auto; }
height:100%; body {
background:#121220; overflow-x:hidden;
font:14px arial; min-width:1030px;
letter-spacing:1px; margin:0;
line-height:22px; font:13pt "arial";
background:#152534 url("images/bg.jpg") no-repeat fixed center top; }
pre { color:#5997AF;}
pre, pre * { cursor:text; }
pre .cmt { color:#6D6D6D; font-style:italic; }
pre .kwd { color:#43A8CF; font-weight:bold; }
pre .typ { color:#128B7D; font-weight:bold; }
pre .atr { color:#128B7D; font-weight:bold; font-style:italic; }
pre .def { color:#CAD6E4; font-weight:bold; font-style:italic; }
pre .prg { color:#854D6A; font-weight:bold; font-style:italic; }
pre .val { color:#8AB647; font-style:italic; }
pre .tab { border-left:1px dotted rgba(67,168,207,0.4); }
pre .end { background:url("images/tabEnd.png") no-repeat left bottom; }
.tall { height:100%; }
.pre { padding:0 5px; font:11pt monospace; background:rgba(255,255,255,.15); border-radius:3px; }
.page-layout { margin:0 auto; width:1000px; }
.docs-layout { margin:0 40px; }
.talk-layout { margin:0 40px; }
.wide-layout { margin:0 auto; }
#head { height:100px; background:url("images/head.png") repeat-x bottom; }
#head.docs { margin-left:280px; background:rgba(0,0,0,.25) url("images/head-fade.png") no-repeat right top; }
#head > div { position:relative }
#head-logo {
position:absolute;
left:-390px;
top:0;
width:917px;
height:268px;
pointer-events:none;
background:url("images/logo.png") no-repeat; }
#head.docs #head-logo { left:-381px; position:fixed; }
#head.forum #head-logo { left:-370px; }
#head-logo-link {
position:absolute;
display:block;
top:10px;
left:10px;
width:236px;
height:85px; }
#head.docs #head-logo-link { left:-260px; }
#head.forum #head-logo-link { left:30px; }
#head-links { position:absolute; right:0; bottom:13px; }
#head.docs #head-links,
#head.forum #head-links { right:20px; }
#head-links > a {
display:block;
float:left;
padding:10px 25px 25px 25px;
color:rgba(255,255,255,.5);
font-size:14pt;
text-decoration:none;
letter-spacing:1px;
background:url("images/head-link.png") no-repeat center bottom;
transition:
color 0.3s ease-in-out,
text-shadow 0.4s ease-in-out; }
#head-links > a:hover,
#head-links > a.active {
color:#1cb3ec;
text-shadow:0 0 4px rgba(28,179,236,.8);
background-image:url("images/head-link_hover.png"); }
#head-banner { width:200px; height:100px; background:#000; }
#neck { z-index:0; height:40px; }
#neck.home { height:370px; }
#neck > div { position:relative }
#glow-arrow {
position:absolute;
top:-9px;
left:0;
right:-16px;
height:48px;
background:url("images/glow-arrow.png") no-repeat right; }
glow-arrow.docs { left:280px; }
#glow-line-vert {
position:fixed;
top:100px;
left:280px;
width:3px;
height:844px;
background:url("images/glow-line-vert.png") no-repeat; }
#slideshow { position:absolute; top:10px; left:10px; width:700px; }
#slideshow > div { visibility:hidden; opacity:0; position:absolute; transition:visibility 0s linear 1s, opacity 1s ease-in-out; }
#slideshow > div.active { visibility:visible; opacity:1; transition-delay:0s; }
#slideshow > div.init { transition-delay:0s; }
#slideshow-nav { z-index:3; position:absolute; top:110px;; right:-12px; }
#slideshow-nav > div { margin:5px 0; width:23px; height:23px; background:url("images/slideshow-nav.png") no-repeat; }
#slideshow-nav > div:hover { background-image:url("images/slideshow-nav_active.png"); opacity:0.5; }
#slideshow-nav > div.active { background-image:url("images/slideshow-nav_active.png"); opacity:1; }
#slide0 { margin:30px 0 0 10px; }
#slide0 > div { float:left; width:320px; font:10pt monospace; }
#slide0 > div:first-child { margin:0 40px 0 0; }
#slide0 > div > h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); }
#slide0 > div > pre {
margin:0;
padding:15px 10px;
line-height:14pt;
background:rgba(0,0,0,.4);
border-left:8px solid rgba(0,0,0,.3);
box-shadow:1px 2px 16px rgba(28,180,236,.4); }
#slide1 { margin-top:50px; }
#slide1 > p {
padding:40px 20px 0 20px;
font-style:italic;
color:rgba(162,198,223,.78);
letter-spacing:1px;
line-height:25pt;
background:url("images/quotes.png") top left no-repeat; }
#slide1 > div {
float:right;
margin-right:40px;
font-style:italic;
font-weight:bold;
color:rgba(93,155,199,.44); }
#sidebar {
z-index:2;
position:absolute;
top:5px; right:0;
width:275px;
height:726px;
padding:210px 0 0 0;
background:url("images/sidebar.png") no-repeat; }
#sidebar > h3 { margin:0 30px 0 30px; color:rgba(255,255,255,.5); }
#sidebar > h3.blue { color:rgba(28,180,236,.5); }
#sidebar-links,
#sidebar-news {
margin:10px 30px 50px 30px;
padding:10px 0;
background:rgba(0,0,0,.6); }
#sidebar-links { box-shadow:1px 2px 12px rgba(255,255,255,.4); }
#sidebar-news { box-shadow:1px 2px 12px rgba(28,180,236,.6); }
#sidebar-links > a {
display:block;
margin-left:15px;
padding:12px 20px 12px 45px;
font-weight:bold;
text-decoration:none;
letter-spacing:1px;
color:rgba(255,255,255,.4);
transition:
color 0.1s ease-in-out,
text-shadow 0.2s ease-in-out; }
#sidebar-news > a { transition: color 0.3s ease-in-out; }
#sidebar-news > a > h4 { transition: color 0.1s ease-in-out, text-shadow 0.2s ease-in-out; }
#sidebar-links > a:hover { color:#fff; text-shadow:0 0 6px #fff; }
#sidebar-news > a { display:block; padding:15px; color:rgba(255,255,255,.4); text-decoration:none; }
#sidebar-news > a > h4 { margin:0 0 5px 0; color:rgba(28,180,236,.5); }
#sidebar-news > a:hover > h4 { margin:0 0 5px 0; color:rgba(28,180,236,.8); text-shadow:0 0 6px rgba(28,180,236,.6); }
#sidebar-news > a:hover { color:rgba(255,255,255,1); }
#sidebar-news > a.blue { color:rgba(28,180,236,.5); font-weight:bold; }
#sidebar-news > a.blue:hover { color:#fff; }
#link_forum { background:url("images/more-links_forum.png") no-repeat left center; }
#link_github { background:url("images/more-links_github.png") no-repeat left center; }
#link_editors { background:url("images/more-links_editors.png") no-repeat left center; }
#link_aporia { background:url("images/more-links_editors.png") no-repeat left center; }
#link_nimbuild { background:url("images/more-links_nimbuild.png") no-repeat left center; }
#overview-bg {
position:fixed;
top:0;
bottom:0;
left:0;
width:280px;
background:rgba(0,0,0,0.25); }
#overview {
z-index:3;
position:fixed;
overflow:auto;
top:115px;
bottom:20px;
left:20px;
width:245px; }
#overview::-webkit-scrollbar { width:5px; }
#overview::-webkit-scrollbar-track { border-radius:2px; background:rgba(255,255,255,.03); }
#overview::-webkit-scrollbar-thumb { border-radius:2px; background:rgba(28,179,236,.5); }
#overview > div { overflow:auto; margin-bottom:40px; }
#overview a {
display:block;
padding:0 10px;
margin:2px 5px 2px 0;
color:rgba(255,255,255,.6);
background:rgba(255,255,255,0.03);
border-radius:2px;
letter-spacing:1px;
text-decoration:none; }
#overview a:hover { color:#fff; background:rgba(255,255,255,0.05); }
#overview > .types a { border-left:2px solid rgba(28,179,236,.4); }
#overview > .procs a { border-left:2px solid rgba(255,223,53,.4); }
#overview > .iters a { border-left:2px solid rgba(255,134,53,.4); }
#overview > div > h4 {
margin:0 5px 10px 0;
padding:5px 10px;
letter-spacing:1px;
color:#fff;
border-left:2px solid #fff;
border-radius:2px;
background:rgba(255,255,255,0.1); }
#overview > .types h4 { color:#1cb3ec; border-color:#1cb3ec; }
#overview > .procs h4 { color:#ffdf35; border-color:#ffdf35; }
#overview > .iters h4 { color:#ff8635; border-color:#ff8635; }
#overview h5 {
color:rgba(28,179,236,.6);
margin:10px 0 5px 0;
padding:5px 5px;
letter-spacing:1px; }
#body { z-index:1; position:relative; background:rgba(220,231,248,.6); }
#body.docs { margin:0 40px 20px 320px; }
#body.forum { margin:0 40px 20px 40px; }
#body-border {
position:absolute;
top:-25px;
left:0;
right:0;
height:35px;
background:rgba(0,0,0,.25); }
#body-border-left {
position:absolute;
left:-25px;
top:-25px;
bottom:-25px;
width:35px;
background:rgba(0,0,0,.25); }
#body-border-right {
position:absolute;
right:-25px;
top:-25px;
bottom:-25px;
width:35px;
background:rgba(0,0,0,.25); }
#body-border-bottom {
position:absolute;
left:10px;
right:10px;
bottom:-25px;
height:35px;
background:rgba(0,0,0,.25); }
#body.docs #body-border,
#body.forum #body-border { left:10px; right:10px; }
#glow-line {
position:absolute;
top:-27px;
left:100px;
right:-25px;
height:3px;
background:url("images/glow-line.png") no-repeat left; }
#glow-line-bottom {
position:absolute;
bottom:-27px;
left:-25px;
right:100px;
height:3px;
background:url("images/glow-line2.png") no-repeat right; }
#content { padding:40px 0; line-height:150%; }
#content.page { width:680px; min-height:800px; padding-left:20px; }
#content h1 { font-size:20pt; letter-spacing:1px; color:rgba(0,0,0,.75); }
#content h2 { font-size:16pt; letter-spacing:1px; color:rgba(0,0,0,.7); margin-top:40px; }
#content p { text-align:justify; color:rgba(0,0,0,.8); }
#content a { color:#CEDAE9; text-decoration:none; }
#content a:hover { color:#fff; }
#content ul { padding-left:20px; }
#content li { margin-bottom:10px; text-align:justify; }
#body.docs #content > div { margin-top:40px; padding-top:40px; border-top:1px dashed rgba(0,0,0,.25); }
#body.docs #content > div:first-child { margin-top:0; padding-top:0; border:none; }
#body.docs #content > div > h3 {
color:#fff;
margin:0 0 10px 0;
padding:10px 20px;
letter-spacing:1px;
border-left:8px solid #fff;
border-radius:3px;
background:rgba(0,0,0,.7);
box-shadow:1px 3px 12px rgba(0,0,0,.4); }
#body.docs #content > #types-wrap > h3 { color:#1cb3ec; border-color:#1cb3ec; }
#body.docs #content > #procs-wrap > h3 { color:#ffdf35; border-color:#ffdf35; }
#body.docs #content > #iters-wrap > h3 { color:#ff8635; border-color:#ff8635; }
#body.docs #content > div > div > div {
overflow:auto;
margin:10px 0;
border-left:8px solid #fff;
border-radius:3px;
background:rgba(0,0,0,.1); }
#body.docs #content > #types-wrap > div > div { border-color:rgba(28,179,236,.5); }
#body.docs #content > #procs-wrap > div > div { border-color:rgba(255,223,53,.5); }
#body.docs #content > #iters-wrap > div > div { border-color:rgba(255,134,53,.5); }
#body.docs #content > #procs-wrap > div > div.overload-head { margin-bottom:0; }
#body.docs #content > #procs-wrap > div > div.overload-tail { margin-top:0; border-top:1px dashed rgba(255,223,53,.5); }
#body.docs #content > #procs-wrap > div > div.overload { margin-top:0; margin-bottom:0; border-top:1px dashed rgba(255,223,53,.5); }
#body.docs #content > #iters-wrap > div > div.overload-head { margin-bottom:0; }
#body.docs #content > #iters-wrap > div > div.overload-tail { margin-top:0; border-top:1px dashed rgba(255,134,53,.5); }
#body.docs #content > #iters-wrap > div > div.overload { margin-top:0; margin-bottom:0; border-top:1px dashed rgba(255,134,53,.5); }
#body.docs #content > div > div > p { margin:20px 10px 10px 10px; }
#body.docs #content > div > div > div > div { float:left; }
#body.docs #content > div > div > div > div.head { width:60%; }
#body.docs #content > div > div > div > div.data { width:40%; }
#body.docs #content > h1 > .symbol {
padding:0 8px;
border-radius:5px;
background:rgba(206,218,233,.4); }
#body.docs #content > div > div > div > div.head > .sign {
margin:0 10px 5px 10px;
padding:10px 10px 0 10px;
font-weight:bold;
border-bottom:1px dashed rgba(0,0,0,.25); }
#body.docs #content > div > div > div > div.head > .desc {
padding:0 20px 10px 20px;
color:rgba(0,0,0,.75); }
#body.docs #content > div > #types > div > div.head > .sign > .symbol {
padding:0 5px;
border-radius:3px;
background:rgba(28,179,236,.4); }
#body.docs #content > div > #procs > div > div.head > .sign > .symbol {
padding:0 5px;
border-radius:3px;
background:rgba(255,223,53,.3); }
#body.docs #content > div > #iters > div > div.head > .sign > .symbol {
padding:0 5px;
border-radius:3px;
background:rgba(255,134,53,.3); }
#body.docs #content > div > div > div > div.data > div {
margin:0 20px 5px 10px;
padding:10px 0 0 10px;
font-style:italic;
color:rgba(0,0,0,.6);
border-bottom:1px dashed rgba(0,0,0,.25); }
#body.docs #content > div > div > div > div.data > ul { margin:0; padding:0 10px; }
#body.docs #content > div > div > div > div.data > ul:last-child { margin-bottom:5px; padding-bottom:10px; }
#body.docs #content > div > div > div > div.data > ul .symbol { padding:0 5px; border-radius:3px; background:rgba(23,192,23,.25); }
#body.docs #content > div > div > div > div.data > ul.pragmas .symbol { background:rgba(106,50,145,.25); }
#body.docs #content > div > div > div > div.data > ul > li { margin:0; padding:0 10px; list-style:none; }
#body.docs #content pre {
overflow:auto;
margin:10px 0;
padding:15px 10px;
font-size:10pt;
font-style:normal;
line-height:14pt;
background:rgba(0,0,0,.75);
border-left:8px solid rgba(0,0,0,.3); }
#docs-sort { float:right; font-size:75%; }
#docs-sort > a {
cursor:default;
margin:0 0 0 10px;
padding:2px 10px;
border-radius:5px;
color:rgba(0,0,0,.25);
background:rgba(0,0,0,.1);
box-shadow:inset 0 1px 8px rgba(0,0,0,.4); }
#docs-sort > a:hover,
#docs-sort > a.active { color:#000; background:rgba(0,0,0,.2); }
#talk-heads { overflow:auto; margin:0 8px 0 8px; }
#talk-heads > div { float:left; font-size:120%; font-weight:bold; }
#talk-heads > .topic { width:55%; }
#talk-heads > .detail { width:15%; }
#talk-heads > .author { width:15%; }
#talk-heads > .reply { width:15%; }
#talk-heads > div > div { margin:0 10px 10px 10px; padding:0 10px 10px 10px; border-bottom:1px dashed rgba(0,0,0,0.4); }
#talk-heads > .topic > div { margin-left:0; }
#talk-heads > .author > div { margin-right:0; }
#talk-thread > div,
#talk-threads > div {
position:relative;
margin:5px 0;
overflow:auto;
border-radius:3px;
border:8px solid rgba(0,0,0,.8);
border-top:none;
border-bottom:none;
background:rgba(0,0,0,0.1); }
#talk-thread > div:nth-child(odd) { background:rgba(255,255,255,0.1); }
#talk-threads > div:nth-child(odd) { background:rgba(0,0,0,0.2); }
#talk-thread > div > div,
#talk-threads > div > div { float:left; }
#talk-thread > div > div > div,
#talk-threads > div > div > div { margin:10px 20px; }
#talk-threads > div > .topic { width:55%; }
#talk-threads > div > .reply { width:15%; overflow:hidden; }
#talk-threads > div > .detail { width:15%; overflow:hidden; }
#talk-thread > div > .author,
#talk-threads > div > .author {
position:absolute;
right:0;
top:0;
bottom:0;
width:15%;
overflow:hidden;
background:rgba(0,0,0,0.8); }
#talk-thread > div > .author a,
#talk-threads > div > .author a { color:#1cb3ec !important; }
#talk-thread > div > .author a:hover,
#talk-threads > div > .author a:hover { color:#fff !important; }
#talk-threads > div > .topic .pages { float:right; }
#talk-threads > div > .topic > div > a { font-weight:bold; }
#talk-threads > div > .detail > div { float:left; margin:0; }
#talk-threads > div > .detail > div > div { margin-left:20px; padding:10px 10px 10px 22px; }
#talk-threads > div > .detail > div { width:50%; }
#talk-threads > div > .detail > div:first-child > div { background:url("images/forum-views.png") no-repeat left; }
#talk-threads > div > .detail > div:last-child > div { background:url("images/forum-posts.png") no-repeat left; }
#talk-thread > div { margin:20px 0; min-height:150px; box-shadow:1px 3px 12px rgba(0,0,0,.4) }
#talk-thread > div > .author > div > .avatar { margin-top:20px; }
#talk-thread > div > .author > div > .avatar > img { box-shadow:0 0 12px #1cb3ec; }
#talk-thread > div > .author > div > .name { }
#talk-thread > div > .topic { width:85%; padding-bottom:10px; }
#talk-thread > div > .topic pre {
overflow:auto;
margin:0;
padding:15px 10px;
font-size:10pt;
font-style:normal;
line-height:14pt;
background:rgba(0,0,0,.75);
border-left:8px solid rgba(0,0,0,.3); }
#talk-head,
#talk-info {
overflow:auto;
border-radius:3px;
border:8px solid rgba(0,0,0,.2);
border-top:none;
border-bottom:none;
background:rgba(0,0,0,0.1); }
#talk-head { margin-bottom:20px; }
#talk-info { margin-top:20px; }
#talk-head > div,
#talk-info > div { float:left; }
#talk-head > .info,
#talk-info > .info { width:85%; }
#talk-head > .user,
#talk-info > .user { width:15%; background:rgba(0,0,0,.2); }
#talk-info > .user > div > .reply { font-weight:bold; padding-left:22px; background:url("images/forum-reply.png") no-repeat left; }
#talk-head > div > div,
#talk-info > div > div { padding:5px 20px; }
#talk-head > .detail > div { float:left; margin:0; }
#talk-head > .detail > div > div { padding-left:22px; }
#talk-head > .detail > div:first-child > div { background:url("images/forum-views.png") no-repeat left; }
#talk-head > .detail > div:last-child > div { background:url("images/forum-posts.png") no-repeat left; }
#talk-nav { margin:20px 8px 0 8px; padding-top:10px; border-top:1px dashed rgba(0,0,0,0.4); text-align:center; }
#talk-nav > a.active { text-decoration:underline !important; }
.standout {
padding:5px 30px;
margin-bottom:20px;
border:8px solid rgba(0,0,0,.8);
border-right-width:16px;
border-top-width:0;
border-bottom-width:0;
border-radius:3px;
background:rgba(0,0,0,0.1);
box-shadow:1px 3px 12px rgba(0,0,0,.4); }
.standout h2 { margin-bottom:10px; padding-bottom:10px; border-bottom:1px dashed rgba(0,0,0,.8); }
.standout li { margin:0 !important; padding-top:10px; border-top:1px dashed rgba(0,0,0,.2); }
.standout ul { padding-bottom:5px; }
.standout ul.tools { list-style:url("images/docs-tools.png"); }
.standout ul.library { list-style:url("images/docs-library.png"); }
.standout ul.internal { list-style:url("images/docs-internal.png"); }
.standout ul.tutorial { list-style:url("images/docs-tutorial.png"); }
.standout ul.example { list-style:url("images/docs-example.png"); }
.standout li:first-child { padding-top:0; border-top:none; }
.standout li p { margin:0 0 10px 0 !important; line-height:130%; }
.standout li > a { font-weight:bold; }
.forum-user-info,
.forum-user-info * { cursor:help }
#foot { height:150px; position:relative; top:-10px; letter-spacing:1px; }
#foot.home { background:url("images/foot.png") repeat-x top; height:200px; }
#foot.docs { margin-left:320px; margin-right:40px; }
#foot.forum { margin-left:40px; margin-right:40px; }
#foot > div { position:relative; }
#foot.home > div { width:960px; }
#foot h4 { font-size:11pt; color:rgba(255,255,255,.4); margin:40px 0 6px 0; }
#foot a:hover { color:#fff; }
#foot-links { float:left; }
#foot-links > div { float:left; padding:0 40px 0 0; line-height:120%; }
#foot-links a { display:block; font-size:10pt; color:rgba(255,255,255,.3); text-decoration:none; }
#foot-legal { float:right; font-size:10pt; color:rgba(255,255,255,.3); line-height:150%; text-align:right; }
#foot-legal a { color:inherit; text-decoration:none; }
#foot-legal > h4 > a { color:inherit; }
#mascot {
z-index:2;
position:absolute;
top:-340px;
right:25px;
width:202px;
height:319px;
background:url("images/mascot.png") no-repeat; }
#body pre {
padding:20px;
border-left:10px solid #8f9698;
background:#f3f6f8;
font-size:15px;
font-family:courier, monospace;
letter-spacing:0;
line-height:17px;
color: #343739;
} }
#site { z-index:0; position:relative; margin:0 auto; width:960px; } #body span.pre {
#site > dive { position:relative; } background-color: #8396A4; /* #E6EDF2; */
padding: 1pt 3pt;
border-radius: 2pt;
-moz-border-radius: 2pt;
-webkit-border-radius: 2pt;
}
/* site_head */ #body pre > .Comment { color:#858686; font-style:italic; }
#site_head { z-index:0; height:200px; } #body pre > .Keyword { color:#1cb4ec; font-weight:bold; }
#body pre > .Operator { color:#777; }
#logo { #body pre > .StringLit, #page pre > .DecNumber { color:#ff7302; }
z-index:-1;
position:absolute; #body .docutils th {
top:-35px; border-bottom: 2px solid #1A1A1A;
left:-330px; font-weight: normal;
width:868px; padding: 8px;
height:334px; }
background:url("images/logo.png") no-repeat; #body table.docutils {
} border-collapse: collapse;
text-align: left;
/* site_neck */ border-spacing: 0px;
#site_neck { z-index:1; float:left; width:100%; height:40px; background:url("images/site_neck.png") bottom no-repeat; } }
#site_neck > a {
display:block;
float:left;
margin-top:3px;
margin-right:10px;
padding:4px 20px 0 20px;
height:28px;
color:#959a9b;
background:#394649;
font-size:18px;
}
#site_neck > a:hover {
margin-top:0;
border-top:3px solid #1cb4ec;
}
#site_neck > a.active {
margin-top:0;
padding-top:7px;
color:#fff;
background:#1cb4ec;
text-shadow:0 0 4px rgba(255,255,255,0.75);
}
#site_neck > a.active:hover {
border-top:none;
}
/* site_body */
#site_body { z-index:2; float:left; clear:both; width:100%; background:#d1dbe3; }
#page { position:relative; float:left; padding:20px 30px 50px 50px; width:620px; color:#343739; }
#page h1 { margin-top:40px; line-height: 28px; }
#page h2 { margin-top:40px; }
#page p { text-align:justify; }
#page .quote-image {
z-index:0;
position:absolute;
top:15px;
left:20px;
width:59px;
height:42px;
background:url("images/quote.png") no-repeat;
}
#page p.quote {
position:relative;
color:#6187a2;
font-style:italic;
letter-spacing:2px;
word-spacing:1px;
}
#page pre {
padding:20px;
border-left:10px solid #8f9698;
background:#f3f6f8;
font-size:15px;
font-family:courier, monospace;
letter-spacing:0;
line-height:17px;
}
#page span.pre {
background-color: #E6EDF2;
padding: 1pt 3pt;
border-radius: 2pt;
-moz-border-radius: 2pt;
-webkit-border-radius: 2pt;
}
#page pre > .Comment { color:#858686; font-style:italic; }
#page pre > .Keyword { color:#1cb4ec; font-weight:bold; }
#page pre > .Operator { color:#777; }
#page pre > .StringLit, #page pre > .DecNumber { color:#ff7302; }
#page li { margin-top:10px; }
#page a:hover { text-decoration: underline; }
#page table.docutils {
background: none repeat scroll 0 0 #F3F6F8;
border-collapse: collapse;
font-size: 8pt;
text-align: left;
width: 480px;
border-spacing: 0;
}
#page .docutils th {
border-bottom: 2px solid #1a1a1a;
font-size: 14px;
font-weight: normal;
padding: 8px 8px;
}
#page .docutils td {
padding: 3px 8px;
color: #4d4d4d;
}
#sidebar_wrap { float:right; width:260px; }
#sidebar {
z-index:0;
position:relative;
left:20px;
padding:0 10px 60px 10px;
width:200px;
background:#394649 url("images/sidebar.png") bottom no-repeat;
}
#sidebar_head {
z-index:-1;
position:absolute;
top:-220px;
left:-30px;
width:282px;
height:400px;
background:url("images/sidebar_head.png") top no-repeat;
}
#sidebar > h2 {
position:relative;
left:-40px;
margin:20px 0 0 0;
padding:19px 0 0 48px;
width:204px;
height:47px;
color:#fff;
background:url("images/sidebar_h2.png") no-repeat;
text-shadow:0 0 4px rgba(255,255,255,0.75);
letter-spacing:2px;
}
#sidebar > .news { display:block; margin-bottom:20px; padding:0 10px; }
#sidebar > .news > h3 { margin:0; color:#cdd1d1; font-size:18px; letter-spacing:2px; }
#sidebar > .news > p { margin:0; color:#99a0a1; }
#sidebar > .news:hover > h3 { color:#fff; text-shadow:0 0 4px rgba(255,255,255,0.75); }
#sidebar > .news:hover > p { color:#eee; text-shadow:0 0 4px rgba(255,255,255,0.5); }
#sidebar > .link {
display:block;
margin:0;
padding:15px 20px 0 20px;
height:41px;
color:#cdd1d1;
font-size:18px;
font-weight:bold;
}
#sidebar > .link:hover {
color:#fff;
text-shadow:0 0 4px rgba(255,255,255,0.75);
}
#link_forum { background:url("images/link_forum.png") top right no-repeat; }
#link_aporia { background:url("images/link_aporia.png") top right no-repeat; }
#link_nimbuild { background:url("images/link_nimbuild.png") top right no-repeat; }
/* site_foot */
#site_foot { z-index:3; clear:both; padding-top:40px; height:150px; background:url("images/site_foot.png") top no-repeat; }
#legal {
float:right;
margin-top:10px;
color:#88888f;
font-size:12px;
letter-spacing:1px;
}
#legal > a { color:#88888f; }
#legal > a:visited { color:#88888f; }
#legal > a:hover { color:#fff; }

View file

@ -1,97 +1,114 @@
Forum Nim's Community
===== ===============
The `Nim forum <http://forum.nim-lang.org/>`_ is the place where most .. container:: standout
discussions related to the language happen. It not only includes discussions
relating to the design of Nim but also allows for beginners to ask questions
relating to Nim.
IRC Forum
==== -----
Many Nim developers are a part of the The `Nim forum <http://forum.nim-lang.org/>`_ is the place where most
`#nim IRC channel <http://webchat.freenode.net/?channels=nim>`_ on discussions related to the language happen. It not only includes discussions
Freenode. That is the place where the rest of the discussion relating to Nim relating to the design of Nim but also allows for beginners to ask questions
occurs. Be sure to join us there if you wish to discuss Nim in real-time. relating to Nim.
IRC is the perfect place for people just starting to learn Nim and we
welcome any questions that you may have!
You may also be interested in reading the
`IRC logs <http://build.nim-lang.org/irclogs/>`_ which are an archive of all
of the previous discussions that took place in the IRC channel.
Github .. container:: standout
======
Nim's `source code <http://github.com/Araq/Nim>`_ is hosted on Github. IRC
Together with the `wiki <http://github.com/Araq/Nim/wiki>`_ and ----
`issue tracker <http://github.com/Araq/Nim/issues>`_.
Github also hosts other projects relating to Nim. These projects are a part Many Nim developers are a part of the
of the `nim-lang organisation <http://github.com/nim-lang>`_. `#nim IRC channel <http://webchat.freenode.net/?channels=nim>`_ on
This includes the `Babel package manager <http://github.com/nim-lang/babel>`_ Freenode. That is the place where the rest of the discussion relating to Nim
and its `package repository <http://github.com/nim-lang/packages>`_. occurs. Be sure to join us there if you wish to discuss Nim in real-time.
IRC is the perfect place for people just starting to learn Nim and we
welcome any questions that you may have!
Twitter You may also be interested in reading the
======= `IRC logs <http://irclogs.nim-lang.org/>`_ which are an archive of all
of the previous discussions that took place in the IRC channel.
Follow us `@nimlang <http://twitter.com/nimlang>`_ for latest news about
Nim.
Reddit .. container:: standout
======
Subscribe to `/r/nim <http://reddit.com/r/nim>`_ for latest news about Github
Nim. ------
StackOverflow Nim's `source code <http://github.com/Araq/Nim>`_ is hosted on Github.
============= Together with the `wiki <http://github.com/Araq/Nim/wiki>`_ and
`issue tracker <http://github.com/Araq/Nim/issues>`_.
When asking a question relating to Nim, be sure to use the Github also hosts other projects relating to Nim. These projects are a part
`Nim <http://stackoverflow.com/questions/tagged/nim>`_ tag in your of the `nim-lang organisation <http://github.com/nim-lang>`_.
question. This includes the `Babel package manager <http://github.com/nim-lang/babel>`_
and its `package repository <http://github.com/nim-lang/packages>`_.
How to help
===========
There are always many things to be done in the main .. container:: standout
`Nim repository <https://github.com/Araq/Nim>`_, check out the
`issues <https://github.com/Araq/Nim/issues>`_ for
things to do; pull requests are always welcome. You can
also contribute to the many other projects hosted by the
`nim-lang <https://github.com/nim-lang>`_ organisation on github. If you
can't find anything you fancy doing, you can always ask for inspiration on IRC
(irc.freenode.net #nim) or on the `Nim forums <http://forum.nim-lang.org>`_.
Donations Twitter
--------- -------
If you love what we do and are feeling generous then you can always donate. Follow us `@nimlang <http://twitter.com/nimlang>`_ for latest news about
Contributions of any quantity are greatly appreciated and will contribute to Nim.
making Nim even better!
Gittip .. container:: standout
``````
.. raw:: html Reddit
------
<iframe style="border: 0; margin: 0; padding: 0;" Subscribe to `/r/nim <http://reddit.com/r/nim>`_ for latest news about
src="https://www.gittip.com/Araq/widget.html" Nim.
width="48pt" height="22pt"></iframe>
Paypal .. container:: standout
``````
.. raw:: html StackOverflow
-------------
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> When asking a question relating to Nim, be sure to use the
<input type="hidden" name="cmd" value="_s-xclick"> `Nim <http://stackoverflow.com/questions/tagged/nim>`_ tag in your
<input type="hidden" name="hosted_button_id" value="ZQC6CVEEYNTLN"> question.
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>
Bitcoin .. container:: standout
```````
Bitcoin address: 1BXfuKM2uvoD6mbx4g5xM3eQhLzkCK77tJ How to help
-----------
There are always many things to be done in the main
`Nim repository <https://github.com/Araq/Nim>`_, check out the
`issues <https://github.com/Araq/Nim/issues>`_ for
things to do; pull requests are always welcome. You can
also contribute to the many other projects hosted by the
`nim-lang <https://github.com/nim-lang>`_ organisation on github. If you
can't find anything you fancy doing, you can always ask for inspiration on IRC
(irc.freenode.net #nim) or on the `Nim forums <http://forum.nim-lang.org>`_.
.. container:: standout
Donations
---------
If you love what we do and are feeling generous then you can always donate.
Contributions of any quantity are greatly appreciated and will contribute to
making Nim even better!
Gittip
.. raw:: html
<iframe style="border: 0; margin: 0; padding: 0;"
src="https://www.gittip.com/Araq/widget.html"
width="48pt" height="22pt"></iframe>
Paypal
.. raw:: html
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ZQC6CVEEYNTLN">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>
Bitcoin
Bitcoin address: 1BXfuKM2uvoD6mbx4g5xM3eQhLzkCK77tJ

View file

@ -1 +1,51 @@
.. include:: ../doc/docs.txt Nim's Documentation
===================
.. container:: standout
Standards & Guides
------------------
- | `Standard Library <lib.html>`_
| This document describes Nim's standard library.
- | `Language Manual <manual.html>`_
| The Nim manual is a draft that will evolve into a proper specification.
- | `Compiler user guide <nimc.html>`_
| The user guide lists command line arguments, special features of the
compiler, etc.
.. container:: standout
Tools & Features
----------------
- | `Source code filters <filters.html>`_
| The Nim compiler supports source code filters as a simple yet powerful
builtin templating system.
- | `Tools documentation <tools.html>`_
| Description of some tools that come with the standard distribution.
.. container:: standout
Internal Details
----------------
- | `Garbage Collector <gc.html>`_
| Additional documentation about Nim's GC and how to operate it in a
| realtime setting.
- | `Internal documentation <intern.html>`_
| The internal documentation describes how the compiler is implemented. Read
this if you want to hack the compiler.
Search Options
--------------
`Documentation Index <theindex.html>`_ - The generated index. **Index + (Ctrl+F) == Joy**

View file

@ -18,22 +18,6 @@ shared memory heap is also provided for the increased efficiency that results
from that model. from that model.
Nim looks like this:
====================
.. code-block:: nim
# compute average line length
var count = 0
var sum = 0
for line in stdin.lines:
count += 1
sum += line.len
echo "Average line length: ",
if count > 0: sum / count else: 0
Nim is efficient Nim is efficient
================ ================

44
web/learn.txt Normal file
View file

@ -0,0 +1,44 @@
Nim's Learning Resources
========================
.. container:: standout
Tutorials
---------
- | `Tutorial (part I) <tut1.html>`_
| Learn the basics of Nim's types, variables, procedures, control flow, etc...
- | `Tutorial (part II) <tut2.html>`_
| Learn Nim's more advanced features such as OOP, generics, macros, etc...
.. container:: standout
Examples
--------
- | `Nim by Example <http://nimrod-by-example.github.io/>`_
| Nim by Example is an excellent starting place for beginners.
- | `Nim on Rosetta Code <http://rosettacode.org/wiki/Category:Nimrod>`_
| Many different Nim code examples comparible to other langues for reference.
- | `Nim for C/C++ Programmers <https://github.com/Araq/Nimrod/wiki/Nimrod-for-C-programmers>`_
| A useful cheat-sheet for those most familiar with C/C++ languages.
.. container:: standout
Articles
--------
- `Dr Dobbs Nimrod Publication <http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321>`_
- `Bootstrapping Nim <http://goran.krampe.se/2014/10/15/bootstrapping-nim/>`_
Documentation
-------------
More examples of Nim code can be found in the `Nim Language Documenation <manual.html>`_.

View file

@ -78,8 +78,20 @@ News
exceptions (overflow, division by zero, etc.). exceptions (overflow, division by zero, etc.).
2014-10-19 Nimrod version 0.9.6 released 2014-12-09 New website design!
======================================== ==============================
A brand new website including an improved forum is now live.
All thanks go to Philip Witte and
Dominik Picheta, Philip Witte for the design of the website (together with
the logo) as well as the HTML and CSS code for his template, and Dominik Picheta
for integrating Philip's design with Nim's forum. We're sure you will
agree that Philip's design is beautiful.
2014-10-19 Version 0.9.6 released
=================================
**Note: 0.9.6 is the last release of Nimrod. The language is being renamed to **Note: 0.9.6 is the last release of Nimrod. The language is being renamed to
Nim. Nim slightly breaks compatibility.** Nim. Nim slightly breaks compatibility.**

View file

@ -9,13 +9,15 @@ Authors: "Andreas Rumpf and contributors"
# Everything after ; is the ID # Everything after ; is the ID
User_Forum: "http://forum.nim-lang.org;link_forum" User_Forum: "http://forum.nim-lang.org;link_forum"
Aporia_IDE: "https://github.com/nimrod-code/Aporia;link_aporia" Aporia_IDE: "https://github.com/nimrod-code/Aporia;link_aporia"
Nimbuild: "http://build.nim-lang.org;link_nimbuild" Github_Repo: "http://github.com/Araq/Nimrod;link_github"
[Tabs] [Tabs]
# Menu entry: filename # Menu entry: filename
home: index home: index
news: news news: news
docs: documentation docs: documentation
learn: learn
download: download download: download
community: community community: community
FAQ: question FAQ: question
@ -34,7 +36,7 @@ documentation: """Incorrect documentation is often worse than no documentation.
- Bertrand Meyer""" - Bertrand Meyer"""
download: """There are two major products that come out of Berkeley: LSD and download: """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.""" UNIX. We don't believe this to be a coincidence. - Jeremy S. Anderson."""
learn: """Repetition renders the ridiculous reasonable. - Norman Wildberger"""
[Documentation] [Documentation]
doc: "endb;intern;apis;lib;manual.txt;tut1;tut2;nimc;overview;filters" doc: "endb;intern;apis;lib;manual.txt;tut1;tut2;nimc;overview;filters"

View file

@ -6,136 +6,160 @@
General General
======= =======
What is Nim? .. container:: standout
------------
Nim (formerly known as "Nimrod") is a statically typed, imperative programming What is Nim?
language that tries to give the programmer ultimate power without compromises ------------
on runtime efficiency.
This means it focuses on compile-time mechanisms in all their Nim (formerly known as "Nimrod") is a statically typed, imperative programming
various forms. Beneath a nice infix/indentation based syntax with a language that tries to give the programmer ultimate power without compromises
powerful (AST based, hygienic) macro system lies a semantic model that supports on runtime efficiency.
a soft realtime GC on thread local heaps. Asynchronous message passing is used This means it focuses on compile-time mechanisms in all their
between threads, so no "stop the world" mechanism is necessary. An unsafe various forms. Beneath a nice infix/indentation based syntax with a
shared memory heap is also provided for the increased efficiency that results powerful (AST based, hygienic) macro system lies a semantic model that supports
from that model. a soft realtime GC on thread local heaps. Asynchronous message passing is used
between threads, so no "stop the world" mechanism is necessary. An unsafe
shared memory heap is also provided for the increased efficiency that results
from that model.
Why yet another programming language? .. container:: standout
-------------------------------------
Nim is one of the very few *programmable* statically typed languages, and Why yet another programming language?
one of the even fewer that produces native binaries that require no -------------------------------------
runtime or interpreter.
Nim is one of the very few *programmable* statically typed languages, and
one of the even fewer that produces native binaries that require no
runtime or interpreter.
What have been the major influences in the language's design? .. container:: standout
-------------------------------------------------------------
The language borrows heavily from (in order of impact): Modula 3, Delphi, Ada, What have been the major influences in the language's design?
C++, Python, Lisp, Oberon. -------------------------------------------------------------
The language borrows heavily from (in order of impact): Modula 3, Delphi, Ada,
C++, Python, Lisp, Oberon.
.. container:: standout
What is Nim's take on concurrency? What is Nim's take on concurrency?
---------------------------------- ----------------------------------
Nim primarily focusses on thread local (and garbage collected) heaps and Nim primarily focusses on thread local (and garbage collected) heaps and
message passing between threads. Each thread has its own GC, so no message passing between threads. Each thread has its own GC, so no
"stop the world" mechanism is necessary. An unsafe shared memory heap is also "stop the world" mechanism is necessary. An unsafe shared memory heap is also
provided. provided.
Future versions will additionally include a GC "per thread group" Future versions will additionally include a GC "per thread group"
and Nim's type system will be enhanced to accurately model this shared and Nim's type system will be enhanced to accurately model this shared
memory heap. memory heap.
How is Nim licensed? .. container:: standout
--------------------
The Nim compiler and the library are MIT licensed. How is Nim licensed?
This means that you can use any license for your own programs developed with --------------------
Nim.
The Nim compiler and the library are MIT licensed.
This means that you can use any license for your own programs developed with
Nim.
How stable is Nim? .. container:: standout
------------------
The compiler is in development and some important features are still missing. How stable is Nim?
However, the compiler is quite stable already: It is able to compile itself ------------------
and a substantial body of other code. Until version 1.0.0 is released,
minor incompatibilities with older versions of the compiler will be introduced. The compiler is in development and some important features are still missing.
However, the compiler is quite stable already: It is able to compile itself
and a substantial body of other code. Until version 1.0.0 is released,
minor incompatibilities with older versions of the compiler will be introduced.
How fast is Nim? .. container:: standout
----------------
Benchmarks show it to be comparable to C. Some language features (methods, How fast is Nim?
closures, message passing) are not yet as optimized as they could and will be. ----------------
The only overhead Nim has over C is the GC which has been tuned Benchmarks show it to be comparable to C. Some language features (methods,
for years but still needs some work. closures, message passing) are not yet as optimized as they could and will be.
The only overhead Nim has over C is the GC which has been tuned
for years but still needs some work.
What about JVM/CLR backends? .. container:: standout
----------------------------
A JVM backend is almost impossible. The JVM is not expressive enough. It has What about JVM/CLR backends?
never been designed as a general purpose VM anyway. A CLR backend is possible ----------------------------
but would require much work.
What about editor support? A JVM backend is almost impossible. The JVM is not expressive enough. It has
-------------------------- never been designed as a general purpose VM anyway. A CLR backend is possible
but would require much work.
- Nim IDE: https://github.com/nimrod-code/Aporia
- Emacs: https://github.com/Tass/nimrod-mode
- Vim: https://github.com/zah/nimrod.vim/
- Scite: Included
- Gedit: The `Aporia .lang file <https://github.com/nimrod-code/Aporia/blob/master/share/gtksourceview-2.0/language-specs/nimrod.lang>`_
- jEdit: https://github.com/exhu/nimrod-misc/tree/master/jedit
Why is it named ``proc``? .. container:: standout
-------------------------
*Procedure* used to be the common term as opposed to a *function* which is a What about editor support?
mathematical entity that has no side effects. It was planned to have ``func`` --------------------------
as syntactic sugar for ``proc {.noSideEffect.}`` but with the more fine-grained
effect system it is not yet clear what ``func`` should be a shortcut for. - Nim IDE: https://github.com/nimrod-code/Aporia
- Emacs: https://github.com/Tass/nimrod-mode
- Vim: https://github.com/zah/nimrod.vim/
- Scite: Included
- Gedit: The `Aporia .lang file <https://github.com/nimrod-code/Aporia/blob/master/share/gtksourceview-2.0/language-specs/nimrod.lang>`_
- jEdit: https://github.com/exhu/nimrod-misc/tree/master/jedit
.. container:: standout
Why is it named ``proc``?
-------------------------
*Procedure* used to be the common term as opposed to a *function* which is a
mathematical entity that has no side effects. It was planned to have ``func``
as syntactic sugar for ``proc {.noSideEffect.}`` but with the more fine-grained
effect system it is not yet clear what ``func`` should be a shortcut for.
Compilation Compilation
=========== ===========
Which option to use for the fastest executable? .. container:: standout
-----------------------------------------------
For the standard configuration file, ``-d:release`` does the trick. Which option to use for the fastest executable?
-----------------------------------------------
For the standard configuration file, ``-d:release`` does the trick.
Which option to use for the smallest executable? .. container:: standout
------------------------------------------------
For the standard configuration file, ``-d:quick --opt:size`` does the trick. Which option to use for the smallest executable?
------------------------------------------------
For the standard configuration file, ``-d:quick --opt:size`` does the trick.
How do I use a different C compiler than the default one? .. container:: standout
---------------------------------------------------------
Edit the ``config/nimrod.cfg`` file. How do I use a different C compiler than the default one?
Change the value of the ``cc`` variable to one of the following: ---------------------------------------------------------
============== ============================================ Edit the ``config/nimrod.cfg`` file.
Abbreviation C/C++ Compiler Change the value of the ``cc`` variable to one of the following:
============== ============================================
``vcc`` Microsoft's Visual C++
``gcc`` Gnu C
``llvm_gcc`` LLVM-GCC compiler
``icc`` Intel C++ compiler
``clang`` Clang compiler
``ucc`` Generic UNIX C compiler
============== ============================================
Other C compilers are not officially supported, but might work too. ============== ============================================
Abbreviation C/C++ Compiler
============== ============================================
``vcc`` Microsoft's Visual C++
``gcc`` Gnu C
``llvm_gcc`` LLVM-GCC compiler
``icc`` Intel C++ compiler
``clang`` Clang compiler
``ucc`` Generic UNIX C compiler
============== ============================================
If your C compiler is not in the above list, try using the Other C compilers are not officially supported, but might work too.
*generic UNIX C compiler* (``ucc``). If the C compiler needs
different command line arguments try the ``--passc`` and ``--passl`` switches. 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.

View file

@ -1,54 +1,21 @@
<a class="news" href="news.html#Z2014-12-09-new-website-design">
<h4>Dec 9, 2014</h4>
<p>The new website design and forum are now online!</p>
</a>
<a class="news" href="news.html#Z2014-10-19-version-0-9-6-released"> <a class="news" href="news.html#Z2014-10-19-version-0-9-6-released">
<h3>Oct 19, 2014</h3> <h4>Oct 19, 2014</h4>
<p>Nimrod version 0.9.6 has been released!</p> <p>Nimrod version 0.9.6 has been released!</p>
</a> </a>
<a class="news" href="news.html#Z2014-04-21-version-0-9-4-released">
<h3>Apr 21, 2014</h3>
<p>Nimrod version 0.9.4 has been released!</p>
</a>
<a class="news" href="news.html#Z2014-02-11-nimrod-featured-in-dr-dobb-s-journal"> <a class="news" href="news.html#Z2014-02-11-nimrod-featured-in-dr-dobb-s-journal">
<h3>Feb 11, 2014</h3> <h4>Feb 11, 2014</h4>
<p>Nimrod featured in Dr. Dobb's Journal</p> <p>Nimrod featured in Dr. Dobb's Journal</p>
</a> </a>
<a class="news" href="news.html#Z2014-01-15-andreas-rumpf-s-talk-on-nimrod-at-strange-loop-2013-is-now-online"> <a class="news" href="news.html#Z2014-01-15-andreas-rumpf-s-talk-on-nimrod-at-strange-loop-2013-is-now-online">
<h3>Jan 15, 2014</h3> <h4>Jan 15, 2014</h4>
<p>Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online.</p> <p>Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online.</p>
</a> </a>
<a class="news" href="news.html#Z2013-05-20-new-website-design"> <a href="news.html" class="blue">See All News...</a>
<h3>May 20, 2013</h3>
<p>New website design!</p>
</a>
<a class="news" href="news.html#Z2013-05-20-version-0-9-2-released">
<h3>May 20, 2013</h3>
<p>Nimrod version 0.9.2 has been released!</p>
</a>
<a class="news" href="news.html#Z2012-09-23-version-0-9-0-released">
<h3>Sep 23, 2012</h3>
<p>Nimrod version 0.9.0 has been released!</p>
</a>
<a class="news" href="news.html#Z2012-02-09-version-0-8-14-released">
<h3>Feb 9, 2012</h3>
<p>Nimrod version 0.8.14 has been released!</p>
</a>
<a class="news" href="news.html#Z2011-07-10-version-0-8-12-released">
<h3>Jul 10, 2011</h3>
<p>Nimrod version 0.8.12 has been released!</p>
</a>
<a class="news" href="news.html#Z2010-10-20-version-0-8-10-released">
<h3>Oct 20, 2010</h3>
<p>Nimrod version 0.8.10 has been released!</p>
</a>
<a class="news" href="news.html#Z2010-03-14-version-0-8-8-released">
<h3>Mar 14, 2010</h3>
<p>Nimrod version 0.8.8 has been released!</p>
</a>