diff --git a/web/assets/bountysource/bountysource.png b/web/assets/bountysource/bountysource.png deleted file mode 100644 index d92d75df063b3..0000000000000 Binary files a/web/assets/bountysource/bountysource.png and /dev/null differ diff --git a/web/assets/bountysource/meet_sponsors.png b/web/assets/bountysource/meet_sponsors.png deleted file mode 100644 index 67d7a1042d63b..0000000000000 Binary files a/web/assets/bountysource/meet_sponsors.png and /dev/null differ diff --git a/web/assets/bountysource/meet_sponsors.xcf b/web/assets/bountysource/meet_sponsors.xcf deleted file mode 100644 index e36560491bd32..0000000000000 Binary files a/web/assets/bountysource/meet_sponsors.xcf and /dev/null differ diff --git a/web/assets/bountysource/secondspectrum.png b/web/assets/bountysource/secondspectrum.png deleted file mode 100644 index 4dab35c6f74bc..0000000000000 Binary files a/web/assets/bountysource/secondspectrum.png and /dev/null differ diff --git a/web/assets/bountysource/xored.png b/web/assets/bountysource/xored.png deleted file mode 100644 index 7a07cdd31380a..0000000000000 Binary files a/web/assets/bountysource/xored.png and /dev/null differ diff --git a/web/assets/bountysource/xored.svg b/web/assets/bountysource/xored.svg deleted file mode 100644 index 17a4acde659d7..0000000000000 --- a/web/assets/bountysource/xored.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/web/assets/images/bg.png b/web/assets/images/bg.png deleted file mode 100644 index 91f335913d7c0..0000000000000 Binary files a/web/assets/images/bg.png and /dev/null differ diff --git a/web/assets/images/docs-articles.png b/web/assets/images/docs-articles.png deleted file mode 100644 index 7f800ea33ea7e..0000000000000 Binary files a/web/assets/images/docs-articles.png and /dev/null differ diff --git a/web/assets/images/docs-examples.png b/web/assets/images/docs-examples.png deleted file mode 100644 index e6d27e0348708..0000000000000 Binary files a/web/assets/images/docs-examples.png and /dev/null differ diff --git a/web/assets/images/docs-internals.png b/web/assets/images/docs-internals.png deleted file mode 100644 index e03a952d59a9f..0000000000000 Binary files a/web/assets/images/docs-internals.png and /dev/null differ diff --git a/web/assets/images/docs-libraries.png b/web/assets/images/docs-libraries.png deleted file mode 100644 index b14952f7dbc2c..0000000000000 Binary files a/web/assets/images/docs-libraries.png and /dev/null differ diff --git a/web/assets/images/docs-tools.png b/web/assets/images/docs-tools.png deleted file mode 100644 index d83f0faaaa627..0000000000000 Binary files a/web/assets/images/docs-tools.png and /dev/null differ diff --git a/web/assets/images/docs-tutorials.png b/web/assets/images/docs-tutorials.png deleted file mode 100644 index 926a4b58b1536..0000000000000 Binary files a/web/assets/images/docs-tutorials.png and /dev/null differ diff --git a/web/assets/images/favicon.ico b/web/assets/images/favicon.ico deleted file mode 100644 index aed71adb4eb2b..0000000000000 Binary files a/web/assets/images/favicon.ico and /dev/null differ diff --git a/web/assets/images/foot.png b/web/assets/images/foot.png deleted file mode 100644 index dc2561cf35c79..0000000000000 Binary files a/web/assets/images/foot.png and /dev/null differ diff --git a/web/assets/images/glow-arrow.png b/web/assets/images/glow-arrow.png deleted file mode 100644 index 436d32f038c88..0000000000000 Binary files a/web/assets/images/glow-arrow.png and /dev/null differ diff --git a/web/assets/images/glow-line.png b/web/assets/images/glow-line.png deleted file mode 100644 index 6607bdee90e9b..0000000000000 Binary files a/web/assets/images/glow-line.png and /dev/null differ diff --git a/web/assets/images/head-link.png b/web/assets/images/head-link.png deleted file mode 100644 index d97cba5b81c36..0000000000000 Binary files a/web/assets/images/head-link.png and /dev/null differ diff --git a/web/assets/images/head-link_hover.png b/web/assets/images/head-link_hover.png deleted file mode 100644 index 27edf3b05db44..0000000000000 Binary files a/web/assets/images/head-link_hover.png and /dev/null differ diff --git a/web/assets/images/head.png b/web/assets/images/head.png deleted file mode 100644 index 009f86728e96f..0000000000000 Binary files a/web/assets/images/head.png and /dev/null differ diff --git a/web/assets/images/link_aporia.png b/web/assets/images/link_aporia.png deleted file mode 100644 index 145e5ddf22b4e..0000000000000 Binary files a/web/assets/images/link_aporia.png and /dev/null differ diff --git a/web/assets/images/link_forum.png b/web/assets/images/link_forum.png deleted file mode 100644 index 2973b42bc1476..0000000000000 Binary files a/web/assets/images/link_forum.png and /dev/null differ diff --git a/web/assets/images/link_nimbuild.png b/web/assets/images/link_nimbuild.png deleted file mode 100644 index 4b3f943fe73ba..0000000000000 Binary files a/web/assets/images/link_nimbuild.png and /dev/null differ diff --git a/web/assets/images/logo.png b/web/assets/images/logo.png deleted file mode 100644 index 85d3d2e516921..0000000000000 Binary files a/web/assets/images/logo.png and /dev/null differ diff --git a/web/assets/images/mascot.png b/web/assets/images/mascot.png deleted file mode 100644 index 9beb62c017afc..0000000000000 Binary files a/web/assets/images/mascot.png and /dev/null differ diff --git a/web/assets/images/more-links_editors.png b/web/assets/images/more-links_editors.png deleted file mode 100644 index f5970ff1f6b4e..0000000000000 Binary files a/web/assets/images/more-links_editors.png and /dev/null differ diff --git a/web/assets/images/more-links_forum.png b/web/assets/images/more-links_forum.png deleted file mode 100644 index f332777772528..0000000000000 Binary files a/web/assets/images/more-links_forum.png and /dev/null differ diff --git a/web/assets/images/more-links_github.png b/web/assets/images/more-links_github.png deleted file mode 100644 index 4a6a844f421c5..0000000000000 Binary files a/web/assets/images/more-links_github.png and /dev/null differ diff --git a/web/assets/images/more-links_nimbuild.png b/web/assets/images/more-links_nimbuild.png deleted file mode 100644 index 473fbe4cdd612..0000000000000 Binary files a/web/assets/images/more-links_nimbuild.png and /dev/null differ diff --git a/web/assets/images/nim-logo.svg b/web/assets/images/nim-logo.svg deleted file mode 100644 index feae6c3d7ea81..0000000000000 --- a/web/assets/images/nim-logo.svg +++ /dev/null @@ -1,500 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/web/assets/images/quote.png b/web/assets/images/quote.png deleted file mode 100644 index e9426158c380e..0000000000000 Binary files a/web/assets/images/quote.png and /dev/null differ diff --git a/web/assets/images/quotes.png b/web/assets/images/quotes.png deleted file mode 100644 index 0d75b4cc209b6..0000000000000 Binary files a/web/assets/images/quotes.png and /dev/null differ diff --git a/web/assets/images/sidebar.png b/web/assets/images/sidebar.png deleted file mode 100644 index 142db93cf81d9..0000000000000 Binary files a/web/assets/images/sidebar.png and /dev/null differ diff --git a/web/assets/images/sidebar_h2.png b/web/assets/images/sidebar_h2.png deleted file mode 100644 index d1409b57f9b2a..0000000000000 Binary files a/web/assets/images/sidebar_h2.png and /dev/null differ diff --git a/web/assets/images/sidebar_head.png b/web/assets/images/sidebar_head.png deleted file mode 100644 index 05885d9f37026..0000000000000 Binary files a/web/assets/images/sidebar_head.png and /dev/null differ diff --git a/web/assets/images/site_foot.png b/web/assets/images/site_foot.png deleted file mode 100644 index a2efa0460d495..0000000000000 Binary files a/web/assets/images/site_foot.png and /dev/null differ diff --git a/web/assets/images/site_neck.png b/web/assets/images/site_neck.png deleted file mode 100644 index d4f42c6b7a56d..0000000000000 Binary files a/web/assets/images/site_neck.png and /dev/null differ diff --git a/web/assets/images/slideshow-nav.png b/web/assets/images/slideshow-nav.png deleted file mode 100644 index fbfff3e5dff79..0000000000000 Binary files a/web/assets/images/slideshow-nav.png and /dev/null differ diff --git a/web/assets/images/slideshow-nav_active.png b/web/assets/images/slideshow-nav_active.png deleted file mode 100644 index 525caf3558c3e..0000000000000 Binary files a/web/assets/images/slideshow-nav_active.png and /dev/null differ diff --git a/web/assets/images/tabEnd.png b/web/assets/images/tabEnd.png deleted file mode 100644 index a94af90f1e20e..0000000000000 Binary files a/web/assets/images/tabEnd.png and /dev/null differ diff --git a/web/assets/index.js b/web/assets/index.js deleted file mode 100644 index 4c8b90f95db41..0000000000000 --- a/web/assets/index.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; - -var timer; -var prevIndex = 0; -var slideCount = 4; - -function modifyActive(el, add) { - var element = document.getElementById(el); - if (add) { - element.className = element.className + " active"; - } - else { - element.className = element.className.replace("active", ""); - } -} - -function setSlideShow(index, short) { - if (index >= slideCount) index = 0; - modifyActive("slide" + prevIndex, false); - modifyActive("slide" + index, true); - modifyActive("slideControl" + prevIndex, false); - modifyActive("slideControl" + index, true); - 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; - slideCount = slideshow.children.length; - startTimer(8000); -}; diff --git a/web/assets/news/images/0.15.0/doc_search.gif b/web/assets/news/images/0.15.0/doc_search.gif deleted file mode 100644 index ac757b404b522..0000000000000 Binary files a/web/assets/news/images/0.15.0/doc_search.gif and /dev/null differ diff --git a/web/assets/news/images/0.15.0/doc_sort.gif b/web/assets/news/images/0.15.0/doc_sort.gif deleted file mode 100644 index edd253c4a28bf..0000000000000 Binary files a/web/assets/news/images/0.15.0/doc_sort.gif and /dev/null differ diff --git a/web/assets/news/images/0.16.0/nimble.png b/web/assets/news/images/0.16.0/nimble.png deleted file mode 100644 index 8faa3f04fad87..0000000000000 Binary files a/web/assets/news/images/0.16.0/nimble.png and /dev/null differ diff --git a/web/assets/news/images/survey/10_needs.png b/web/assets/news/images/survey/10_needs.png deleted file mode 100644 index 67d5685523466..0000000000000 Binary files a/web/assets/news/images/survey/10_needs.png and /dev/null differ diff --git a/web/assets/news/images/survey/book.png b/web/assets/news/images/survey/book.png deleted file mode 100644 index 5bb418e635f81..0000000000000 Binary files a/web/assets/news/images/survey/book.png and /dev/null differ diff --git a/web/assets/news/images/survey/book_opinion.png b/web/assets/news/images/survey/book_opinion.png deleted file mode 100644 index 4e56ab26efd09..0000000000000 Binary files a/web/assets/news/images/survey/book_opinion.png and /dev/null differ diff --git a/web/assets/news/images/survey/breakage.png b/web/assets/news/images/survey/breakage.png deleted file mode 100644 index 5eb4c5289a0d9..0000000000000 Binary files a/web/assets/news/images/survey/breakage.png and /dev/null differ diff --git a/web/assets/news/images/survey/dev_os.png b/web/assets/news/images/survey/dev_os.png deleted file mode 100644 index 088918dc30f6f..0000000000000 Binary files a/web/assets/news/images/survey/dev_os.png and /dev/null differ diff --git a/web/assets/news/images/survey/difficulty_fixing_breakage.png b/web/assets/news/images/survey/difficulty_fixing_breakage.png deleted file mode 100644 index 022aa00ed8bf1..0000000000000 Binary files a/web/assets/news/images/survey/difficulty_fixing_breakage.png and /dev/null differ diff --git a/web/assets/news/images/survey/do_you_use_nim.png b/web/assets/news/images/survey/do_you_use_nim.png deleted file mode 100644 index 257148325c33d..0000000000000 Binary files a/web/assets/news/images/survey/do_you_use_nim.png and /dev/null differ diff --git a/web/assets/news/images/survey/domains.png b/web/assets/news/images/survey/domains.png deleted file mode 100644 index 50b1ed7ff3975..0000000000000 Binary files a/web/assets/news/images/survey/domains.png and /dev/null differ diff --git a/web/assets/news/images/survey/editors.png b/web/assets/news/images/survey/editors.png deleted file mode 100644 index 816ad515f0536..0000000000000 Binary files a/web/assets/news/images/survey/editors.png and /dev/null differ diff --git a/web/assets/news/images/survey/ex_nim.png b/web/assets/news/images/survey/ex_nim.png deleted file mode 100644 index 50082ea8bfa83..0000000000000 Binary files a/web/assets/news/images/survey/ex_nim.png and /dev/null differ diff --git a/web/assets/news/images/survey/languages.png b/web/assets/news/images/survey/languages.png deleted file mode 100644 index db35f9bd47ced..0000000000000 Binary files a/web/assets/news/images/survey/languages.png and /dev/null differ diff --git a/web/assets/news/images/survey/learning_resources.png b/web/assets/news/images/survey/learning_resources.png deleted file mode 100644 index 39f533ad02176..0000000000000 Binary files a/web/assets/news/images/survey/learning_resources.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_appeal.png b/web/assets/news/images/survey/nim_appeal.png deleted file mode 100644 index 4f53e14478981..0000000000000 Binary files a/web/assets/news/images/survey/nim_appeal.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_at_work.png b/web/assets/news/images/survey/nim_at_work.png deleted file mode 100644 index f00ab1a947b8a..0000000000000 Binary files a/web/assets/news/images/survey/nim_at_work.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_displeasing.png b/web/assets/news/images/survey/nim_displeasing.png deleted file mode 100644 index b7232df049116..0000000000000 Binary files a/web/assets/news/images/survey/nim_displeasing.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_domains.png b/web/assets/news/images/survey/nim_domains.png deleted file mode 100644 index 2d8fc6652b640..0000000000000 Binary files a/web/assets/news/images/survey/nim_domains.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_found.png b/web/assets/news/images/survey/nim_found.png deleted file mode 100644 index a0a65b81394f2..0000000000000 Binary files a/web/assets/news/images/survey/nim_found.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_time.png b/web/assets/news/images/survey/nim_time.png deleted file mode 100644 index 23bc4a1369e49..0000000000000 Binary files a/web/assets/news/images/survey/nim_time.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_time_rust.png b/web/assets/news/images/survey/nim_time_rust.png deleted file mode 100644 index 9b861608ac570..0000000000000 Binary files a/web/assets/news/images/survey/nim_time_rust.png and /dev/null differ diff --git a/web/assets/news/images/survey/nim_versions.png b/web/assets/news/images/survey/nim_versions.png deleted file mode 100644 index ba382c93dda8d..0000000000000 Binary files a/web/assets/news/images/survey/nim_versions.png and /dev/null differ diff --git a/web/assets/news/images/survey/nimble_opinion.png b/web/assets/news/images/survey/nimble_opinion.png deleted file mode 100644 index 3fe76326e7562..0000000000000 Binary files a/web/assets/news/images/survey/nimble_opinion.png and /dev/null differ diff --git a/web/assets/news/images/survey/non_user.png b/web/assets/news/images/survey/non_user.png deleted file mode 100644 index b5324b69ce3cf..0000000000000 Binary files a/web/assets/news/images/survey/non_user.png and /dev/null differ diff --git a/web/assets/news/images/survey/planning_to_use_at_work.png b/web/assets/news/images/survey/planning_to_use_at_work.png deleted file mode 100644 index b3e2001c357a7..0000000000000 Binary files a/web/assets/news/images/survey/planning_to_use_at_work.png and /dev/null differ diff --git a/web/assets/news/images/survey/project_size.png b/web/assets/news/images/survey/project_size.png deleted file mode 100644 index ad1359d0c7093..0000000000000 Binary files a/web/assets/news/images/survey/project_size.png and /dev/null differ diff --git a/web/assets/news/images/survey/project_size_nim_rust.png b/web/assets/news/images/survey/project_size_nim_rust.png deleted file mode 100644 index 4bc0e6b47b563..0000000000000 Binary files a/web/assets/news/images/survey/project_size_nim_rust.png and /dev/null differ diff --git a/web/assets/news/images/survey/project_size_work.png b/web/assets/news/images/survey/project_size_work.png deleted file mode 100644 index fab6e52f27d35..0000000000000 Binary files a/web/assets/news/images/survey/project_size_work.png and /dev/null differ diff --git a/web/assets/news/images/survey/reliability.png b/web/assets/news/images/survey/reliability.png deleted file mode 100644 index 1767e9803cab7..0000000000000 Binary files a/web/assets/news/images/survey/reliability.png and /dev/null differ diff --git a/web/assets/news/images/survey/target_os.png b/web/assets/news/images/survey/target_os.png deleted file mode 100644 index a36915af1106c..0000000000000 Binary files a/web/assets/news/images/survey/target_os.png and /dev/null differ diff --git a/web/assets/niminaction/banner.jpg b/web/assets/niminaction/banner.jpg deleted file mode 100644 index b2fb3efc94f72..0000000000000 Binary files a/web/assets/niminaction/banner.jpg and /dev/null differ diff --git a/web/assets/niminaction/banner2.png b/web/assets/niminaction/banner2.png deleted file mode 100644 index 3cabd195d428a..0000000000000 Binary files a/web/assets/niminaction/banner2.png and /dev/null differ diff --git a/web/assets/style.css b/web/assets/style.css deleted file mode 100644 index 2e166530d6999..0000000000000 --- a/web/assets/style.css +++ /dev/null @@ -1,630 +0,0 @@ - -* { cursor:default; } -a, a * { cursor:pointer; } - -html { margin:0; overflow-x:auto; } -body { - overflow-x:hidden; - min-width:1030px; - margin:0; - font:13pt "arial"; - background:#152534 url("images/bg.png") no-repeat center top; - color:rgba(0,0,0,.8); } - -pre { - color:#fff; - margin:0; - padding:15px 10px; - font:10pt monospace; - 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); } -pre, pre * { cursor:text; } -pre .cmt { color:rgb(255,229,106); } -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; } -pre .prg { color:#854D6A; font-weight:bold; font-style:italic; } -pre .val { color:#8AB647; } -pre .tab { border-left:1px dotted rgba(67,168,207,0.4); } -pre .end { background:url("images/tabEnd.png") no-repeat left bottom; } - -.page pre { background:rgba(0,0,0,.8); } -.page pre > .Comment { color:rgb(255,229,106); } -.page pre > .Keyword { color:#43A8CF; font-weight:bold; } -.page pre > .StringLit, -.page pre > .DecNumber { color:#8AB647; } - -.tall { height:100%; } -.pre { padding:1px 5px; font:11pt monospace; background:#96A9B7; 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; height: 1000px; } - #slideshow > div { - position:absolute; - margin:30px 0 0 10px; - visibility:hidden; - opacity:0; - 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:341px; left:18px; } - #slideshow-nav > div { display:inline-block; 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; } - - .niaslide a img { - width: 542px; - box-shadow: 1px 2px 16px rgba(28, 180, 236, 0.4); - margin-left: 4em; - margin-top: -1em; - } - - .codeslide1 { float:left; width:680px; font:10pt monospace; } - .codeslide1 > div:first-child { margin:0 40px 0 0; } - .codeslide1 h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); } - .codeslide1 .desc { margin:0 0 5px 0; color:rgba(162,198,223,.78); font:13pt "arial"; } - - .codeslide2 > div { float:left; width:320px; font:10pt monospace; } - .codeslide2 > div:first-child { margin:0 40px 0 0; } - .codeslide2 h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); } - - .codeslide3 > div { float:left; width:320px; font:10pt monospace; } - .codeslide3 > div:first-child { margin:0 40px 0 0; } - .codeslide3 h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); } - - .codeslide3 .desc { margin:0 0 5px 0; color:rgba(162,198,223,.78); font:13pt "arial"; } - - /* back when slide1 was the quote: - #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,0.8); } -#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:1220px; 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; } - #content a { color:#0E65D1; text-decoration:none; } - #content a:hover { text-decoration:underline; } - #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:0; - border-top-width:0; - border-bottom-width:0; - border-radius:3px; - background:rgba(0,0,0,0.1); } - .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 .tools ul { list-style:url("images/docs-tools.png"); } - .standout .libraries ul { list-style:url("images/docs-libraries.png"); } - .standout .internals ul { list-style:url("images/docs-internals.png"); } - .standout .tutorials ul { list-style:url("images/docs-tutorials.png"); } - .standout .examples ul { list-style:url("images/docs-examples.png"); } - .standout .articles ul { list-style:url("images/docs-articles.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 p > 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; } - - -#body .docutils th { - border-bottom: 2px solid #1A1A1A; - font-weight: normal; - padding: 8px; } -#body table.docutils { - border-collapse: collapse; - text-align: left; - border-spacing: 0px; } - -#bountysource { - width: 100%; - height: 30px; - background-color: #19975d; -} - -#bountysource a, #bountysource a:visited, #bountysource a:hover { - color: #1a1a1a; -} - -/* Current sponsors page */ - -dt { - font-size: 20pt; - clear: both; - margin-bottom: 10pt; -} - -dd.logo { - width: 200px; - min-height: 50px; - margin-bottom: 10pt; - margin-right: 20pt; - float: left; -} - -dd.logo img { - max-height: 200px; -} - -dd.this_month { - font-size: 20pt; -} - -dt a, dt a:visited, dt a:hover { - color: #1d1d1d !important; -} - -dt.level-1 { - color: #2f2f2f !important; -} - -p.lastUpdate { - font-size: 12pt; - color: #6d6d6d; -} - -/* quotes */ - -blockquote { - padding: 0px 8px; - margin: 10px 0px; - border-left: 2px solid rgb(61, 61, 61); - color: rgb(109, 109, 109); -} - -/* News articles */ - -.metadata { - font-size: 12pt; - margin-bottom: 20pt; - margin-top: -16pt; - color: #4f4f4f; -} - diff --git a/web/assets/zeo/banner.jpg b/web/assets/zeo/banner.jpg deleted file mode 100644 index f09b000de0a7b..0000000000000 Binary files a/web/assets/zeo/banner.jpg and /dev/null differ diff --git a/web/community.rst b/web/community.rst deleted file mode 100644 index fefa4c4b649fe..0000000000000 --- a/web/community.rst +++ /dev/null @@ -1,150 +0,0 @@ -Nim's Community -=============== - -.. container:: standout - - Forum - ----- - - The `Nim forum `_ is the place where most - 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. - - -.. container:: standout - - Mailing list - ------------ - - The mailing list can be found here: http://www.freelists.org/list/nim-dev - There is no consensus yet about what is discussed via the forum as opposed - to the mailing list. Join whatever you like! - - -.. container:: standout - - IRC - ---- - - Many Nim developers are a part of the - `#nim IRC channel `_ on - Freenode. That is the place where the rest of the discussion relating to Nim - 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! - - You may also be interested in reading the - `IRC logs `_ which are an archive of all - of the previous discussions that took place in the IRC channel. - - -.. container:: standout - - GitHub - ------ - - Nim's `source code `_ is hosted on GitHub. - Together with the `wiki `_ and - `issue tracker `_. - - GitHub also hosts other projects relating to Nim. These projects are a part - of the `nim-lang organisation `_. - This includes the `Nimble package manager `_ - and its `package repository `_. - - -.. container:: standout - - Twitter - ------- - - Follow us `@nim_lang `_ for latest news about - Nim. - -.. container:: standout - - Reddit - ------ - - Subscribe to `/r/nim `_ for latest news about - Nim. - -.. container:: standout - - StackOverflow - ------------- - - When asking a question relating to Nim, be sure to use the - `Nim `_ tag in your - question. - -.. container:: standout - - Google+ - ------- - - The `G+ Nim community `_ is another place where discussions related to the language happen. Read and follow various articles, posts and interesting links about Nim. - -.. container:: standout - - Gitter - ------ - - The `Gitter Chatroom for Nim `_ is the persistent logged "natural" chatroom for GitHub repositories and very easy to access for GitHub users. This does not need additional software and can send notifications about messages by email. - -.. container:: standout - - Meetup - ------ - - The `Nim BR Meetup `_ is a brazilian user group about Nim where they are having discussions, talks or workshops about Nim programming language. - -.. container:: standout - - How to help - ----------- - - There are always many things to be done in the main - `Nim repository `_, check out the - `issues `_ for - things to do; pull requests are always welcome. You can - also contribute to the many other projects hosted by the - `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 `_. - - -.. 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 - - - - BountySource - - .. raw:: html - - - - Paypal - .. raw:: html - -
- - - - -
- - - Bitcoin - Bitcoin address: 1BXfuKM2uvoD6mbx4g5xM3eQhLzkCK77tJ diff --git a/web/documentation.rst b/web/documentation.rst deleted file mode 100644 index ec33d0827a65a..0000000000000 --- a/web/documentation.rst +++ /dev/null @@ -1,70 +0,0 @@ -Nim's Documentation -=================== - -.. container:: standout - - Search Options - -------------- - - .. container:: internals - - `Documentation Index `_ - The generated - index. **Index + (Ctrl+F) == Joy** - -.. container:: standout - - Standards & Guides - ------------------ - - .. container:: libraries - - - | `Standard Library `_ - | This document describes Nim's standard library. - - - | `Language Manual `_ - | The Nim manual is a draft that will evolve into a proper specification. - - - | `Nim Style Guide `_ - | The stylistic conventions that Nim's official projects adhere to. - - - | `Compiler User Guide `_ - | The user guide lists command line arguments, special features of the - compiler, etc. - - - | `NimScript `_ - | NimScript is the upcoming new way to configure Nim. - - - | `Nim Backend Integration `_ - | The Backend Integeration guide gives further information of how Nim can - interact with C, C++, Objective C and JavaScript. - - -.. container:: standout - - Tools & Features - ---------------- - - .. container:: tools - - - | `Source Code Filters `_ - | The Nim compiler supports source code filters as a simple yet powerful - builtin templating system. - - - | `Tools Documentation `_ - | Description of some tools that come with the standard distribution. - - -.. container:: standout - - Internal Details - ---------------- - - .. container:: internals - - - | `Garbage Collector `_ - | Additional documentation about Nim's GC and how to operate it in a - realtime setting. - - - | `Internal Documentation `_ - | The internal documentation describes how the compiler is implemented. - Read this if you want to hack the compiler. diff --git a/web/download.rst b/web/download.rst deleted file mode 100644 index dd086cbaa008a..0000000000000 --- a/web/download.rst +++ /dev/null @@ -1,115 +0,0 @@ -Download the compiler -===================== - -You can download the latest version of the Nim compiler here. - -Windows -------- - -Zips -%%%% - -Since the website moved to https, only installation via the provided zipfiles -is supported: - -* | 32 bit: `nim-0.16.0_x32.zip `_ - | SHA-256 69af94a6875a02543c1bf0fa03c665f126f8500a2c0e226c32571e64c6842e57 -* | 64 bit: `nim-0.16.0_x64.zip `_ - | SHA-256 e667cdad1ae8e9429147aea5031fa8a80c4ccef6d274cec0e9480252d9c3168c - -Unzip these where you want and **optionally** run ``finish.exe`` to -detect your MingW environment. (Though that's not reliable yet.) - -You can find the required DLLs here, if you lack them for some reason: - -* | 32 and 64 bit: `DLLs.zip `_ - | SHA-256 198112d3d6dc74d7964ba452158d44bfa57adef4dc47be8c39903f2a24e4a555 - - -These versions of mingw are known to work: - -* | 32 bit: `mingw32-6.3.0 `_ - | SHA-256 1239a56d4c42e146b2cb25dc4d0871bd83f569d0a51a9198e84d010e0a75745a -* | 64 bit: `mingw64-6.3.0 `_ - | SHA-256 9a23d12d96a10e67093c1f2042275c6a7d29da9e2ead573d0f24f4a6d53761a1 - - - -Installation based on generated C code --------------------------------------- - -**Note:** The Nim compiler requires a C compiler to compile software. On -Windows we recommend that you use -`Mingw-w64 `_. GCC is recommended on Linux -and Clang on Mac. The Windows installers above already includes a C compiler. - -This installation method is the preferred way for Linux, Mac OS X, and other Unix -like systems. - -Firstly, download this archive: - -* | `nim-0.16.0.tar.xz (2.9MB) `_ - | SHA-256 9e199823be47cba55e62dd6982f02cf0aad732f369799fec42a4d8c2265c5167 - -Extract the archive. Then copy the extracted files into your chosen installation -directory, ideally somewhere in your home directory. -For example: ``~/programs/nim``. - -Now open a terminal and follow these instructions: - -* ``cd`` into your installation directory, for example by executing -``cd ~/programs/nim``. -* run ``sh build.sh``. -* Add ``$your_install_dir/bin`` to your PATH. -* To build associated tools like ``nimble`` and ``nimsuggest`` run ``nim c koch && ./koch tools``. - -After restarting your terminal, you should be able to run ``nim -v`` -which should show you the version of Nim you just installed. - -There are other ways to install Nim (like using the ``install.sh`` script), -but these tend to cause more problems. - - -Bleeding edge installation from GitHub --------------------------------------- - -`GitHub `_ is where Nim's development takes -place. You may wish to grab the latest development version of Nim, because -sometimes bug fixes and new features may not have made it to an official -release yet. In those circumstances you are better off grabbing the -current development branch. - -You will also need to do this if you would like to contribute to Nim. - -Before you download the code, open a new terminal and ``cd`` into the -directory where you would like the download to take place. - -The following commands can be used to download the current development branch -and then to build it:: - - git clone https://github.com/nim-lang/Nim.git - cd Nim - git clone --depth 1 https://github.com/nim-lang/csources - cd csources && sh build.sh - cd .. - bin/nim c koch - ./koch boot -d:release - -You should then add the ``./bin`` (make sure to expand this into an -absolute path) directory to your ``PATH``. - - -Docker Hub ----------- - -The `official Docker images `_ -are published on Docker Hub and include the compiler and Nimble. There are images -for standalone scripts as well as Nimble packages. - -Get the latest stable image:: - - docker pull nimlang/nim - -The latest development version:: - - docker pull nimlang/nim:devel diff --git a/web/inactive_sponsors.csv b/web/inactive_sponsors.csv deleted file mode 100644 index 6352bc194eecb..0000000000000 --- a/web/inactive_sponsors.csv +++ /dev/null @@ -1,57 +0,0 @@ -logo, name, url, this_month, all_time, since, level -,bogen,,0,1010,"Jul 23, 2016",1 -,mikra,,0,400,"Apr 28, 2016",1 -,shkolnick-kun,,0,375,"Jul 6, 2016",1 -,"Chris Heller",,0,350,"May 19, 2016",1 -,linkmonitor,,0,280,"Jan 28, 2016",1 -,avsej,,0,110,"Jun 10, 2016",1 -,WilRubin,,0,100,"Aug 11, 2015",1 -,"Benny Luypaert",,0,100,"Apr 10, 2016",1 -,PhilipWitte,,0,100,"Aug 5, 2016",1 -,skunkiferous,,0,100,"Oct 2, 2016",1 -,"Jonathan Arnett",,0,90,"May 20, 2016",1 -,Boxifier,,0,75,"Apr 12, 2016",1 -,iolloyd,,0,75,"Apr 29, 2016",1 -,btbytes,,0,70,"Apr 6, 2016",1 -,rb01,,0,50,"May 4, 2016",1 -,barcharcraz,,0,50,"Jun 2, 2016",1 -,zachaysan,,0,50,"Jun 7, 2016",1 -,kunev,,0,50,"Dec 26, 2016",1 -,iboB,,0,50,"Jan 28, 2017",1 -,TedSinger,,0,45,"Apr 9, 2016",1 -,johnnovak,,0,45,"Apr 30, 2016",1 -,"Matthew Baulch",,0,40,"Jun 7, 2016",1 -,"Matthew Newton",,0,35,"Apr 20, 2016",1 -,martinbbjerregaard,,0,35,"Jun 9, 2016",1 -,RationalG,,0,30,"Jun 17, 2016",1 -,benbve,,0,30,"Jul 12, 2016",1 -,multikatt,,0,30,"Nov 2, 2016",1 -,"Landon Bass",,0,25,"Jun 7, 2016",1 -,jimrichards,,0,25,"Jun 8, 2016",1 -,jjzazuet,,0,25,"Jul 10, 2016",1 -,kteza1,,0,20,"Jun 10, 2016",1 -,tomkeus,,0,20,"Sep 4, 2016",1 -,csoriano89,,0,20,"Sep 7, 2016",1 -,juanjux,,0,20,"Oct 29, 2016",1 -,zagfai,,0,20,"Nov 3, 2016",1 -,hellcoderz,,0,20,"Jan 24, 2017",1 -,mirek,,0,15,"Apr 9, 2016",1 -,DateinAsia,,0,15,"Jul 30, 2016",1 -,rickc,,0,15,"Jul 31, 2016",1 -,jpkx1984,,0,13,"Jul 11, 2016",1 -,vlkrav,,0,12,"Aug 9, 2015",1 -,tebanep,,0,12,"Aug 7, 2016",1 -,McSpiros,,0,10,"Apr 6, 2016",1 -,"Brandon Hunter",,0,10,"Apr 7, 2016",1 -,funny-falcon,,0,10,"Apr 7, 2016",1 -,teroz,,0,10,"Apr 8, 2016",1 -,iLikeLego,,0,10,"Apr 16, 2016",1 -,Angluca,,0,10,"May 3, 2016",1 -,calind,,0,10,"Jun 7, 2016",1 -,goldenreign,,0,10,"Jun 10, 2016",1 -,Blumenversand,,0,10,"Jul 21, 2016",1 -,cinnabardk,,0,10,"Aug 6, 2016",1 -,reddec,,0,10,"Aug 31, 2016",1 -,cupen,,0,10,"Nov 21, 2016",1 -,yay,,0,10,"Jan 25, 2017",1 -,niv,,0,5,"Apr 6, 2016",1 diff --git a/web/index.rst b/web/index.rst deleted file mode 100644 index 4b712fa3b62f1..0000000000000 --- a/web/index.rst +++ /dev/null @@ -1,89 +0,0 @@ -==== -Home -==== - -Welcome to Nim --------------- - -**Nim** is a statically typed, imperative -programming 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 various forms. - -Beneath a nice infix/indentation based syntax with a -powerful (AST based, hygienic) macro system lies a semantic model that supports -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. - - -Nim is efficient -================ - -* Native code generation (currently via compilation to C), not dependent on a - virtual machine: **Nim produces small executables without dependencies - for easy redistribution.** -* A fast **non-tracing** garbage collector that supports soft - real-time systems (like games). -* System programming features: Ability to manage your own memory and access the - hardware directly. Pointers to garbage collected memory are distinguished - from pointers to manually managed memory. -* Zero-overhead iterators. -* Cross-module inlining. -* Dynamic method binding with inlining and without virtual method table. -* Compile time evaluation of user-defined functions. -* Whole program dead code elimination: Only *used functions* are included in - the executable. -* Value-based datatypes: For instance, objects and arrays can be allocated on - the stack. - - -Nim is expressive -================= - -* **The Nim compiler and all of the standard libraries are implemented in - Nim.** -* Built-in high level datatypes: strings, sets, sequences, etc. -* Modern type system with local type inference, tuples, variants, - generics, etc. -* User-defineable operators; code with new operators is often easier to read - than code which overloads built-in operators. For example, a - ``=~`` operator is defined in the ``re`` module. -* Macros can modify the abstract syntax tree at compile time. - - -Nim is elegant -============== - -* Macros can use the imperative paradigm to construct parse trees. Nim - does not require a different coding style for meta programming. -* Macros cannot change Nim's syntax because there is no need for it. - Nim's syntax is flexible enough. -* Statements are grouped by indentation but can span multiple lines. - Indentation must not contain tabulators so the compiler always sees - the code the same way as you do. - - -Nim plays nice with others -========================== - -* The Nim Compiler runs on Windows, Linux, BSD and Mac OS X. - Porting to other platforms is easy. -* **The Nim Compiler can also generate C++ or Objective C for easier - interfacing.** -* There are lots of bindings: for example, bindings to GTK2, the Windows API, - the POSIX API, OpenGL, SDL, Cairo, Python, Lua, TCL, X11, libzip, PCRE, - libcurl, mySQL and SQLite are included in the standard distribution or - can easily be obtained via the - `Nimble package manager `_. -* A C to Nim conversion utility: New bindings to C libraries are easily - generated by ``c2nim``. - - -Roadmap to 1.0 -============== - -Please have a look at -this `wiki page `_ for -an up-to-date overview. diff --git a/web/learn.rst b/web/learn.rst deleted file mode 100644 index c0b583429af16..0000000000000 --- a/web/learn.rst +++ /dev/null @@ -1,70 +0,0 @@ -Learning Nim -============ - -.. container:: standout - - Tutorials - --------- - - .. container:: tutorials - - - | `Tutorial (part I) `_ - | Learn the basics of Nim's types, variables, procedures, control flow, etc... - - - | `Tutorial (part II) `_ - | Learn Nim's more advanced features such as OOP, generics, macros, etc... - - -.. container:: standout - - Books - --------- - - .. container:: books - - - | `Nim in Action `_ - | *Nim in Action* teaches - you all you need to know to begin writing powerful, portable - and efficient applications in Nim. It includes a handful of practical - and fun hands-on examples which teach you Nim. - - -.. container:: standout - - Examples - -------- - - .. container:: examples - - - | `Nim by Example `_ - | Nim by Example is an excellent starting place for beginners. - - - | `Nim on Rosetta Code `_ - | Many different Nim code examples comparable to other languages for reference. - - - | `Nim for C/C++ Programmers `_ - | A useful cheat-sheet for those most familiar with C/C++ languages. - - -.. container:: standout - - Articles - -------- - - .. container:: articles - - - `How I Start: Nim `_ - - `Getting Started With Nim `_ - - `Getting Started With Nim - Part 2 `_ - - `What is special about Nim? `_ - - `What makes Nim practical? `_ - - `Learn Nim in minutes `_ - - `Dr Dobbs Nimrod Publication `_ - - `Nim articles by Göran Krampe `_ - - -Documentation -------------- - -More examples of Nim code can be found in the `Nim Language Documentation `_. - diff --git a/web/links.rst b/web/links.rst deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/web/news.rst b/web/news.rst deleted file mode 100644 index 5086bc682c25d..0000000000000 --- a/web/news.rst +++ /dev/null @@ -1,144 +0,0 @@ -==== -News -==== - -`2017-01-08 Nim Version 0.16.2 released `_ -=================================== - -`2017-01-08 Nim Version 0.16.0 released `_ -=================================== - -`2016-11-20 Nim in Action is going into production! `_ -=================================== - -`2016-10-23 Nim Version 0.15.2 released `_ -=================================== - -`2016-09-30 Nim Version 0.15.0 released `_ -=================================== - -`2016-09-03 Nim Community Survey results `_ -=================================== - -`2016-08-06 BountySource Update: The Road to v1.0 `_ -=================================== - -`2016-06-23 Launching the 2016 Nim community survey `_ -=================================== - -`2016-06-11 Version 0.14.2 released `_ -=================================== - -`2016-06-07 Version 0.14.0 released `_ -=================================== - -`2016-06-04 Meet our BountySource sponsors `_ -=================================== - -`2016-01-27 Nim in Action is now available! `_ -================================== - -`2016-01-18 Version 0.13.0 released `_ -================================== - -`2016-01-18 Andreas Rumpf's talk at OSCON Amsterdam `_ -================================================== - -`2015-10-27 Version 0.12.0 released `_ -================================== - -`2015-10-16 First Nim conference `_ -=============================== - -`2015-05-04 Version 0.11.2 released `_ -================================== - -`2015-04-30 Version 0.11.0 released `_ -================================== - -`2014-12-29 Version 0.10.2 released `_ -================================== - - -`2014-10-19 Version 0.9.6 released `_ -================================= - - -`2014-04-21 Version 0.9.4 released `_ -================================= - - -`2014-02-11 Nimrod Featured in Dr. Dobb's Journal `_ -================================================ - - -`2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online `_ -============================================================================ - - -`2013-05-20 New website design! `_ -============================== - - - -`2013-05-20 Version 0.9.2 released `_ -================================= - - - -`2012-09-23 Version 0.9.0 released `_ -================================= - - - -`2012-02-09 Version 0.8.14 released `_ -================================== - - - -`2011-07-10 Version 0.8.12 released `_ -================================== - - -`2010-10-20 Version 0.8.10 released `_ -================================== - - - -`2010-03-14 Version 0.8.8 released `_ -================================= - - -`2009-12-21 Version 0.8.6 released `_ -================================= - - -2009-10-21 Version 0.8.2 released -================================= - - -2009-09-12 Version 0.8.0 released -================================= - - -2009-06-08 Version 0.7.10 released -================================== - - -2009-05-08 Version 0.7.8 released -================================= - - -2009-04-22 Version 0.7.6 released -================================= - - -2008-11-16 Version 0.7.0 released -================================= - - -2008-08-22 Version 0.6.0 released -================================= - -Nimrod version 0.6.0 has been released! -**This is the first version of the compiler that is able to compile itself!** diff --git a/web/news/e001_version_0_8_6.rst b/web/news/e001_version_0_8_6.rst deleted file mode 100644 index 019168a44a98b..0000000000000 --- a/web/news/e001_version_0_8_6.rst +++ /dev/null @@ -1,54 +0,0 @@ -2009-12-21 Version 0.8.6 released -================================= - -.. container:: metadata - - Posted by Andreas Rumpf on 21/12/2009 - -The version jump from 0.8.2 to 0.8.6 acknowledges the fact that all development -of the compiler is now done in Nimrod. - - -Bugfixes --------- -- The pragmas ``hint[X]:off`` and ``warning[X]:off`` now work. -- Method call syntax for iterators works again (``for x in lines.split()``). -- Fixed a typo in ``removeDir`` for POSIX that lead to an infinite recursion. -- The compiler now checks that module filenames are valid identifiers. -- Empty patterns for the ``dynlib`` pragma are now possible. -- ``os.parseCmdLine`` returned wrong results for trailing whitespace. -- Inconsequent tuple usage (using the same tuple with and without named fields) - does not crash the code generator anymore. -- A better error message is provided when the loading of a proc within a - dynamic lib fails. - - -Additions ---------- -- Added ``system.contains`` for open arrays. -- The PEG module now supports the *search loop operator* ``@``. -- Grammar/parser: ``SAD|IND`` is allowed before any kind of closing bracket. - This allows for more flexible source code formating. -- The compiler now uses a *bind* table for symbol lookup within a ``bind`` - context. (See ``_ for details.) -- ``discard """my long comment"""`` is now optimized away. -- New ``--floatChecks: on|off`` switches and pragmas for better debugging - of floating point operations. (See - ``_ for details.) -- The manual has been improved. (Many thanks to Philippe Lhoste!) - - -Changes affecting backwards compatibility ------------------------------------------ -- The compiler does not skip the linking step anymore even if no file - has changed. -- ``os.splitFile(".xyz")`` now returns ``("", ".xyz", "")`` instead of - ``("", "", ".xyz")``. So filenames starting with a dot are handled - differently. -- ``strutils.split(s: string, seps: set[char])`` never yields the empty string - anymore. This behaviour is probably more appropriate for whitespace splitting. -- The compiler now stops after the ``--version`` command line switch. -- Removed support for enum inheritance in the parser; enum inheritance has - never been documented anyway. -- The ``msg`` field of ``system.E_base`` has now the type ``string``, instead - of ``cstring``. This improves memory safety. diff --git a/web/news/e002_version_0_8_8.rst b/web/news/e002_version_0_8_8.rst deleted file mode 100644 index 2df476814cacc..0000000000000 --- a/web/news/e002_version_0_8_8.rst +++ /dev/null @@ -1,82 +0,0 @@ -Version 0.8.8 released -====================== - -.. container:: metadata - - Posted by Andreas Rumpf on 14/03/2010 - -Bugfixes --------- -- The Posix version of ``os.copyFile`` has better error handling. -- Fixed bug #502670 (underscores in identifiers). -- Fixed a bug in the ``parsexml`` module concerning the parsing of - ````. -- Fixed a bug in the ``parsexml`` module concerning the parsing of - enities like ``<XX``. -- ``system.write(f: TFile, s: string)`` now works even if ``s`` contains binary - zeros. -- Fixed a bug in ``os.setFilePermissions`` for Windows. -- An overloadable symbol can now have the same name as an imported module. -- Fixed a serious bug in ``strutils.cmpIgnoreCase``. -- Fixed ``unicode.toUTF8``. -- The compiler now rejects ``'\n'`` (use ``"\n"`` instead). -- ``times.getStartMilsecs()`` now works on Mac OS X. -- Fixed a bug in ``pegs.match`` concerning start offsets. -- Lots of other little bugfixes. - - -Additions ---------- -- Added ``system.cstringArrayToSeq``. -- Added ``system.lines(f: TFile)`` iterator. -- Added ``system.delete``, ``system.del`` and ``system.insert`` for sequences. -- Added ``system./`` for int. -- Exported ``system.newException`` template. -- Added ``cgi.decodeData(data: string): tuple[key, value: string]``. -- Added ``strutils.insertSep``. -- Added ``math.trunc``. -- Added ``ropes`` module. -- Added ``sockets`` module. -- Added ``browsers`` module. -- Added ``httpserver`` module. -- Added ``httpclient`` module. -- Added ``parseutils`` module. -- Added ``unidecode`` module. -- Added ``xmldom`` module. -- Added ``xmldomparser`` module. -- Added ``xmltree`` module. -- Added ``xmlparser`` module. -- Added ``htmlparser`` module. -- Added ``re`` module. -- Added ``graphics`` module. -- Added ``colors`` module. -- Many wrappers now do not contain redundant name prefixes (like ``GTK_``, - ``lua``). The old wrappers are still available in ``lib/oldwrappers``. - You can change your configuration file to use these. -- Triple quoted strings allow for ``"`` in more contexts. -- ``""`` within raw string literals stands for a single quotation mark. -- Arguments to ``openArray`` parameters can be left out. -- More extensive subscript operator overloading. (To be documented.) -- The documentation generator supports the ``.. raw:: html`` directive. -- The Pegs module supports back references via the notation ``$capture_index``. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Overloading of the subscript operator only works if the type does not provide - a built-in one. -- The search order for libraries which is affected by the ``path`` option - has been reversed, so that the project's path is searched before - the standard library's path. -- The compiler does not include a Pascal parser for bootstrapping purposes any - more. Instead there is a ``pas2nim`` tool that contains the old functionality. -- The procs ``os.copyFile`` and ``os.moveFile`` have been deprecated - temporarily, so that the compiler warns about their usage. Use them with - named arguments only, because the parameter order will change the next - version! -- ``atomic`` and ``let`` are now keywords. -- The ``\w`` character class for pegs now includes the digits ``'0'..'9'``. -- Many wrappers now do not contain redundant name prefixes (like ``GTK_``, - ``lua``) anymore. -- Arguments to ``openArray`` parameters can be left out. diff --git a/web/news/e003_version_0_8_10.rst b/web/news/e003_version_0_8_10.rst deleted file mode 100644 index f72c0076cb62c..0000000000000 --- a/web/news/e003_version_0_8_10.rst +++ /dev/null @@ -1,70 +0,0 @@ -Version 0.8.10 released -======================= - -.. container:: metadata - - Posted by Andreas Rumpf on 20/10/2010 - -Bugfixes --------- - -- Bugfix: Command line parsing on Windows and ``os.parseCmdLine`` now adheres - to the same parsing rules as Microsoft's C/C++ startup code. -- Bugfix: Passing a ``ref`` pointer to the untyped ``pointer`` type is invalid. -- Bugfix: Updated ``keyval`` example. -- Bugfix: ``system.splitChunk`` still contained code for debug output. -- Bugfix: ``dialogs.ChooseFileToSave`` uses ``STOCK_SAVE`` instead of - ``STOCK_OPEN`` for the GTK backend. -- Bugfix: Various bugs concerning exception handling fixed. -- Bugfix: ``low(somestring)`` crashed the compiler. -- Bugfix: ``strutils.endsWith`` lacked range checking. -- Bugfix: Better detection for AMD64 on Mac OS X. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Reversed parameter order for ``os.copyFile`` and ``os.moveFile``!!! -- Procs not marked as ``procvar`` cannot only be passed to a procvar anymore, - unless they are used in the same module. -- Deprecated ``times.getStartMilsecs``: Use ``epochTime`` or ``cpuTime`` - instead. -- Removed ``system.OpenFile``. -- Removed ``system.CloseFile``. -- Removed ``strutils.replaceStr``. -- Removed ``strutils.deleteStr``. -- Removed ``strutils.splitLinesSeq``. -- Removed ``strutils.splitSeq``. -- Removed ``strutils.toString``. -- If a DLL cannot be loaded (via the ``dynlib`` pragma) ``EInvalidLibrary`` - is not raised anymore. Instead ``system.quit()`` is called. This is because - raising an exception requires heap allocations. However the memory manager - might be contained in the DLL that failed to load. -- The ``re`` module (and the ``pcre`` wrapper) now depend on the pcre dll. - - -Additions ---------- - -- The ``{.compile: "file.c".}`` pragma uses a CRC check to see if the file - needs to be recompiled. -- Added ``system.reopen``. -- Added ``system.getCurrentException``. -- Added ``system.appType``. -- Added ``system.compileOption``. -- Added ``times.epochTime`` and ``times.cpuTime``. -- Implemented explicit type arguments for generics. -- Implemented ``{.size: sizeof(cint).}`` pragma for enum types. This is useful - for interfacing with C. -- Implemented ``{.pragma.}`` pragma for user defined pragmas. -- Implemented ``{.extern.}`` pragma for better control of name mangling. -- The ``importc`` and ``exportc`` pragmas support format strings: - ``proc p{.exportc: "nim_$1".}`` exports ``p`` as ``nim_p``. This is useful - for user defined pragmas. -- The standard library can be built as a DLL. Generating DLLs has been - improved. -- Added ``expat`` module. -- Added ``json`` module. -- Added support for a *Tiny C* backend. Currently this only works on Linux. - You need to bootstrap with ``-d:tinyc`` to enable Tiny C support. Nimrod - can then execute code directly via ``nimrod run myfile``. diff --git a/web/news/e004_version_0_8_12.rst b/web/news/e004_version_0_8_12.rst deleted file mode 100644 index 5f154b2dba680..0000000000000 --- a/web/news/e004_version_0_8_12.rst +++ /dev/null @@ -1,122 +0,0 @@ -Version 0.8.12 released -================================== - -.. container:: metadata - - Posted by Andreas Rumpf on 10/07/2011 - -Bugfixes --------- - -- Bugfix: ``httpclient`` correct passes the path starting with ``/``. -- Bugfixes for the ``htmlparser`` module. -- Bugfix: ``pegs.find`` did not respect ``start`` parameter. -- Bugfix: ``dialogs.ChooseFilesToOpen`` did not work if only one file is - selected. -- Bugfix: niminst: ``nimrod`` is not default dir for *every* project. -- Bugfix: Multiple yield statements in iterators did not cause local vars to be - copied. -- Bugfix: The compiler does not emit very inaccurate floating point literals - anymore. -- Bugfix: Subclasses are taken into account for ``try except`` matching. -- Bugfix: Generics and macros are more stable. There are still known bugs left - though. -- Bugfix: Generated type information for tuples was sometimes wrong, causing - random crashes. -- Lots of other bugfixes: Too many to list them all. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Operators starting with ``^`` are now right-associative and have the highest - priority. -- Deprecated ``os.getApplicationFilename``: Use ``os.getAppFilename`` instead. -- Deprecated ``os.getApplicationDir``: Use ``os.getAppDir`` instead. -- Deprecated ``system.copy``: Use ``substr`` or string slicing instead. -- Changed and documented how generalized string literals work: The syntax - ``module.re"abc"`` is now supported. -- Changed the behaviour of ``strutils.%``, ``ropes.%`` - if both notations ``$#`` and ``$i`` are involved. -- The ``pegs`` and ``re`` modules distinguish between ``replace`` - and ``replacef`` operations. -- The pointer dereference operation ``p^`` is deprecated and might become - ``^p`` in later versions or be dropped entirely since it is rarely used. - Use the new notation ``p[]`` in the rare cases where you need to - dereference a pointer explicitly. -- ``system.readFile`` does not return ``nil`` anymore but raises an ``EIO`` - exception instead. -- Unsound co-/contravariance for procvars has been removed. - - -Language Additions ------------------- - -- Source code filters are now documented. -- Added the ``linearScanEnd``, ``unroll``, ``shallow`` pragmas. -- Added ``emit`` pragma for direct code generator control. -- Case statement branches support constant sets for programming convenience. -- Tuple unpacking is not enforced in ``for`` loops anymore. -- The compiler now supports array, sequence and string slicing. -- A field in an ``enum`` may be given an explicit string representation. - This yields more maintainable code than using a constant - ``array[TMyEnum, string]`` mapping. -- Indices in array literals may be explicitly given, enhancing readability: - ``[enumValueA: "a", enumValueB: "b"]``. -- Added thread support via the ``threads`` core module and - the ``--threads:on`` command line switch. -- The built-in iterators ``system.fields`` and ``system.fieldPairs`` can be - used to iterate over any field of a tuple. With this mechanism operations - like ``==`` and ``hash`` are lifted to tuples. -- The slice ``..`` is now a first-class operator, allowing code like: - ``x in 1000..100_000``. - - -Compiler Additions ------------------- - -- The compiler supports IDEs via the new group of ``idetools`` command line - options. -- The *interactive mode* (REPL) has been improved and documented for the - first time. -- The compiler now might use hashing for string case statements depending - on the number of string literals in the case statement. - - -Library Additions ------------------ - -- Added ``lists`` module which contains generic linked lists. -- Added ``sets`` module which contains generic hash sets. -- Added ``tables`` module which contains generic hash tables. -- Added ``queues`` module which contains generic sequence based queues. -- Added ``intsets`` module which contains a specialized int set data type. -- Added ``scgi`` module. -- Added ``smtp`` module. -- Added ``encodings`` module. -- Added ``re.findAll``, ``pegs.findAll``. -- Added ``os.findExe``. -- Added ``parseutils.parseUntil`` and ``parseutils.parseWhile``. -- Added ``strutils.align``, ``strutils.tokenize``, ``strutils.wordWrap``. -- Pegs support a *captured search loop operator* ``{@}``. -- Pegs support new built-ins: ``\letter``, ``\upper``, ``\lower``, - ``\title``, ``\white``. -- Pegs support the new built-in ``\skip`` operation. -- Pegs support the ``$`` and ``^`` anchors. -- Additional operations were added to the ``complex`` module. -- Added ``strutils.formatFloat``, ``strutils.formatBiggestFloat``. -- Added unary ``<`` for nice looking excluding upper bounds in ranges. -- Added ``math.floor``. -- Added ``system.reset`` and a version of ``system.open`` that - returns a ``TFile`` and raises an exception in case of an error. -- Added a wrapper for ``redis``. -- Added a wrapper for ``0mq`` via the ``zmq`` module. -- Added a wrapper for ``sphinx``. -- Added ``system.newStringOfCap``. -- Added ``system.raiseHook`` and ``system.outOfMemHook``. -- Added ``system.writeFile``. -- Added ``system.shallowCopy``. -- ``system.echo`` is guaranteed to be thread-safe. -- Added ``prelude`` include file for scripting convenience. -- Added ``typeinfo`` core module for access to runtime type information. -- Added ``marshal`` module for JSON serialization. diff --git a/web/news/e005_version_0_8_14.rst b/web/news/e005_version_0_8_14.rst deleted file mode 100644 index 4050c8b9307cd..0000000000000 --- a/web/news/e005_version_0_8_14.rst +++ /dev/null @@ -1,168 +0,0 @@ -2012-02-09 Version 0.8.14 released -================================== - -.. container:: metadata - - Posted by Andreas Rumpf on 09/02/2012 - -Version 0.8.14 has been released! - -Bugfixes --------- - -- Fixed a serious memory corruption concerning message passing. -- Fixed a serious bug concerning different instantiations of a generic proc. -- Fixed a newly introduced bug where a wrong ``EIO`` exception was raised for - the end of file for text files that do not end with a newline. -- Bugfix c2nim, c2pas: the ``--out`` option has never worked properly. -- Bugfix: forwarding of generic procs never worked. -- Some more bugfixes for macros and compile-time evaluation. -- The GC now takes into account interior pointers on the stack which may be - introduced by aggressive C optimizers. -- Nimrod's native allocator/GC now works on PowerPC. -- Lots of other bugfixes: Too many to list them all. - - -Changes affecting backwards compatibility ------------------------------------------ - -- Removed deprecated ``os.AppendFileExt``, ``os.executeShellCommand``, - ``os.iterOverEnvironment``, ``os.pcDirectory``, ``os.pcLinkToDirectory``, - ``os.SplitPath``, ``os.extractDir``, ``os.SplitFilename``, - ``os.extractFileTrunk``, ``os.extractFileExt``, ``osproc.executeProcess``, - ``osproc.executeCommand``. -- Removed deprecated ``parseopt.init``, ``parseopt.getRestOfCommandLine``. -- Moved ``strutils.validEmailAddress`` to ``matchers.validEmailAddress``. -- The pointer dereference operator ``^`` has been removed, so that ``^`` - can now be a user-defined operator. -- ``implies`` is no keyword anymore. -- The ``is`` operator is now the ``of`` operator. -- The ``is`` operator is now used to check type equivalence in generic code. -- The ``pure`` pragma for procs has been renamed to ``noStackFrame``. -- The threading API has been completely redesigned. -- The ``unidecode`` module is now thread-safe and its interface has changed. -- The ``bind`` expression is deprecated, use a ``bind`` declaration instead. -- ``system.raiseHook`` is now split into ``system.localRaiseHook`` and - ``system.globalRaiseHook`` to distinguish between thread local and global - raise hooks. -- Changed exception handling/error reporting for ``os.removeFile`` and - ``os.removeDir``. -- The algorithm for searching and loading configuration files has been changed. -- Operators now have diffent precedence rules: Assignment-like operators - (like ``*=``) are now special-cased. -- The fields in ``TStream`` have been renamed to have an ``Impl`` suffix - because they should not be used directly anymore. - Wrapper procs have been created that should be used instead. -- ``export`` is now a keyword. -- ``assert`` is now implemented in pure Nimrod as a template; it's easy - to implement your own assertion templates with ``system.astToStr``. - - -Language Additions ------------------- - -- Added new ``is`` and ``of`` operators. -- The built-in type ``void`` can be used to denote the absence of any type. - This is useful in generic code. -- Return types may be of the type ``var T`` to return an l-value. -- The error pragma can now be used to mark symbols whose *usage* should trigger - a compile-time error. -- There is a new ``discardable`` pragma that can be used to mark a routine - so that its result can be discarded implicitly. -- Added a new ``noinit`` pragma to prevent automatic initialization to zero - of variables. -- Constants can now have the type ``seq``. -- There is a new user-definable syntactic construct ``a{i, ...}`` - that has no semantics yet for built-in types and so can be overloaded to your - heart's content. -- ``bind`` (used for symbol binding in templates and generics) is now a - declarative statement. -- Nimrod now supports single assignment variables via the ``let`` statement. -- Iterators named ``items`` and ``pairs`` are implicitly invoked when - an explicit iterator is missing. -- The slice assignment ``a[i..j] = b`` where ``a`` is a sequence or string - now supports *splicing*. - - -Compiler Additions ------------------- - -- The compiler can generate C++ code for easier interfacing with C++. -- The compiler can generate Objective C code for easier interfacing with - Objective C. -- The new pragmas ``importcpp`` and ``importobjc`` make interfacing with C++ - and Objective C somewhat easier. -- Added a new pragma ``incompleteStruct`` to deal with incomplete C struct - definitions. -- Added a ``--nimcache:PATH`` configuration option for control over the output - directory for generated code. -- The ``--genScript`` option now produces different compilation scripts - which do not contain absolute paths. -- Added ``--cincludes:dir``, ``--clibdir:lib`` configuration options for - modifying the C compiler's header/library search path in cross-platform way. -- Added ``--clib:lib`` configuration option for specifying additional - C libraries to be linked. -- Added ``--mainmodule:file`` configuration options for specifying the main - project file. This is intended to be used in project configuration files to - allow commands like ``nimrod c`` or ``nimrod check`` to be executed anywhere - within the project's directory structure. -- Added a ``--app:staticlib`` option for creating static libraries. -- Added a ``--tlsEmulation:on|off`` switch for control over thread local - storage emulation. -- The compiler and standard library now support a *taint mode*. Input strings - are declared with the ``TaintedString`` string type. If the taint - mode is turned on it is a distinct string type which helps to detect input - validation errors. -- The compiler now supports the compilation cache via ``--symbolFiles:on``. - This potentially speeds up compilations by an order of magnitude, but is - still highly experimental! -- Added ``--import:file`` and ``--include:file`` configuration options - for specifying modules that will be automatically imported/incluced. -- ``nimrod i`` can now optionally be given a module to execute. -- The compiler now performs a simple alias analysis to generate better code. -- The compiler and ENDB now support *watchpoints*. -- The compiler now supports proper compile time expressions of type ``bool`` - for ``on|off`` switches in pragmas. In order to not break existing code, - ``on`` and ``off`` are now aliases for ``true`` and ``false`` and declared - in the system module. -- The compiler finally supports **closures**. This is a preliminary - implementation, which does not yet support nestings deeper than 1 level - and still has many known bugs. - - -Library Additions ------------------ - -- Added ``system.allocShared``, ``system.allocShared0``, - ``system.deallocShared``, ``system.reallocShared``. -- Slicing as implemented by the system module now supports *splicing*. -- Added explicit channels for thread communication. -- Added ``matchers`` module for email address etc. matching. -- Added ``strutils.unindent``, ``strutils.countLines``, - ``strutils.replaceWord``. -- Added ``system.slurp`` for easy resource embedding. -- Added ``system.running`` for threads. -- Added ``system.programResult``. -- Added ``xmltree.innerText``. -- Added ``os.isAbsolute``, ``os.dynLibFormat``, ``os.isRootDir``, - ``os.parentDirs``. -- Added ``parseutils.interpolatedFragments``. -- Added ``macros.treeRepr``, ``macros.lispRepr``, ``macros.dumpTree``, - ``macros.dumpLisp``, ``macros.parseExpr``, ``macros.parseStmt``, - ``macros.getAst``. -- Added ``locks`` core module for more flexible locking support. -- Added ``irc`` module. -- Added ``ftpclient`` module. -- Added ``memfiles`` module. -- Added ``subexes`` module. -- Added ``critbits`` module. -- Added ``asyncio`` module. -- Added ``actors`` module. -- Added ``algorithm`` module for generic ``sort``, ``reverse`` etc. operations. -- Added ``osproc.startCmd``, ``osproc.execCmdEx``. -- The ``osproc`` module now uses ``posix_spawn`` instead of ``fork`` - and ``exec`` on Posix systems. Define the symbol ``useFork`` to revert to - the old implementation. -- Added ``intsets.assign``. -- Added ``system.astToStr`` and ``system.rand``, ``system.doAssert``. -- Added ``system.pairs`` for built-in types like arrays and strings. diff --git a/web/news/e006_version_0_9_0.rst b/web/news/e006_version_0_9_0.rst deleted file mode 100644 index 5635ca94cbd4c..0000000000000 --- a/web/news/e006_version_0_9_0.rst +++ /dev/null @@ -1,182 +0,0 @@ -Version 0.9.0 released -====================== - -.. container:: metadata - - Posted by Andreas Rumpf on 23/09/2012 - -Summary -------- - -* Unsigned integers have been added. -* The integer type promotion rules changed. -* The template and macro system evolved. -* Closures have been implemented. -* Term rewriting macros have been implemented. -* First steps to unify expressions and statements have been taken. -* Symbol lookup rules in generics have become stricter to catch more errors. - - -Bugfixes --------- - -- Fixed a bug where the compiler would "optimize away" valid constant parts of - a string concatenation. -- Fixed a bug concerning implicit type conversions in ``case`` statements. -- Fixed a serious code generation bug that caused ``algorithm.sort`` to - produce segmentation faults. -- Fixed ambiguity in recvLine which meant that receiving ``\r\L`` was - indistinguishable from disconnections. -- Many more bugfixes, too many to list them all. - - -Library Additions ------------------ - -- Added the (already existing) module ``htmlgen`` to the documentation. -- Added the (already existing) module ``cookies`` to the documentation. -- Added ``system.shallow`` that can be used to speed up string and sequence - assignments. -- Added ``system.eval`` that can execute an anonymous block of code at - compile time as if was a macro. -- Added ``system.staticExec`` and ``system.gorge`` for compile-time execution - of external programs. -- Added ``system.staticRead`` as a synonym for ``system.slurp``. -- Added ``macros.emit`` that can emit an arbitrary computed string as nimrod - code during compilation. -- Added ``strutils.parseEnum``. -- Added ``json.%`` constructor operator. -- The stdlib can now be avoided to a point where C code generation for 16bit - micro controllers is feasible. -- Added module ``oids``. -- Added module ``endians``. -- Added a new OpenGL wrapper that supports OpenGL up to version 4.2. -- Added a wrapper for ``libsvm``. -- Added a wrapper for ``mongodb``. -- Added ``terminal.isatty``. -- Added an overload for ``system.items`` that can be used to iterate over the - values of an enum. -- Added ``system.TInteger`` and ``system.TNumber`` type classes matching - any of the corresponding types available in Nimrod. -- Added ``system.clamp`` to limit a value within an interval ``[a, b]``. -- Added ``strutils.continuesWith``. -- Added ``system.getStackTrace``. -- Added ``system.||`` for parallel ``for`` loop support. -- The GC supports (soft) realtime systems via ``GC_setMaxPause`` - and ``GC_step`` procs. -- The sockets module now supports ssl through the OpenSSL library, ``recvLine`` - is now much more efficient thanks to the newly implemented sockets buffering. -- The httpclient module now supports ssl/tls. -- Added ``times.format`` as well as many other utility functions - for managing time. -- Added ``system.@`` for converting an ``openarray`` to a ``seq`` (it used to - only support fixed length arrays). -- Added ``system.compiles`` which can be used to check whether a type supports - some operation. -- Added ``strutils.format``, ``subexes.format`` which use the - new ``varargs`` type. -- Added module ``fsmonitor``. - -Changes affecting backwards compatibility ------------------------------------------ - -- On Windows filenames and paths are supposed to be in UTF-8. - The ``system``, ``os``, ``osproc`` and ``memfiles`` modules use the wide - string versions of the WinAPI. Use the ``-d:useWinAnsi`` switch to revert - back to the old behaviour which uses the Ansi string versions. -- ``static``, ``do``, ``interface`` and ``mixin`` are now keywords. -- Templates now participate in overloading resolution which can break code that - uses templates in subtle ways. Use the new ``immediate`` pragma for templates - to get a template of old behaviour. -- There is now a proper distinction in the type system between ``expr`` and - ``PNimrodNode`` which unfortunately breaks the old macro system. -- ``pegs.@`` has been renamed to ``pegs.!*`` and ``pegs.@@`` has been renamed - to ``pegs.!*\`` as ``@`` operators now have different precedence. -- The type ``proc`` (without any params or return type) is now considered a - type class matching all proc types. Use ``proc ()`` to get the old meaning - denoting a proc expecing no arguments and returing no value. -- Deprecated ``system.GC_setStrategy``. -- ``re.findAll`` and ``pegs.findAll`` don't return *captures* anymore but - matching *substrings*. -- RTTI and thus the ``marshall`` module don't contain the proper field names - of tuples anymore. This had to be changed as the old behaviour never - produced consistent results. -- Deprecated the ``ssl`` module. -- Deprecated ``nimrod pretty`` as it never worked good enough and has some - inherent problems. -- The integer promotion rules changed; the compiler is now less picky in some - situations and more picky in other situations: In particular implicit - conversions from ``int`` to ``int32`` are now forbidden. -- ``system.byte`` is now an alias for ``uint8``; it used to be an alias - to ``int8``. -- ``bind`` expressions in templates are not properly supported anymore. Use - the declarative ``bind`` statement instead. -- The default calling convention for a procedural **type** is now ``closure``, - for procs it remains ``nimcall`` (which is compatible to ``closure``). - Activate the warning ``ImplicitClosure`` to make the compiler list the - occurrences of proc types which are affected. -- The Nimrod type system now distinguishes ``openarray`` from ``varargs``. -- Templates are now ``hygienic``. Use the ``dirty`` pragma to get the old - behaviour. -- Objects that have no ancestor are now implicitly ``final``. Use - the ``inheritable`` pragma to introduce new object roots apart - from ``TObject``. -- Macros now receive parameters like templates do; use the ``callsite`` builtin - to gain access to the invocation AST. -- Symbol lookup rules in generics have become stricter to catch more errors. - - -Compiler Additions ------------------- - -- Win64 is now an officially supported target. -- The Nimrod compiler works on BSD again, but has some issues - as ``os.getAppFilename`` and ``os.getAppDir`` cannot work reliably on BSD. -- The compiler can detect and evaluate calls that can be evaluated at compile - time for optimization purposes with the ``--implicitStatic`` command line - option or pragma. -- The compiler now generates marker procs that the GC can use instead of RTTI. - This speeds up the GC quite a bit. -- The compiler now includes a new advanced documentation generator - via the ``doc2`` command. This new generator uses all of the semantic passes - of the compiler and can thus generate documentation for symbols hiding in - macros. -- The compiler now supports the ``dynlib`` pragma for variables. -- The compiler now supports ``bycopy`` and ``byref`` pragmas that affect how - objects/tuples are passed. -- The embedded profiler became a stack trace profiler and has been documented. - - -Language Additions ------------------- - -- Added explicit ``static`` sections for enforced compile time evaluation. -- Added an alternative notation for lambdas with ``do``. -- ``addr`` is now treated like a prefix operator syntactically. -- Added ``global`` pragma that can be used to introduce new global variables - from within procs. -- ``when`` expressions are now allowed just like ``if`` expressions. -- The precedence for operators starting with ``@`` is different now - allowing for *sigil-like* operators. -- Stand-alone ``finally`` and ``except`` blocks are now supported. -- Macros and templates can now be invoked as pragmas. -- The apostrophe in type suffixes for numerical literals is now optional. -- Unsigned integer types have been added. -- The integer promotion rules changed. -- Nimrod now tracks proper intervals for ``range`` over some built-in operators. -- In parameter lists a semicolon instead of a comma can be used to improve - readability: ``proc divmod(a, b: int; resA, resB: var int)``. -- A semicolon can now be used to have multiple simple statements on a single - line: ``inc i; inc j``. -- ``bind`` supports overloaded symbols and operators. -- A ``distinct`` type can now borrow from generic procs. -- Added the pragmas ``gensym``, ``inject`` and ``dirty`` for hygiene - in templates. -- Comments can be continued with a backslash continuation character so that - comment pieces don't have to align on the same column. -- Enums can be annotated with ``pure`` so that their field names do not pollute - the current scope. -- A proc body can consist of an expression that has a type. This is rewritten - to ``result = expression`` then. -- Term rewriting macros (see `trmacros `_) - have been implemented but are still in alpha. diff --git a/web/news/e007_version_0_9_2.rst b/web/news/e007_version_0_9_2.rst deleted file mode 100644 index 89352c06c8b79..0000000000000 --- a/web/news/e007_version_0_9_2.rst +++ /dev/null @@ -1,118 +0,0 @@ -Version 0.9.2 released -====================== - -.. container:: metadata - - Posted by Dominik Picheta on 20/05/2013 - -We are pleased to announce that version 0.9.2 of the Nimrod compiler has been -released. This release has attracted by far the most contributions in comparison -to any other release. - -This release brings with it many new features and bug fixes, a list of which -can be seen later. One of the major new features is the effect system together -with exception tracking which allows for checked exceptions and more, -for further details check out the `manual `_. -Another major new feature is the introduction of statement list expressions, -more details on these can be found `here `_. -The ability to exclude symbols from modules has also been -implemented, this feature can be used like so: ``import module except symbol``. - -Thanks to all `contributors `_! - -Bugfixes --------- - -- The old GC never collected cycles correctly. Fixed but it can cause - performance regressions. However you can deactivate the cycle collector - with ``GC_disableMarkAndSweep`` and run it explicitly at an appropriate time - or not at all. There is also a new GC you can activate - with ``--gc:markAndSweep`` which does not have this problem but is slower in - general and has no realtime guarantees. -- ``cast`` for floating point types now does the bitcast as specified in the - manual. This breaks code that erroneously uses ``cast`` to convert different - floating point values. -- SCGI module's performance has been improved greatly, it will no longer block - on many concurrent requests. -- In total fixed over 70 github issues and merged over 60 pull requests. - - -Library Additions ------------------ - -- There is a new experimental mark&sweep GC which can be faster (or much - slower) than the default GC. Enable with ``--gc:markAndSweep``. -- Added ``system.onRaise`` to support a condition system. -- Added ``system.locals`` that provides access to a proc's locals. -- Added ``macros.quote`` for AST quasi-quoting. -- Added ``system.unsafeNew`` to support hacky variable length objects. -- ``system.fields`` and ``system.fieldPairs`` support ``object`` too; they - used to only support tuples. -- Added ``system.CurrentSourcePath`` returning the full file-system path of - the current source file. -- The ``macros`` module now contains lots of useful helpers for building up - abstract syntax trees. - - -Changes affecting backwards compatibility ------------------------------------------ - -- ``shared`` is a keyword now. -- Deprecated ``sockets.recvLine`` and ``asyncio.recvLine``, added - ``readLine`` instead. -- The way indentation is handled in the parser changed significantly. However, - this affects very little (if any) real world code. -- The expression/statement unification has been implemented. Again this - only affects edge cases and no known real world code. -- Changed the async interface of the ``scgi`` module. -- WideStrings are now garbage collected like other string types. - - -Compiler Additions ------------------- - -- The ``doc2`` command does not generate output for the whole project anymore. - Use the new ``--project`` switch to enable this behaviour. -- The compiler can now warn about shadowed local variables. However, this needs - to be turned on explicitly via ``--warning[ShadowIdent]:on``. -- The compiler now supports almost every pragma in a ``push`` pragma. -- Generic converters have been implemented. -- Added a **highly experimental** ``noforward`` pragma enabling a special - compilation mode that largely eliminates the need for forward declarations. - -Language Additions ------------------- - -- ``case expressions`` are now supported. -- Table constructors now mimic more closely the syntax of the ``case`` - statement. -- Nimrod can now infer the return type of a proc from its body. -- Added a ``mixin`` declaration to affect symbol binding rules in generics. -- Exception tracking has been added and the ``doc2`` command annotates possible - exceptions for you. -- User defined effects ("tags") tracking has been added and the ``doc2`` - command annotates possible tags for you. -- Types can be annotated with the new syntax ``not nil`` to explicitly state - that ``nil`` is not allowed. However currently the compiler performs no - advanced static checking for this; for now it's merely for documentation - purposes. -- An ``export`` statement has been added to the language: It can be used for - symbol forwarding so client modules don't have to import a module's - dependencies explicitly. -- Overloading based on ASTs has been implemented. -- Generics are now supported for multi methods. -- Objects can be initialized via an *object constructor expression*. -- There is a new syntactic construct ``(;)`` unifying expressions and - statements. -- You can now use ``from module import nil`` if you want to import the module - but want to enforce fully qualified access to every symbol in ``module``. - - -Notes for the future --------------------- - -- The scope rules of ``if`` statements will change in 0.9.4. This affects the - ``=~`` pegs/re templates. -- The ``sockets`` module will become a low-level wrapper of OS-specific socket - functions. All the high-level features of the current ``sockets`` module - will be moved to a ``network`` module. diff --git a/web/news/e008_new_website.rst b/web/news/e008_new_website.rst deleted file mode 100644 index b36cc99ddf8aa..0000000000000 --- a/web/news/e008_new_website.rst +++ /dev/null @@ -1,13 +0,0 @@ -New website design! -=================== - -.. container:: metadata - - Posted by Andreas Rumpf on 09/12/2014 - -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. diff --git a/web/news/e009_andreas_rumpfs_talk.rst b/web/news/e009_andreas_rumpfs_talk.rst deleted file mode 100644 index 00cc5e1017c1d..0000000000000 --- a/web/news/e009_andreas_rumpfs_talk.rst +++ /dev/null @@ -1,11 +0,0 @@ -2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online -============================================================================ - -.. container:: metadata - - Posted by Dominik Picheta on 12/01/2014 - -Andreas Rumpf presented *Nimrod: A New Approach to Metaprogramming* at -`Strange Loop 2013`_. -The `video and slides`_ -of the talk are now available. diff --git a/web/news/e010_dr_dobbs_journal.rst b/web/news/e010_dr_dobbs_journal.rst deleted file mode 100644 index b48ccf31f6113..0000000000000 --- a/web/news/e010_dr_dobbs_journal.rst +++ /dev/null @@ -1,9 +0,0 @@ -Nimrod Featured in Dr. Dobb's Journal -===================================== - -.. container:: metadata - - Posted by Dominik Picheta on 11/02/2014 - -Nimrod has been `featured`_ -as the cover story in the February 2014 issue of Dr. Dobb's Journal. diff --git a/web/news/e011_version_0_9_4.rst b/web/news/e011_version_0_9_4.rst deleted file mode 100644 index 2714c5c780a71..0000000000000 --- a/web/news/e011_version_0_9_4.rst +++ /dev/null @@ -1,179 +0,0 @@ -2014-04-21 Version 0.9.4 released -================================= - -.. container:: metadata - - Posted by Dominik Picheta on 21/04/2014 - -The Nimrod development community is proud to announce the release of version -0.9.4 of the Nimrod compiler and tools. **Note: This release has to be -considered beta quality! Lots of new features have been implemented but -unfortunately some do not fulfill our quality standards yet.** - -Prebuilt binaries and instructions for building from source are available -on the `download page `_. - -This release includes about -`1400 changes `_ -in total including various bug -fixes, new languages features and standard library additions and improvements. -This release brings with it support for user-defined type classes, a brand -new VM for executing Nimrod code at compile-time and new symbol binding -rules for clean templates. - -It also introduces support for the brand new -`Babel package manager `_ which -has itself seen its first release recently. Many of the wrappers that were -present in the standard library have been moved to separate repositories -and should now be installed using Babel. - -Apart from that a new **experimental** Asynchronous IO API has been added via -the ``asyncdispatch`` and ``asyncnet`` modules. The ``net`` and ``rawsockets`` -modules have also been added and they will likely replace the sockets -module in the next release. The Asynchronous IO API has been designed to -take advantage of Linux's epoll and Windows' IOCP APIs, support for BSD's -kqueue has not been implemented yet but will be in the future. -The Asynchronous IO API provides both -a callback interface and an interface which allows you to write code as you -would if you were writing synchronous code. The latter is done through -the use of an ``await`` macro which behaves similar to C#'s await. The -following is a very simple chat server demonstrating Nimrod's new async -capabilities. - -.. code-block::nim - import asyncnet, asyncdispatch - - var clients: seq[PAsyncSocket] = @[] - - proc processClient(client: PAsyncSocket) {.async.} = - while true: - let line = await client.recvLine() - for c in clients: - await c.send(line & "\c\L") - - proc serve() {.async.} = - var server = newAsyncSocket() - server.bindAddr(TPort(12345)) - server.listen() - - while true: - let client = await server.accept() - clients.add client - - processClient(client) - - serve() - runForever() - - -Note that this feature has been implemented with Nimrod's macro system and so -``await`` and ``async`` are no keywords. - -Syntactic sugar for anonymous procedures has also been introduced. It too has -been implemented as a macro. The following shows some simple usage of the new -syntax: - -.. code-block::nim - import future - - var s = @[1, 2, 3, 4, 5] - echo(s.map((x: int) => x * 5)) - -A list of changes follows, for a comprehensive list of changes take a look -`here `_. - -Library Additions ------------------ - -- Added ``macros.genSym`` builtin for AST generation. -- Added ``macros.newLit`` procs for easier AST generation. -- Added module ``logging``. -- Added module ``asyncdispatch``. -- Added module ``asyncnet``. -- Added module ``net``. -- Added module ``rawsockets``. -- Added module ``selectors``. -- Added module ``asynchttpserver``. -- Added support for the new asynchronous IO in the ``httpclient`` module. -- Added a Python-inspired ``future`` module that features upcoming additions - to the ``system`` module. - - -Changes affecting backwards compatibility ------------------------------------------ - -- The scoping rules for the ``if`` statement changed for better interaction - with the new syntactic construct ``(;)``. -- ``OSError`` family of procedures has been deprecated. Procedures with the same - name but which take different parameters have been introduced. These procs now - require an error code to be passed to them. This error code can be retrieved - using the new ``OSLastError`` proc. -- ``os.parentDir`` now returns "" if there is no parent dir. -- In CGI scripts stacktraces are shown to the user only - if ``cgi.setStackTraceStdout`` is used. -- The symbol binding rules for clean templates changed: ``bind`` for any - symbol that's not a parameter is now the default. ``mixin`` can be used - to require instantiation scope for a symbol. -- ``quoteIfContainsWhite`` now escapes argument in such way that it can be safely - passed to shell, instead of just adding double quotes. -- ``macros.dumpTree`` and ``macros.dumpLisp`` have been made ``immediate``, - ``dumpTreeImm`` and ``dumpLispImm`` are now deprecated. -- The ``nil`` statement has been deprecated, use an empty ``discard`` instead. -- ``sockets.select`` now prunes sockets that are **not** ready from the list - of sockets given to it. -- The ``noStackFrame`` pragma has been renamed to ``asmNoStackFrame`` to - ensure you only use it when you know what you're doing. -- Many of the wrappers that were present in the standard library have been - moved to separate repositories and should now be installed using Babel. - - -Compiler Additions ------------------- - -- The compiler can now warn about "uninitialized" variables. (There are no - real uninitialized variables in Nimrod as they are initialized to binary - zero). Activate via ``{.warning[Uninit]:on.}``. -- The compiler now enforces the ``not nil`` constraint. -- The compiler now supports a ``codegenDecl`` pragma for even more control - over the generated code. -- The compiler now supports a ``computedGoto`` pragma to support very fast - dispatching for interpreters and the like. -- The old evaluation engine has been replaced by a proper register based - virtual machine. This fixes numerous bugs for ``nimrod i`` and for macro - evaluation. -- ``--gc:none`` produces warnings when code uses the GC. -- A ``union`` pragma for better C interoperability is now supported. -- A ``packed`` pragma to control the memory packing/alignment of fields in - an object. -- Arrays can be annotated to be ``unchecked`` for easier low level - manipulations of memory. -- Support for the new Babel package manager. - - -Language Additions ------------------- - -- Arrays can now be declared with a single integer literal ``N`` instead of a - range; the range is then ``0..N-1``. -- Added ``requiresInit`` pragma to enforce explicit initialization. -- Exported templates are allowed to access hidden fields. -- The ``using statement`` enables you to more easily author domain-specific - languages and libraries providing OOP-like syntactic sugar. -- Added the possibility to override various dot operators in order to handle - calls to missing procs and reads from undeclared fields at compile-time. -- The overload resolution now supports ``static[T]`` params that must be - evaluable at compile-time. -- Support for user-defined type classes has been added. -- The *command syntax* is supported in a lot more contexts. -- Anonymous iterators are now supported and iterators can capture variables - of an outer proc. -- The experimental ``strongSpaces`` parsing mode has been implemented. -- You can annotate pointer types with regions for increased type safety. -- Added support for the builtin ``spawn`` for easy thread pool usage. - - -Tools improvements ------------------- - -- c2nim can deal with a subset of C++. Use the ``--cpp`` command line option - to activate. diff --git a/web/news/e012_version_0_9_6.rst b/web/news/e012_version_0_9_6.rst deleted file mode 100644 index 7a148aaa5eccb..0000000000000 --- a/web/news/e012_version_0_9_6.rst +++ /dev/null @@ -1,65 +0,0 @@ -Version 0.9.6 released -================================= - -.. container:: metadata - - Posted by Andreas Rumpf on 19/10/2014 - -**Note: 0.9.6 is the last release of Nimrod. The language is being renamed to -Nim. Nim slightly breaks compatibility.** - -This is a maintenance release. The upcoming 0.10.0 release has -the new features and exciting developments. - - -Changes affecting backwards compatibility ------------------------------------------ - -- ``spawn`` now uses an elaborate self-adapting thread pool and as such - has been moved into its own module. So to use it, you now have to import - ``threadpool``. -- The symbol binding rules in generics changed: ``bar`` in ``foo.bar`` is - now considered for implicit early binding. -- ``c2nim`` moved into its own repository and is now a Babel package. -- ``pas2nim`` moved into its own repository and is now a Babel package. -- ``system.$`` for floating point types now produces a human friendly string - representation. -- ``uri.TUrl`` as well as the ``parseurl`` module are now deprecated in favour - of the new ``TUri`` type in the ``uri`` module. -- The ``destructor`` pragma has been deprecated. Use the ``override`` pragma - instead. The destructor's name has to be ``destroy`` now. -- ``lambda`` is not a keyword anymore. -- **system.defined has been split into system.defined and system.declared**. - You have to use ``--symbol`` to declare new conditional symbols that can be - set via ``--define``. -- ``--threadanalysis:on`` is now the default. To make your program compile - you can disable it but this is only a temporary solution as this option - will disappear soon! - - -Compiler improvements ---------------------- - -- Multi method dispatching performance has been improved by a factor of 10x for - pathological cases. - - -Language Additions ------------------- - -- This version introduces the ``deprecated`` pragma statement that is used - to handle the upcoming massive amount of symbol renames. -- ``spawn`` can now wrap proc that has a return value. It then returns a data - flow variable of the wrapped return type. - - -Library Additions ------------------ - -- Added module ``cpuinfo``. -- Added module ``threadpool``. -- ``sequtils.distnct`` has been renamed to ``sequtils.deduplicate``. -- Added ``algorithm.reversed`` -- Added ``uri.combine`` and ``uri.parseUri``. -- Some sockets procedures now support a ``SafeDisconn`` flag which causes - them to handle disconnection errors and not raise them. diff --git a/web/news/e013_version_0_10_2.rst b/web/news/e013_version_0_10_2.rst deleted file mode 100644 index ad8afa3bfa223..0000000000000 --- a/web/news/e013_version_0_10_2.rst +++ /dev/null @@ -1,198 +0,0 @@ -Version 0.10.2 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 29/12/2014 - -This release marks the completion of a very important change to the project: -the official renaming from Nimrod to Nim. Version 0.10.2 contains many language -changes, some of which may break your existing code. For your convenience, we -added a new tool called `nimfix `_ that will help you convert your -existing projects so that it works with the latest version of the compiler. - -Progress towards version 1.0 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Although Nim is still pre-1.0, we were able to keep the number of breaking -changes to a minimum so far. Starting with version 1.0, we will not introduce -any breaking changes between major release versions. -One of Nim's goals is to ensure that the compiler is as efficient as possible. -Take a look at the -`latest benchmarks `_, -which show that Nim is consistently near -the top and already nearly as fast as C and C++. Recent developments, such as -the new ``asyncdispatch`` module will allow you to write efficient web server -applications using non-blocking code. Nim now also has a built-in thread pool -for lightweight threading through the use of ``spawn``. - -The unpopular "T" and "P" prefixes on types have been deprecated. Nim also -became more expressive by weakening the distinction between statements and -expressions. We also added a new and searchable forum, a new website, and our -documentation generator ``docgen`` has seen major improvements. Many thanks to -Nick Greenfield for the much more beautiful documentation! - - - -What's left to be done -~~~~~~~~~~~~~~~~~~~~~~ - -The 1.0 release is actually very close. Apart from bug fixes, there are -two major features missing or incomplete: - -* ``static[T]`` needs to be defined precisely and the bugs in the - implementation need to be fixed. -* Overloading of the assignment operator is required for some generic - containers and needs to be implemented. - -This means that fancy matrix libraries will finally start to work, which used -to be a major point of pain in the language. - - -Nimble and other Nim tools -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Outside of the language and the compiler itself many Nim tools have seen -considerable improvements. - -Babel the Nim package manager has been renamed to Nimble. Nimble's purpose -is the installation of packages containing libraries and/or applications -written in Nim. -Even though Nimble is still very young it already is very -functional. It can install packages by name, it does so by accessing a -packages repository which is hosted on a GitHub repo. Packages can also be -installed via a Git repo URL or Mercurial repo URL. The package repository -is searchable through Nimble. Anyone is free to add their own packages to -the package repository by forking the -`nim-lang/packages `_ repo and creating -a pull request. Nimble is fully cross-platform and should be fully functional -on all major operating systems. -It is of course completely written in Nim. - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- **The language has been renamed from Nimrod to Nim.** The name of the - compiler changed from ``nimrod`` to ``nim`` too. -- ``system.fileHandle`` has been renamed to ``system.getFileHandle`` to - prevent name conflicts with the new type ``FileHandle``. -- Comments are now not part of the AST anymore, as such you cannot use them - in place of ``discard``. -- Large parts of the stdlib got rid of the T/P type prefixes. Instead most - types now simply start with an uppercased letter. The - so called "partial case sensitivity" rule is now active allowing for code - like ``var foo: Foo`` in more contexts. -- String case (or any non-ordinal case) statements - without 'else' are deprecated. -- Recursive tuple types are not allowed anymore. Use ``object`` instead. -- The PEGS module returns ``nil`` instead of ``""`` when an optional capture - fails to match. -- The re module returns ``nil`` instead of ``""`` when an optional capture - fails to match. -- The "symmetric set difference" operator (``-+-``) never worked and has been - removed. -- ``defer`` is a keyword now. -- ``func`` is a keyword now. -- The ``using`` language feature now needs to be activated via the new - ``{.experimental.}`` pragma that enables experimental language features. -- Destructors are now officially *experimental*. -- Standalone ``except`` and ``finally`` statements are deprecated now. - The standalone ``finally`` can be replaced with ``defer``, - standalone ``except`` requires an explicit ``try``. -- Operators ending in ``>`` are considered as "arrow like" and have their - own priority level and are right associative. This means that - the ``=>`` and ``->`` operators from the `future `_ module - work better. -- Field names in tuples are now ignored for type comparisons. This allows - for greater interoperability between different modules. -- Statement lists are not converted to an implicit ``do`` block anymore. This - means the confusing ``nnkDo`` nodes when working with macros are gone for - good. - - -Language Additions ------------------- - -- The new concurrency model has been implemented including ``locks`` sections, - lock levels and object field ``guards``. -- The ``parallel`` statement has been implemented. -- ``deepCopy`` has been added to the language. -- The builtin ``procCall`` can be used to get ``super``-like functionality - for multi methods. -- There is a new pragma ``{.experimental.}`` that enables experimental - language features per module, or you can enable these features on a global - level with the ``--experimental`` command line option. - - -Compiler Additions ------------------- - -- The compiler now supports *mixed* Objective C / C++ / C code generation: - The modules that use ``importCpp`` or ``importObjc`` are compiled to C++ - or Objective C code, any other module is compiled to C code. This - improves interoperability. -- There is a new ``parallel`` statement for safe fork&join parallel computing. -- ``guard`` and ``lock`` pragmas have been implemented to support safer - concurrent programming. -- The following procs are now available at compile-time:: - - math.sqrt, math.ln, math.log10, math.log2, math.exp, math.round, - math.arccos, math.arcsin, math.arctan, math.arctan2, math.cos, - math.cosh, math.hypot, math.sinh, math.sin, math.tan, math.tanh, - math.pow, math.trunc, math.floor, math.ceil, math.fmod, - os.getEnv, os.existsEnv, os.dirExists, os.fileExists, - system.writeFile - -- Two backticks now produce a single backtick within an ``emit`` or ``asm`` - statement. -- There is a new tool, `nimfix `_ to help you in updating your - code from Nimrod to Nim. -- The compiler's output has been prettified. - -Library Additions ------------------ - -- Added module ``fenv`` to control the handling of floating-point rounding and - exceptions (overflow, division by zero, etc.). -- ``system.setupForeignThreadGc`` can be used for better interaction with - foreign libraries that create threads and run a Nim callback from these - foreign threads. -- List comprehensions have been implemented as a macro in the ``future`` - module. -- The new Async module (``asyncnet``) now supports SSL. -- The ``smtp`` module now has an async implementation. -- Added module ``asyncfile`` which implements asynchronous file reading - and writing. -- ``osproc.kill`` has been added. -- ``asyncnet`` and ``asynchttpserver`` now support ``SO_REUSEADDR``. - -Bugfixes --------- - -- ``nil`` and ``NULL`` are now preserved between Nim and databases in the - ``db_*`` modules. -- Fixed issue with OS module in non-unicode mode on Windows. -- Fixed issue with ``x.low`` - (`#1366 `_). -- Fixed tuple unpacking issue inside closure iterators - (`#1067 `_). -- Fixed ENDB compilation issues. -- Many ``asynchttpserver`` fixes. -- Macros can now keep global state across macro calls - (`#903 `_). -- ``osproc`` fixes on Windows. -- ``osproc.terminate`` fixed. -- Improvements to exception handling in async procedures. - (`#1487 `_). -- ``try`` now works at compile-time. -- Fixes ``T = ref T`` to be an illegal recursive type. -- Self imports are now disallowed. -- Improved effect inference. -- Fixes for the ``math`` module on Windows. -- User defined pragmas will now work for generics that have - been instantiated in different modules. -- Fixed queue exhaustion bug. -- Many, many more. diff --git a/web/news/e014_version_0_11_0.rst b/web/news/e014_version_0_11_0.rst deleted file mode 100644 index a8a58f2ae7d92..0000000000000 --- a/web/news/e014_version_0_11_0.rst +++ /dev/null @@ -1,396 +0,0 @@ -Version 0.11.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 30/04/2015 - -With this release we are one step closer to reaching version 1.0 and by -extension the persistence of the Nim specification. As mentioned in the -previous release notes, starting with version 1.0, we will not be introducing -any more breaking changes to Nim. - -The *language* itself is very close to 1.0, the primary area that requires -more work is the standard library. - -Take a look at the `download `_ page for binaries (Windows-only) -and 0.11.0 snapshots of the source code. The Windows installer now also -includes `Aporia `_, -`Nimble `_ and other useful tools to get -you started with Nim. - -What's left to be done -~~~~~~~~~~~~~~~~~~~~~~ - -The 1.0 release is expected by the end of this year. Rumors say it will be in -summer 2015. What's left: - -* Bug fixes, bug fixes, bug fixes, in particular: - - The remaining bugs of the lambda lifting pass that is responsible to enable - closures and closure iterators need to be fixed. - - ``concept`` needs to be refined, a nice name for the feature is not enough. - - Destructors need to be refined. - - ``static[T]`` needs to be fixed. - - Finish the implementation of the 'parallel' statement. -* ``immediate`` templates and macros will be deprecated as these will soon be - completely unnecessary, instead the ``typed`` or ``untyped`` metatypes can - be used. -* More of the standard library should be moved to Nimble packages and what's - left should use the features we have for concurrency and parallelism. - - - -Changes affecting backwards compatibility ------------------------------------------ - -- Parameter names are finally properly ``gensym``'ed. This can break - templates though that used to rely on the fact that they are not. - (Bug #1915.) This means this doesn't compile anymore: - -.. code-block:: nim - - template doIt(body: stmt) {.immediate.} = - # this used to inject the 'str' parameter: - proc res(str: string) = - body - - doIt: - echo str # Error: undeclared identifier: 'str' -.. - - This used to inject the ``str`` parameter into the scope of the body. - Declare the ``doIt`` template as ``immediate, dirty`` to get the old - behaviour. -- Tuple field names are not ignored anymore, this caused too many problems - in practice so now the behaviour is as it was for version 0.9.6: If field - names exist for the tuple type, they are checked. -- ``logging.level`` and ``logging.handlers`` are no longer exported. - ``addHandler``, ``getHandlers``, ``setLogFilter`` and ``getLogFilter`` - should be used instead. -- ``nim idetools`` has been replaced by a separate - tool `nimsuggest <0.11.0/nimsuggest.html>`_. -- *arrow like* operators are not right associative anymore and are required - to end with either ``->``, ``~>`` or - ``=>``, not just ``>``. Examples of operators still considered arrow like: - ``->``, ``==>``, ``+=>``. On the other hand, the following operators are now - considered regular operators again: ``|>``, ``-+>``, etc. -- Typeless parameters are now only allowed in templates and macros. The old - way turned out to be too error-prone. -- The 'addr' and 'type' operators are now parsed as unary function - application. This means ``type(x).name`` is now parsed as ``(type(x)).name`` - and not as ``type((x).name)``. Note that this also affects the AST - structure; for immediate macro parameters ``nkCall('addr', 'x')`` is - produced instead of ``nkAddr('x')``. -- ``concept`` is now a keyword and is used instead of ``generic``. -- The ``inc``, ``dec``, ``+=``, ``-=`` builtins now produce OverflowError - exceptions. This means code like the following: - -.. code-block:: nim - var x = low(T) - while x <= high(T): - echo x - inc x - -Needs to be replaced by something like this: - -.. code-block:: nim - var x = low(T).int - while x <= high(T).int: - echo x.T - inc x - -- **Negative indexing for slicing does not work anymore!** Instead - of ``a[0.. -1]`` you can - use ``a[0.. ^1]``. This also works with accessing a single - element ``a[^1]``. Note that we cannot detect this reliably as it is - determined at **runtime** whether negative indexing is used! - ``a[0.. -1]`` now produces the empty string/sequence. -- The compiler now warns about code like ``foo +=1`` which uses inconsistent - spacing around binary operators. Later versions of the language will parse - these as unary operators instead so that ``echo $foo`` finally can do what - people expect it to do. -- ``system.untyped`` and ``system.typed`` have been introduced as aliases - for ``expr`` and ``stmt``. The new names capture the semantics much better - and most likely ``expr`` and ``stmt`` will be deprecated in favor of the - new names. -- The ``split`` method in module ``re`` has changed. It now handles the case - of matches having a length of 0, and empty strings being yielded from the - iterator. A notable change might be that a pattern being matched at the - beginning and end of a string, will result in an empty string being produced - at the start and the end of the iterator. -- The compiler and nimsuggest now count columns starting with 1, not 0 for - consistency with the rest of the world. - - -Language Additions ------------------- - -- For empty ``case object`` branches ``discard`` can finally be used instead - of ``nil``. -- Automatic dereferencing is now done for the first argument of a routine - call if overloading resolution produces no match otherwise. This feature - has to be enabled with - the `experimental <0.11.0/manual.html#pragmas-experimental-pragma>`_ pragma. -- Objects that do not use inheritance nor ``case`` can be put into ``const`` - sections. This means that finally this is possible and produces rather - nice code: - -.. code-block:: nim - import tables - - const - foo = {"ah": "finally", "this": "is", "possible.": "nice!"}.toTable() - - -- Ordinary parameters can follow after a varargs parameter. This means the - following is finally accepted by the compiler: - -.. code-block:: nim - template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) = - blck - echo a, b - - takesBlock 1, 2, "some", 0.90, "random stuff": - echo "yay" - -- Overloading by 'var T' is now finally possible: - -.. code-block:: nim - proc varOrConst(x: var int) = echo "var" - proc varOrConst(x: int) = echo "const" - - var x: int - varOrConst(x) # "var" - varOrConst(45) # "const" - -- Array and seq indexing can now use the builtin ``^`` operator to access - things from backwards: ``a[^1]`` is like Python's ``a[-1]``. -- A first version of the specification and implementation of the overloading - of the assignment operator has arrived! -- ``system.len`` for strings and sequences now returns 0 for nil. - -- A single underscore can now be used to discard values when unpacking tuples: - -.. code-block:: nim - let (path, _, _) = os.splitFile("path/file.ext") - - -- ``marshal.$$`` and ``marshal.to`` can be executed at compile-time. -- Interoperability with C++ improved tremendously; C++'s templates and - operators can be wrapped directly. See - `this <0.11.0/nimc.html#additional-features-importcpp-pragma>`_ - for more information. -- ``macros.getType`` can be used to query an AST's type at compile-time. This - enables more powerful macros, for instance *currying* can now be done with - a macro. - - -Library additions ------------------ - -- ``reversed`` proc added to the ``unicode`` module. -- Added multipart param to httpclient's ``post`` and ``postContent`` together - with a ``newMultipartData`` proc. -- Added `%*` operator for JSON. -- The compiler is now available as Nimble package for c2nim. -- Added ``..^`` and ``..<`` templates to system so that the rather annoying - space between ``.. <`` and ``.. ^`` is not necessary anymore. -- Added ``system.xlen`` for strings and sequences to get back the old ``len`` - operation that doesn't check for ``nil`` for efficiency. -- Added sexp.nim to parse and generate sexp. - - -Bugfixes --------- - -- Fixed internal compiler error when using ``char()`` in an echo call - (`#1788 `_). -- Fixed Windows cross-compilation on Linux. -- Overload resolution now works for types distinguished only by a - ``static[int]`` param - (`#1056 `_). -- Other fixes relating to generic types and static params. -- Fixed some compiler crashes with unnamed tuples - (`#1774 `_). -- Fixed ``channels.tryRecv`` blocking - (`#1816 `_). -- Fixed generic instantiation errors with ``typedesc`` - (`#419 `_). -- Fixed generic regression where the compiler no longer detected constant - expressions properly (`#544 `_). -- Fixed internal error with generic proc using ``static[T]`` in a specific - way (`#1049 `_). -- More fixes relating to generics (`#1820 `_, - `#1050 `_, - `#1859 `_, - `#1858 `_). -- Fixed httpclient to properly encode queries. -- Many fixes to the ``uri`` module. -- Async sockets are now closed on error. -- Fixes to httpclient's handling of multipart data. -- Fixed GC segfaults with asynchronous sockets - (`#1796 `_). -- Added more versions to openssl's DLL version list - (`076f993 `_). -- Fixed shallow copy in iterators being broken - (`#1803 `_). -- ``nil`` can now be inserted into tables with the ``db_sqlite`` module - (`#1866 `_). -- Fixed "Incorrect assembler generated" - (`#1907 `_) -- Fixed "Expression templates that define macros are unusable in some contexts" - (`#1903 `_) -- Fixed "a second level generic subclass causes the compiler to crash" - (`#1919 `_) -- Fixed "nim 0.10.2 generates invalid AsyncHttpClient C code for MSVC " - (`#1901 `_) -- Fixed "1 shl n produces wrong C code" - (`#1928 `_) -- Fixed "Internal error on tuple yield" - (`#1838 `_) -- Fixed "ICE with template" - (`#1915 `_) -- Fixed "include the tool directory in the installer as it is required by koch" - (`#1947 `_) -- Fixed "Can't compile if file location contains spaces on Windows" - (`#1955 `_) -- Fixed "List comprehension macro only supports infix checks as guards" - (`#1920 `_) -- Fixed "wrong field names of compatible tuples in generic types" - (`#1910 `_) -- Fixed "Macros within templates no longer work as expected" - (`#1944 `_) -- Fixed "Compiling for Standalone AVR broken in 0.10.2" - (`#1964 `_) -- Fixed "Compiling for Standalone AVR broken in 0.10.2" - (`#1964 `_) -- Fixed "Code generation for mitems with tuple elements" - (`#1833 `_) -- Fixed "httpclient.HttpMethod should not be an enum" - (`#1962 `_) -- Fixed "terminal / eraseScreen() throws an OverflowError" - (`#1906 `_) -- Fixed "setControlCHook(nil) disables registered quit procs" - (`#1546 `_) -- Fixed "Unexpected idetools behaviour" - (`#325 `_) -- Fixed "Unused lifted lambda does not compile" - (`#1642 `_) -- Fixed "'low' and 'high' don't work with cstring asguments" - (`#2030 `_) -- Fixed "Converting to int does not round in JS backend" - (`#1959 `_) -- Fixed "Internal error genRecordField 2 when adding region to pointer." - (`#2039 `_) -- Fixed "Macros fail to compile when compiled with --os:standalone" - (`#2041 `_) -- Fixed "Reading from {.compileTime.} variables can cause code generation to fail" - (`#2022 `_) -- Fixed "Passing overloaded symbols to templates fails inside generic procedures" - (`#1988 `_) -- Fixed "Compiling iterator with object assignment in release mode causes "var not init"" - (`#2023 `_) -- Fixed "calling a large number of macros doing some computation fails" - (`#1989 `_) -- Fixed "Can't get Koch to install nim under Windows" - (`#2061 `_) -- Fixed "Template with two stmt parameters segfaults compiler" - (`#2057 `_) -- Fixed "`noSideEffect` not affected by `echo`" - (`#2011 `_) -- Fixed "Compiling with the cpp backend ignores --passc" - (`#1601 `_) -- Fixed "Put untyped procedure parameters behind the experimental pragma" - (`#1956 `_) -- Fixed "generic regression" - (`#2073 `_) -- Fixed "generic regression" - (`#2073 `_) -- Fixed "Regression in template lookup with generics" - (`#2004 `_) -- Fixed "GC's growObj is wrong for edge cases" - (`#2070 `_) -- Fixed "Compiler internal error when creating an array out of a typeclass" - (`#1131 `_) -- Fixed "GC's growObj is wrong for edge cases" - (`#2070 `_) -- Fixed "Invalid Objective-C code generated when calling class method" - (`#2068 `_) -- Fixed "walkDirRec Error" - (`#2116 `_) -- Fixed "Typo in code causes compiler SIGSEGV in evalAtCompileTime" - (`#2113 `_) -- Fixed "Regression on exportc" - (`#2118 `_) -- Fixed "Error message" - (`#2102 `_) -- Fixed "hint[path] = off not working in nim.cfg" - (`#2103 `_) -- Fixed "compiler crashes when getting a tuple from a sequence of generic tuples" - (`#2121 `_) -- Fixed "nim check hangs with when" - (`#2123 `_) -- Fixed "static[T] param in nested type resolve/caching issue" - (`#2125 `_) -- Fixed "repr should display ``\0``" - (`#2124 `_) -- Fixed "'nim check' never ends in case of recursive dependency " - (`#2051 `_) -- Fixed "From macros: Error: unhandled exception: sons is not accessible" - (`#2167 `_) -- Fixed "`fieldPairs` doesn't work inside templates" - (`#1902 `_) -- Fixed "fields iterator misbehavior on break statement" - (`#2134 `_) -- Fixed "Fix for compiler not building anymore since #c3244ef1ff" - (`#2193 `_) -- Fixed "JSON parser fails in cpp output mode" - (`#2199 `_) -- Fixed "macros.getType mishandles void return" - (`#2211 `_) -- Fixed "Regression involving templates instantiated within generics" - (`#2215 `_) -- Fixed ""Error: invalid type" for 'not nil' on generic type." - (`#2216 `_) -- Fixed "--threads:on breaks async" - (`#2074 `_) -- Fixed "Type mismatch not always caught, can generate bad code for C backend." - (`#2169 `_) -- Fixed "Failed C compilation when storing proc to own type in object" - (`#2233 `_) -- Fixed "Unknown line/column number in constant declaration type conversion error" - (`#2252 `_) -- Fixed "Adding {.compile.} fails if nimcache already exists." - (`#2247 `_) -- Fixed "Two different type names generated for a single type (C backend)" - (`#2250 `_) -- Fixed "Ambigous call when it should not be" - (`#2229 `_) -- Fixed "Make sure we can load root urls" - (`#2227 `_) -- Fixed "Failure to slice a string with an int subrange type" - (`#794 `_) -- Fixed "documentation error" - (`#2205 `_) -- Fixed "Code growth when using `const`" - (`#1940 `_) -- Fixed "Instances of generic types confuse overload resolution" - (`#2220 `_) -- Fixed "Compiler error when initializing sdl2's EventType" - (`#2316 `_) -- Fixed "Parallel disjoint checking can't handle `<`, `items`, or arrays" - (`#2287 `_) -- Fixed "Strings aren't copied in parallel loop" - (`#2286 `_) -- Fixed "JavaScript compiler crash with tables" - (`#2298 `_) -- Fixed "Range checker too restrictive" - (`#1845 `_) -- Fixed "Failure to slice a string with an int subrange type" - (`#794 `_) -- Fixed "Remind user when compiling in debug mode" - (`#1868 `_) -- Fixed "Compiler user guide has jumbled options/commands." - (`#1819 `_) -- Fixed "using `method`: 1 in a objects constructor fails when compiling" - (`#1791 `_) diff --git a/web/news/e015_version_0_11_2.rst b/web/news/e015_version_0_11_2.rst deleted file mode 100644 index 273182340d6c8..0000000000000 --- a/web/news/e015_version_0_11_2.rst +++ /dev/null @@ -1,12 +0,0 @@ -Version 0.11.2 released -================================== - -.. container:: metadata - - Posted by Andreas Rumpf on 04/05/2015 - -This is just a bugfix release that fixes the most pressing regressions we -introduced with version 0.11.0. The way types are computed was -changed significantly causing all sort of problems. Sorry for the -inconvenience; we grew overconfident our large test suite would prevent these -things. diff --git a/web/news/e016_nim_conf1.rst b/web/news/e016_nim_conf1.rst deleted file mode 100644 index 228bffd2852a1..0000000000000 --- a/web/news/e016_nim_conf1.rst +++ /dev/null @@ -1,26 +0,0 @@ -First Nim conference -==================== - -.. container:: metadata - - Posted by Dominik Picheta on 16/10/2015 - -.. raw::html - - First Nim conference in Ukraine! - -This Autumn you have the unique opportunity to take part in the first Nim event -held in Kyiv and to meet the creator of the Nim programming language - -Andreas Rumpf. The event is hosted by Zeo Alliance and is taking place between -14-15 November 2015 in Kyiv, Ukraine. - -During the workshop you will learn: - -- The basics of the language including its safe and unsafe subsets. -- How to use Nim to develop web applications. -- How Nim's meta programming capabilities make Nim the ultimate glue language, - excellent at interoperability with C++, JavaScript, Java and others. -- Games in Nim and the ability to rapidly prototype without sacrificing speed. - -Registration is free, but the number of places is limited. More details -can be found `here `_. diff --git a/web/news/e017_version_0_12_0.rst b/web/news/e017_version_0_12_0.rst deleted file mode 100644 index 63088f9e2ef3a..0000000000000 --- a/web/news/e017_version_0_12_0.rst +++ /dev/null @@ -1,403 +0,0 @@ -2015-10-27 Version 0.12.0 released -================================== - -.. container:: metadata - - Posted by Dominik Picheta on 27/10/2015 - -The Nim community of developers is proud to announce the new version of the -Nim compiler. This has been a long time coming as the last release has been -made over 5 months ago! - -This release includes some changes which affect backwards compatibility, -one major change is that now the hash table ``[]`` operators now raise a -``KeyError`` exception when the key does not exist. - -Some of the more exciting new features include: the ability to unpack tuples -in any assignment context, the introduction of `NimScript `_, -and improvements to the type inference of lambdas. - -There are of course many many many bug fixes included with this release. -We are getting closer and closer to a 1.0 release and are hoping that only -a few 0.x releases will be necessary before we are happy to release version 1.0. - -As always you can download the latest version of Nim from the -`download `_ page. - -For a more detailed list of changes look below. Some of the upcoming breaking -changes are also documented in this forum -`thread `_. - -Changes affecting backwards compatibility ------------------------------------------ -- The regular expression modules, ``re`` and ``nre`` now depend on version - 8.36 of PCRE. If you have an older version you may see a message similar - to ``could not import: pcre_free_study`` output when you start your - program. See `this issue `_ - for more information. -- ``tables.[]``, ``strtabs.[]``, ``critbits.[]`` **now raise** - the ``KeyError`` **exception when the key does not exist**! Use the - new ``getOrDefault`` instead to get the old behaviour. Compile all your - code with ``-d:nimTableGet`` to get a listing of where your code - uses ``[]``! -- The ``rawsockets`` module has been renamed to ``nativesockets`` to avoid - confusion with TCP/IP raw sockets, so ``newNativeSocket`` should be used - instead of ``newRawSocket``. -- The ``miliseconds`` property of ``times.TimeInterval`` is now ``milliseconds``. - Code accessing that property is deprecated and code using ``miliseconds`` - during object initialization or as a named parameter of ``initInterval()`` - will need to be updated. -- ``std.logging`` functions no longer do formatting and semantically treat - their arguments just like ``echo`` does. Affected functions: ``log``, - ``debug``, ``info``, ``warn``, ``error``, ``fatal``. Custom subtypes of - ``Logger`` also need to be adjusted accordingly. -- Floating point numbers can now look like ``2d`` (float64) - and ``2f`` (float32) which means imports like ``import scene/2d/sprite`` - do not work anymore. Instead quotes have to be - used: ``import "scene/2d/sprite"``. The former code never was valid Nim. -- The Windows API wrapper (``windows.nim``) is now not part of the official - distribution anymore. Instead use the ``oldwinapi`` Nimble package. -- There is now a clear distinction between ``--os:standalone`` - and ``--gc:none``. So if you use ``--os:standalone`` ensure you also use - ``--gc:none``. ``--os:standalone`` without ``--gc:none`` is now a version - that doesn't depend on any OS but includes the GC. However this version - is currently untested! -- All procedures which construct a ``Socket``/``AsyncSocket`` now need to - specify the socket domain, type and protocol. The param name - ``typ: SockType`` (in ``newSocket``/``newAsyncSocket`` procs) was also - renamed to ``sockType``. The param ``af`` in the ``connect`` procs was - removed. This affects ``asyncnet``, ``asyncdispatch``, ``net``, and - ``rawsockets``. -- ``varargs[typed]`` and ``varargs[untyped]`` have been refined and now work - as expected. However ``varargs[untyped]`` is not an alias anymore for - ``varargs[expr]``. So if your code breaks for ``varargs[untyped]``, use - ``varargs[expr]`` instead. The same applies to ``varargs[typed]`` vs - ``varargs[stmt]``. -- ``sequtils.delete`` doesn't take confusing default arguments anymore. -- ``system.free`` was an error-prone alias to ``system.dealloc`` and has - been removed. -- ``macros.high`` never worked and the manual says ``high`` cannot be - overloaded, so we removed it with no deprecation cycle. -- To use the ``parallel`` statement you now have to - use the ``--experimental`` mode. -- Toplevel procs of calling convention ``closure`` never worked reliably - and are now deprecated and will be removed from the language. Instead you - have to insert type conversions - like ``(proc (a, b: int) {.closure.})(myToplevelProc)`` if necessary. -- The modules ``libffi``, ``sdl``, ``windows``, ``zipfiles``, ``libzip``, - ``zlib``, ``zzip``, ``dialogs``, ``expat``, ``graphics``, ``libcurl``, - ``sphinx`` have been moved out of the stdlib and are Nimble packages now. -- The constant fights between 32 and 64 bit DLLs on Windows have been put to - an end: The standard distribution now ships with 32 and 64 bit versions - of all the DLLs the standard library needs. This means that the following - DLLs are now split into 32 and 64 versions: - - * ``pcre.dll``: Split into ``pcre32.dll`` and ``pcre64.dll``. - * ``pdcurses.dll``: Split into ``pdcurses32.dll`` and ``pdcurses64.dll``. - * ``sqlite3.dll``: Split into ``sqlite3_32.dll`` and ``sqlite3_64.dll``. - * ``ssleay32.dll``: Split into ``ssleay32.dll`` and ``ssleay64.dll``. - * ``libeay32.dll``: Split into ``libeay32.dll`` and ``libeay64.dll``. - - Compile with ``-d:nimOldDLLs`` to make the stdlib use the old DLL names. -- Nim VM now treats objects as ``nkObjConstr`` nodes, and not ``nkPar`` nodes - as it was previously. Macros that generate ``nkPar`` nodes when object is - expected are likely to break. Macros that expect ``nkPar`` nodes to which - objects are passed are likely to break as well. -- Base methods now need to be annotated with the ``base`` pragma. This makes - multi methods less error-prone to use with the effect system. -- Nim's parser directive ``#!`` is now ``#?`` in order to produce no conflicts - with Unix's ``#!``. -- An implicit return type for an iterator is now deprecated. Use ``auto`` if - you want more type inference. -- The type ``auto`` is now a "multi-bind" metatype, so the following compiles: - - .. code-block:: nim - proc f(x, y: auto): auto = - result = $x & y - - echo f(0, "abc") -- The ``ftpclient`` module is now deprecated in favour of the - ``asyncftpclient`` module. -- In sequtils.nim renamed ``repeat`` function to ``cycle`` (concatenating - a sequence by itself the given times), and also introduced ``repeat``, - which repeats an element the given times. -- The function ``map`` is moved to sequtils.nim. The inplace ``map`` version - is renamed to ``apply``. -- The template ``mapIt`` now doesn't require the result's type parameter. - Also the inplace ``mapIt`` is renamed to ``apply``. -- The compiler is now stricter with what is allowed as a case object - discriminator. The following code used to compile but was not supported - completely and so now fails: - -.. code-block:: nim - type - DataType* {.pure.} = enum - Char = 1, - Int8 = 2, - Int16 = 3, - Int32 = 4, - Int64 = 5, - Float32 = 6, - Float64 = 7 - - DataSeq* = object - case kind* : DataType - of DataType.Char: charSeq* : seq[char] - of DataType.Int8: int8Seq* : seq[int8] - of DataType.Int16: int16Seq* : seq[int16] - of DataType.Int32: int32Seq* : seq[int32] - of DataType.Int64: int64Seq* : seq[int64] - of DataType.Float32: float32Seq* : seq[float32] - of DataType.Float64: float64Seq* : seq[float64] - - length* : int - - - -Library Additions ------------------ - -- The nre module has been added, providing a better interface to PCRE than re. -- The ``expandSymlink`` proc has been added to the ``os`` module. -- The ``tailDir`` proc has been added to the ``os`` module. -- Define ``nimPinToCpu`` to make the ``threadpool`` use explicit thread - affinities. This can speed up or slow down the thread pool; it's up to you - to benchmark it. -- ``strutils.formatFloat`` and ``formatBiggestFloat`` do not depend on the C - locale anymore and now take an optional ``decimalSep = '.'`` parameter. -- Added ``unicode.lastRune``, ``unicode.graphemeLen``. - - -Compiler Additions ------------------- - -- The compiler now supports a new configuration system based on - `NimScript `_. -- The compiler finally considers symbol binding rules in templates and - generics for overloaded ``[]``, ``[]=``, ``{}``, ``{}=`` operators - (issue `#2599 `_). -- The compiler now supports a `bitsize pragma `_ - for constructing bitfields. -- Added a new ``--reportConceptFailures`` switch for better debugging of - concept related type mismatches. This can also be used to debug - ``system.compiles`` failures. - - -Language Additions ------------------- - -- ``system.unsafeAddr`` can be used to access the address of a ``let`` - variable or parameter for C interoperability. Since technically this - makes parameters and ``let`` variables mutable, it is considered even more - unsafe than the ordinary ``addr`` builtin. -- Added ``macros.getImpl`` that can be used to access the implementation of - a routine or a constant. This allows for example for user-defined inlining - of function calls. -- Tuple unpacking finally works in a non-var/let context: ``(x, y) = f()`` - is allowed. Note that this doesn't declare ``x`` and ``y`` variables, for - this ``let (x, y) = f()`` still needs to be used. -- ``when nimvm`` can now be used for compiletime versions of some code - sections. Click `here `_ for details. -- Usage of the type ``NimNode`` in a proc now implicitly annotates the proc - with ``.compileTime``. This means generics work much better for ``NimNode``. - - -Bugfixes --------- -- Fixed "Compiler internal error on iterator it(T: typedesc[Base]) called with it(Child), where Child = object of Base" - (`#2662 `_) -- Fixed "repr() misses base object field in 2nd level derived object" - (`#2749 `_) -- Fixed "nimsuggest doesn't work more than once on the non-main file" - (`#2694 `_) -- Fixed "JS Codegen. Passing arguments by var in certain cases leads to invalid JS." - (`#2798 `_) -- Fixed ""check" proc in unittest.nim prevents the propagation of changes to var parameters." - (`#964 `_) -- Fixed "Excessive letters in integer literals are not an error" - (`#2523 `_) -- Fixed "Unicode dashes as "lisp'ish" alternative to hump and snake notation" - (`#2811 `_) -- Fixed "Bad error message when trying to construct an object incorrectly" - (`#2584 `_) -- Fixed "Determination of GC safety of globals is broken " - (`#2854 `_) -- Fixed "v2 gc crashes compiler" - (`#2687 `_) -- Fixed "Compile error using object in const array" - (`#2774 `_) -- Fixed "httpclient async requests with method httpPOST isn't sending Content-Length header" - (`#2884 `_) -- Fixed "Streams module not working with JS backend" - (`#2148 `_) -- Fixed "Sign of certain short constants is wrong" - (`#1179 `_) -- Fixed "Symlinks to directories reported as symlinks to files" - (`#1985 `_) -- Fixed "64-bit literals broken on x86" - (`#2909 `_) -- Fixed "import broken for certain names" - (`#2904 `_) -- Fixed "Invalid UTF-8 strings in JavaScript" - (`#2917 `_) -- Fixed "[JS][Codegen] Initialising object doesn't create unmentioned fields." - - (`#2617 `_) -- Fixed "Table returned from proc computed at compile time is missing keys:" - (`#2297 `_) -- Fixed "Clarify copyright status for some files" - (`#2949 `_) -- Fixed "math.nim: trigonometry: radians to degrees conversion" - (`#2881 `_) -- Fixed "xoring unsigned integers yields RangeError in certain conditions" - (`#2979 `_) -- Fixed "Directly checking equality between procs" - (`#2985 `_) -- Fixed "Compiler crashed, but there have to be meaningful error message" - (`#2974 `_) -- Fixed "repr is broken" - (`#2992 `_) -- Fixed "Ipv6 devel - add IPv6 support for asyncsockets, make AF_INET6 a default" - (`#2976 `_) -- Fixed "Compilation broken on windows" - (`#2996 `_) -- Fixed "'u64 literal conversion compiler error" - (`#2731 `_) -- Fixed "Importing 'impure' libraries while using threads causes segfaults" - (`#2672 `_) -- Fixed "Uncatched exception in async procedure on raise statement" - (`#3014 `_) -- Fixed "nim doc2 fails in Mac OS X due to system.nim (possibly related to #1898)" - (`#3005 `_) -- Fixed "IndexError when rebuilding Nim on iteration 2" - (`#3018 `_) -- Fixed "Assigning large const set to variable looses some information" - (`#2880 `_) -- Fixed "Inconsistent generics behavior" - (`#3022 `_) -- Fixed "Compiler breaks on float64 division" - (`#3028 `_) -- Fixed "Confusing error message comparing string to nil " - (`#2935 `_) -- Fixed "convert 64bit number to float on 32bit" - (`#1463 `_) -- Fixed "Type redefinition and construction will break nim check" - (`#3032 `_) -- Fixed "XmlParser fails on very large XML files without new lines" - (`#2429 `_) -- Fixed "Error parsing arguments with whitespaces" - (`#2874 `_) -- Fixed "Crash when missing one arg and used a named arg" - (`#2993 `_) -- Fixed "Wrong number of arguments in assert will break nim check" - (`#3044 `_) -- Fixed "Wrong const definition will break nim check" - (`#3041 `_) -- Fixed "Wrong set declaration will break nim check" - (`#3040 `_) -- Fixed "Compiler segfault (type section)" - (`#2540 `_) -- Fixed "Segmentation fault when compiling this code" - (`#3038 `_) -- Fixed "Kill nim i" - (`#2633 `_) -- Fixed "Nim check will break on wrong array declaration" - (`#3048 `_) -- Fixed "boolVal seems to be broken" - (`#3046 `_) -- Fixed "Nim check crashes on wrong set/array declaration inside ref object" - (`#3062 `_) -- Fixed "Nim check crashes on incorrect generic arg definition" - (`#3051 `_) -- Fixed "Nim check crashes on iterating nonexistent var" - (`#3053 `_) -- Fixed "Nim check crashes on wrong param set declaration + iteration" - (`#3054 `_) -- Fixed "Wrong sharing of static_t instantations" - (`#3112 `_) -- Fixed "Automatically generated proc conflicts with user-defined proc when .exportc.'ed" - (`#3134 `_) -- Fixed "getTypeInfo call crashes nim" - (`#3099 `_) -- Fixed "Array ptr dereference" - (`#2963 `_) -- Fixed "Internal error when `repr`-ing a type directly" - (`#3079 `_) -- Fixed "unknown type name 'TNimType' after importing typeinfo module" - (`#2841 `_) -- Fixed "Can export a template twice and from inside a block" - (`#1738 `_) -- Fixed "C Codegen: C Types are defined after their usage in certain cases" - (`#2823 `_) -- Fixed "s.high refers to the current seq instead of the old one" - (`#1832 `_) -- Fixed "Error while unmarshaling null values" - (`#3149 `_) -- Fixed "Inference of `static[T]` in sequences" - (`#3144 `_) -- Fixed "Argument named "closure" to proc inside template interfere with closure pragma" - (`#3171 `_) -- Fixed "Internal error with aliasing inside template" - (`#3158 `_) -- Fixed "Cardinality of sets prints unexpected value" - (`#3135 `_) -- Fixed "Nim crashes on const assignment from function returning var ref object" - (`#3103 `_) -- Fixed "`repr` cstring" - (`#3080 `_) -- Fixed "Nim check crashes on wrong enum declaration" - (`#3052 `_) -- Fixed "Compiler assertion when evaluating template with static[T]" - (`#1858 `_) -- Fixed "Erroneous overflow in iterators when compiler built with overflowChecks enabled" - (`#3140 `_) -- Fixed "Unicode dashes as "lisp'ish" alternative to hump and snake notation" - (`#2811 `_) -- Fixed "Calling discardable proc from a defer is an error." - (`#3185 `_) -- Fixed "Defer statement at the end of a block produces ICE" - (`#3186 `_) -- Fixed "Call to `createU` fails to compile" - (`#3193 `_) -- Fixed "VM crash when accessing array's element" - (`#3192 `_) -- Fixed "Unexpected proc invoked when different modules add procs to a type from a 3rd module" - (`#2664 `_) -- Fixed "Nim crashes on conditional declaration inside a template" - (`#2670 `_) -- Fixed "Iterator names conflict within different scopes" - (`#2752 `_) -- Fixed "VM: Cannot assign int value to ref variable" - (`#1329 `_) -- Fixed "Incorrect code generated for tagged unions with enums not starting at zero" - (`#3096 `_) -- Fixed "Compile time procs using forward declarations are silently ignored" - (`#3066 `_) -- Fixed "re binding error in generic" - (`#1965 `_) -- Fixed "os.getCreationTime is incorrect/impossible on Posix systems" - (`#1058 `_) -- Fixed "Improve error message for osproc.startProcess when command does not exist" - (`#2183 `_) -- Fixed "gctest segfaults with --gc:markandsweep on x86_64" - (`#2305 `_) -- Fixed "Coroutine changes break compilation on unsupported architectures" - (`#3245 `_) -- Fixed "Bugfix: Windows 32bit TinyCC support issue fixed" - (`#3237 `_) -- Fixed "db_mysql getValue() followed by exec() causing error" - (`#3220 `_) -- Fixed "xmltree.newEntity creates xnCData instead of xnEntity" - (`#3282 `_) -- Fixed "Methods and modules don't work together" - (`#2590 `_) -- Fixed "String slicing not working in the vm" - (`#3300 `_) -- Fixed "internal error: evalOp(mTypeOf)" - (`#3230 `_) -- Fixed "#! source code prefix collides with Unix Shebang" - (`#2559 `_) -- Fixed "wrong codegen for constant object" - (`#3195 `_) -- Fixed "Doc comments inside procs with implicit returns don't work" - (`#1528 `_) diff --git a/web/news/e018_oscon_amsterdam.rst b/web/news/e018_oscon_amsterdam.rst deleted file mode 100644 index fcb4a87942dd4..0000000000000 --- a/web/news/e018_oscon_amsterdam.rst +++ /dev/null @@ -1,13 +0,0 @@ -Andreas Rumpf's talk at OSCON Amsterdam -================================================== - -.. container:: metadata - - Posted by Dominik Picheta on 18/01/2016 - -In case you have missed it, here is Andreas' Nim: An Overview talk at -OSCON Amsterdam. - -.. raw:: html - - diff --git a/web/news/e019_version_0_13_0.rst b/web/news/e019_version_0_13_0.rst deleted file mode 100644 index 2c8e66fa37657..0000000000000 --- a/web/news/e019_version_0_13_0.rst +++ /dev/null @@ -1,182 +0,0 @@ -Version 0.13.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 18/01/2016 - -Once again we are proud to announce the latest release of the Nim compiler -and related tools. This release comes just 3 months after the last -release! - -A new version of Nimble which depends on this release, has also been -released. See `this `_ forum thread for -more information about the Nimble release. - -This release of Nim includes over 116 bug fixes, many of which are related -to closures. The lambda lifting algorithm in the compiler has been completely -rewritten, and some changes have been made to the semantics of closures in -Nim as a result. These changes may affect backwards compatibility and are all -described in the section below. - -With this release, we are one step closer to Nim version 1.0. -The 1.0 release will be a big milestone for Nim, because after that version -is released there will be no more breaking changes made to the language -or the standard library. - -That being said, the next release will likely be Nim 0.14. It will focus on -improvements to the GC and concurrency. We will in particular be looking at -ways to add multi-core support to async await. Standard library improvements -are also on our roadmap but may not make it for Nim 0.14. - -As always you can download the latest version of Nim from the -`download `_ page. - -Happy coding! - -Changes affecting backwards compatibility ------------------------------------------ - -- ``macros.newLit`` for ``bool`` now produces false/true symbols which - actually work with the bool datatype. -- When compiling to JS: ``Node``, ``NodeType`` and ``Document`` are no longer - defined. Use the types defined in ``dom.nim`` instead. -- The check ``x is iterator`` (used for instance in concepts) was always a - weird special case (you could not use ``x is proc``) and was removed from - the language. -- Top level routines cannot have the calling convention ``closure`` - anymore. -- The ``redis`` module has been moved out of the standard library. It can - now be installed via Nimble and is located here: - https://github.com/nim-lang/redis -- ``math.RunningStat`` and its associated procs have been moved from - the ``math`` module to a new ``stats`` module. - - -Syntax changes -~~~~~~~~~~~~~~ - -The parser now considers leading whitespace in front of operators -to determine if an operator is used in prefix or infix position. -This means that finally ``echo $foo`` is parsed as people expect, -which is as ``echo($foo)``. It used to be parsed as ``(echo) $ (foo)``. - -``echo $ foo`` continues to be parsed as ``(echo) $ (foo)``. - -This also means that ``-1`` is always parsed as prefix operator so -code like ``0..kArraySize div 2 -1`` needs to be changed to -``0..kArraySize div 2 - 1``. - -This release also adds multi-line comments to Nim. The syntax for them is: -``#[ comment here ]#``. For more details read the section of -the `manual `_. - -Iterator changes -~~~~~~~~~~~~~~~~ - -Implicit return type inference for iterators has been removed from the language. The following used to work: - -.. code-block:: nim - iterator it = - yield 7 - -This was a strange special case and has been removed. Now you need to write it like so which is consistent with procs: - -.. code-block:: nim - iterator it: auto = - yield 7 - - -Closure changes -~~~~~~~~~~~~~~~ - -The semantics of closures changed: Capturing variables that are in loops do not produce a new environment. Nim closures behave like JavaScript closures now. - -The following used to work as the environment creation used to be attached to the loop body: - -.. code-block:: nim - - proc outer = - var s: seq[proc(): int {.closure.}] = @[] - for i in 0 ..< 30: - let ii = i - s.add(proc(): int = return ii*ii) - -This behaviour has changed in 0.13.0 and now needs to be written as: - -.. code-block:: nim - - proc outer = - var s: seq[proc(): int {.closure.}] = @[] - for i in 0 ..< 30: - (proc () = - let ii = i - s.add(proc(): int = return ii*ii))() - -The reason is that environment creations are now only performed once -per proc call. This change is subtle and unfortunate, but: - -1. Affects almost no code out there. -2. Is easier to implement and we are at a point in Nim's development process where simple+stable wins over perfect-in-theory+unstable-in-practice. -3. Implies programmers are more in control of where memory is allocated which is beneficial for a systems programming language. - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github `_. - -- Fixed "Generic arguments cannot be used in templates (raising undeclared identifier)" - (`#3498 `_) -- Fixed "multimethods: Error: internal error: cgmeth.genConv" - (`#3550 `_) -- Fixed "nimscript - SIGSEGV in except block" - (`#3546 `_) -- Fixed "Bool literals in macros do not work." - (`#3541 `_) -- Fixed "Docs: nativesocket.html - 404" - (`#3582 `_) -- Fixed ""not nil" return types never trigger an error or warning" - (`#2285 `_) -- Fixed "No warning or error is raised even if not nil is specified " - (`#3222 `_) -- Fixed "Incorrect fsmonitor add() filter logic" - (`#3611 `_) -- Fixed ""nimble install nimsuggest" failed" - (`#3622 `_) -- Fixed "compile time `excl ` cause SIGSEGV" - (`#3639 `_) -- Fixed "Unable to echo unsigned ints at compile-time" - (`#2514 `_) -- Fixed "Nested closure iterator produces internal error" - (`#1725 `_) -- Fixed "C Error on walkDirRec closure" - (`#3636 `_) -- Fixed "Error in generated c code" - (`#3201 `_) -- Fixed "C Compile-time error with generic proc type." - (`#2659 `_) -- Fixed "ICE dereferencing array pointer" - (`#2240 `_) -- Fixed "Lambda lifting crash" - (`#2007 `_) -- Fixed "Can't reference outer variables from a closure in an iterator" - (`#2604 `_) -- Fixed "M&S collector breaks with nested for loops." - (`#603 `_) -- Fixed "Regression: bad C codegen" - (`#3723 `_) -- Fixed "JS backend - handle bool type in case statement" - (`#3722 `_) -- Fixed "linenoise compilation with cpp" - (`#3720 `_) -- Fixed "(???,???) duplicate case label" - (`#3665 `_) -- Fixed "linenoise compilation with cpp" - (`#3720 `_) -- Fixed "Update list of backward incompatibilities for Nim 0.12.0 in the main site" - (`#3689 `_) -- Fixed "Can't compile nimble with latest devel - codegen bug" - (`#3730 `_) diff --git a/web/news/e020_nim_in_action.rst b/web/news/e020_nim_in_action.rst deleted file mode 100644 index 33bcb79479937..0000000000000 --- a/web/news/e020_nim_in_action.rst +++ /dev/null @@ -1,32 +0,0 @@ -Nim in Action is now available! -=============================== - -.. container:: metadata - - Posted by Dominik Picheta on 27/01/2016 - -.. raw::html - - - New in Manning Early Access Program: Nim in Action! - - -We are proud to announce that *Nim in Action*, a book about the Nim programming -language, is now available! - -The book is available at this URL: -`https://www.manning.com/books/nim-in-action `_ - -The first three chapters are available for download -as an eBook through Manning's Early Access program. You can download a free -sample of the book containing the first chapter as well! - -*Nim in Action* is currently being written and is expected to be completed by -Summer 2016. If you purchase the eBook you will start receiving new chapters -as they become available. You can also purchase the printed book together with -the eBook for a slightly higher price. - -If you do read the book, even if it's just the first chapter, then please share -any comments, suggestions and questions on the -`Nim forum `_ or in -Manning's own `Author Online forum! `_ diff --git a/web/news/e021_meet_sponsors.rst b/web/news/e021_meet_sponsors.rst deleted file mode 100644 index 0bfb472c585f5..0000000000000 --- a/web/news/e021_meet_sponsors.rst +++ /dev/null @@ -1,30 +0,0 @@ -Meet our BountySource sponsors -============================== - -.. container:: metadata - - Posted by Dominik Picheta on 04/06/2016 - - -.. raw::html - - - Meet our BountySource sponsors! - - -It has now been two months since we began our -`BountySource fundraiser `_. We -promised to create a "Current sponsors" page and are happy to announce that -it is now live `here `_. - -We are happy to say that last month we raised more than in the previous month! -A staggering $862 was raised during that month and we thank each and every one -of you once again for your generous contributions. - -We are gearing up for a brand new release of Nim that includes many bug fixes -and some new features. In the meantime, as always, feel free to get in -touch with us via `Twitter `_, the -`#nim channel on Freenode `_ -or via email at contact@nim-lang.org. - -Thanks for reading! diff --git a/web/news/e022_version_0_14_0.rst b/web/news/e022_version_0_14_0.rst deleted file mode 100644 index 6634d005344d0..0000000000000 --- a/web/news/e022_version_0_14_0.rst +++ /dev/null @@ -1,476 +0,0 @@ -Version 0.14.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta on 07/06/2016 - -It's been a while since the last release, but we've been very busy in the -meantime. In -addition to working on Nim we have started a -`BountySource campaign `_ and -announced the pre-release of a new Nim book titled -`Nim in Action `_. -Our BountySource campaign has already been very successful, helping us raise -enough funds to surpass 4 of our monthly goals. The companies and individuals -that made this possible are listed on our brand new -`sponsors page `_. - -This release includes over 260 bug fixes. As mentioned in the previous release -announcement, one of the focuses of this release was going to be improvements -to the GC. Indeed, the most prominent fixes are related to the GC not collecting -cycles properly. This was a major problem that was triggered typically when -applications using asynchronous I/O were left running for long periods of time. - -There have also been many fixes to the way that the compiler sources are -installed. Some applications such as Nimble depend on these sources and they -are now included in the release tarballs. This should fix many of the problems -that users experienced trying to compile the Nimble package manager. - -Finally, you will find multiple changes in the standard library. Some of which -unfortunately affects backwards compatibility. This includes the ``random`` -procedures being moved to a new ``random`` module, HTTP headers being stored -in a new ``HttpHeaders`` object and the ``round`` procedure in the ``math`` module -being changed to return a ``float`` instead of an ``int``. You can find a full -list of such changes below. - -Together with the new release of Nim, we are also releasing a new version of -Nimble. The release notes for it are available on -`GitHub `_. - -As always you can download the latest version of Nim from the -`download `_ page. - -We hope that you will like this new release. Let us know if you run into -any trouble, have any questions or want to give some feedback. You can get -in touch with us on the `Forum `_, -`IRC `_, -`Twitter `_, -or via email contact@nim-lang.org. - -Happy coding! - -Changes affecting backwards compatibility ------------------------------------------ - -- ``--out`` and ``--nimcache`` command line arguments are now relative to - current directory. Previously they were relative to project directory. -- The json module now stores the name/value pairs in objects internally as a - hash table of type ``fields*: Table[string, JsonNode]`` instead of a - sequence. This means that order is no longer preserved. When using the - ``table.mpairs`` iterator only the returned values can be modified, no - longer the keys. -- The deprecated Nim shebang notation ``#!`` was removed from the language. Use ``#?`` instead. -- Typeless parameters have been removed from the language since it would - clash with ``using``. -- Procedures in ``mersenne.nim`` (Mersenne Twister implementation) no longer - accept and produce ``int`` values which have platform-dependent size - - they use ``uint32`` instead. -- The ``strutils.unindent`` procedure has been rewritten. Its parameters now - match the parameters of ``strutils.indent``. See issue `#4037 `_ - for more details. -- The ``matchers`` module has been deprecated. See issue `#2446 `_ - for more details. -- The ``json.[]`` no longer returns ``nil`` when a key is not found. Instead it - raises a ``KeyError`` exception. You can compile with the ``-d:nimJsonGet`` - flag to get a list of usages of ``[]``, as well as to restore the operator's - previous behaviour. -- When using ``useMalloc``, an additional header containing the size of the - allocation will be allocated, to support zeroing memory on realloc as expected - by the language. With this change, ``alloc`` and ``dealloc`` are no longer - aliases for ``malloc`` and ``free`` - use ``c_malloc`` and ``c_free`` if - you need that. -- The ``json.%`` operator is now overloaded for ``object``, ``ref object`` and - ``openarray[T]``. -- The procs related to ``random`` number generation in ``math.nim`` have - been moved to its own ``random`` module and been reimplemented in pure - Nim. -- The path handling changed. The project directory is not added to the - search path automatically anymore. Add this line to your project's - config to get back the old behaviour: ``--path:"$projectdir"``. (The compiler - replaces ``$projectdir`` with your project's absolute directory when compiling, - so you don't need to replace ``$projectdir`` by your project's actual - directory!). See issue `#546 `_ - and `this forum thread `_ for more - information. -- The ``round`` function in ``math.nim`` now returns a float and has been - corrected such that the C implementation always rounds up from .5 rather - than changing the operation for even and odd numbers. -- The ``round`` function now accepts a ``places`` argument to round to a - given number of places (e.g. round 4.35 to 4.4 if ``places`` is 1). -- In ``strutils.nim``, ``formatSize`` now returns a number representing the - size in conventional decimal format (e.g. 2.234GB meaning 2.234 GB rather - than meaning 2.285 GB as in the previous implementation). By default it - also uses IEC prefixes (KiB, MiB) etc and optionally uses colloquial names - (kB, MB etc) and the (SI-preferred) space. -- The ``==`` operator for ``cstring`` now implements a value comparison - for the C backend (using ``strcmp``), not reference comparisons anymore. - Convert the cstrings to pointers if you really want reference equality - for speed. -- HTTP headers are now stored in a ``HttpHeaders`` object instead of a - ``StringTableRef``. This object allows multiple values to be associated with - a single key. A new ``httpcore`` module implements it and it is used by - both ``asynchttpserver`` and ``httpclient``. - -The ``using`` statement -~~~~~~~~~~~~~~~~~~~~~~~ - -The ``using`` statement now has a different meaning. - -In version 0.13.0, it -was used to provide syntactic convenience for procedures that heavily use -a single contextual parameter. For example: - -.. code-block:: nim - var socket = newSocket() - using socket - - connect("google.com", Port(80)) - send("GET / HTTP/1.1\c\l") - - -The ``connect`` and ``send`` calls are both transformed so that they pass -``socket`` as the first argument: - -.. code-block:: nim - var socket = newSocket() - - socket.connect("google.com", Port(80)) - socket.send("GET / HTTP/1.1\c\l") - -Take a look at the old version of the -`manual `_ -to learn more about the old behaviour. - -In 0.14.0, -the ``using`` statement -instead provides a syntactic convenience for procedure definitions where the -same parameter names and types are used repeatedly. For example, instead of -writing: - -.. code-block:: nim - proc foo(c: Context; n: Node) = ... - proc bar(c: Context; n: Node, counter: int) = ... - proc baz(c: Context; n: Node) = ... - - -You can simply write: - -.. code-block:: nim - {.experimental.} - using - c: Context - n: Node - counter: int - - proc foo(c, n) = ... - proc bar(c, n, counter) = ... - proc baz(c, n) = ... - -Again, the -`manual `_ -has more details. - -You can still achieve a similar effect to what the old ``using`` statement -tried to achieve by using the new experimental ``this`` pragma, documented -`here `_. - -Generic type classes -~~~~~~~~~~~~~~~~~~~~ - -Generic type classes are now handled properly in the compiler, but this -means code like the following does not compile any longer: - -.. code-block:: nim - type - Vec3[T] = distinct array[3, T] - - proc vec3*[T](a, b, c: T): Vec3[T] = Vec3([a, b, c]) - -While every ``Vec3[T]`` is part of the ``Vec3`` type class, the reverse -is not true, not every ``Vec3`` is a ``Vec3[T]``. Otherwise there would -be a subtype relation between ``Vec3[int]`` and ``Vec3[float]`` and there -is none for Nim. The fix is to write this instead: - -.. code-block:: nim - type - Vec3[T] = distinct array[3, T] - - proc vec3*[T](a, b, c: T): Vec3[T] = Vec3[T]([a, b, c]) - -Note that in general we don't advise to use ``distinct array``, -use ``object`` instead. - - -Library Additions ------------------ - -- The rlocks module has been added providing a reentrant lock synchronization - primitive. -- A generic "sink operator" written as ``&=`` has been added to the -``system`` and the ``net`` modules. This operator is similar to the C++ -``<<`` operator which writes data to a stream. -- Added ``strscans`` module that implements a ``scanf`` for easy input extraction. -- Added a version of ``parseutils.parseUntil`` that can deal with a string - ``until`` token. The other versions are for ``char`` and ``set[char]``. -- Added ``splitDecimal`` to ``math.nim`` to split a floating point value - into an integer part and a floating part (in the range -1`_ for more information. -- Nim now supports a different ``using`` statement for more convenience. - Consult `using-statement <../docs/manual.html#statements-and-expressions-using-statement>`_ for more information. -- ``include`` statements are not restricted to top level statements anymore. - -.. - - Nim now supports ``partial`` object declarations to mitigate the problems - that arise when types are mutually dependent and yet should be kept in - different modules. - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github `_. - - - - Fixed "Calling generic templates with explicit generic arguments crashes compiler" - (`#3496 `_) - - Fixed "JS backend - strange utf-8 handling" - (`#3714 `_) - - Fixed "execvpe is glibc specific" - (`#3759 `_) - - Fixed "GC stack overflow with in data structures with circular references." - (`#1895 `_) - - Fixed "Internal compiler error in genTraverseProc" - (`#3794 `_) - - Fixed "unsafeAddr fails in generic context" - (`#3736 `_) - - Fixed "Generic converters produce internal errors" - (`#3799 `_) - - Fixed "Cannot have two anonymous iterators in one proc" - (`#3788 `_) - - Fixed "pure/net.nim fails to compile with --taintMode:on on HEAD" - (`#3789 `_) - - Fixed "Using break inside iterator may produce memory/resource leak" - (`#3802 `_) - - - Fixed "--out and --nimcache wrong paths" - (`#3871 `_) - - Fixed "Release 0.13.0: documentation build failure" - (`#3823 `_) - - Fixed "https post request" - (`#3895 `_) - - Fixed "writeFile regression in nimscript" - (`#3901 `_) - - Fixed "Cannot convert variables to int16 at compile time" - (`#3916 `_) - - Fixed "Error in concepts when using functions on typedesc" - (`#3686 `_) - - Fixed "Multiple generic table types with different type signatures lead to compilation errors." - (`#3669 `_) - - Fixed "Explicit arguments with overloaded procedure?" - (`#3836 `_) - - Fixed "doc2 generates strange output for proc generated by template" - (`#3868 `_) - - Fixed "Passing const value as static[] argument to immediate macro leads to infinite memory consumption by compiler" - (`#3872 `_) - - Fixed "`..<` is not happy with `BiggestInt` from `intVal`" - (`#3767 `_) - - Fixed "stdtmpl filter does not support anything apart from '#' metachar" - (`#3924 `_) - - Fixed "lib/pure/net: Can't bind to ports >= 32768" - (`#3484 `_) - - Fixed "int and float assignment compatibility badly broken for generics" - (`#3998 `_) - - Fixed "Adding echo statement causes "type mismatch" error" - (`#3975 `_) - - Fixed "Dynlib error messages should be written to stderr, not stdout" - (`#3987 `_) - - Fixed "Tests regressions while using the devel branch" - (`#4005 `_) - - - Fixed "Lambda lifting bug: wrong c code generation" - (`#3995 `_) - - Fixed "VM crashes in asgnComplex" - (`#3973 `_) - - Fixed "Unknown opcode opcNGetType" - (`#1152 `_) - - Fixed "`&` operator mutates first operand when used in compileTime proc while assigning result to seq" - (`#3804 `_) - - Fixed "''nil' statement is deprecated' in macro" - (`#3561 `_) - - Fixed "vm crash when accessing seq with mitems iterator" - (`#3731 `_) - - Fixed "`mitems` or `mpairs` does not work for `seq[NimNode]` or `array[T,NimNode]` in a macro" - (`#3859 `_) - - Fixed "passing "proc `,`()" to nim check causes an infinite loop" - (`#4036 `_) - - Fixed "--dynlibOverride does not work with {.push dynlib: name.}" - (`#3646 `_) - - Fixed "system.readChars fails on big len" - (`#3752 `_) - - Fixed "strutils.unindent" - (`#4037 `_) - - Fixed "Compiler's infinite recursion in generic resolution" - (`#2006 `_) - - Fixed "Linux: readLineFromStdin calls quit(0) upon EOF" - (`#3159 `_) - - Fixed "Forum sign up not possible" - (`#2446 `_) - - Fixed "Json module - SIGSEGV if key not exists" - (`#3107 `_) - - Fixed "About asyncdispatch.await and exception" - (`#3964 `_) - - Fixed "Need testcase for JS backend to ensure closure callbacks don't break" - (`#3132 `_) - - Fixed "Unexpected behaviour of C++ templates in conjunction with N_NIMCALL" - (`#4093 `_) - - Fixed "SIGSEGV at compile time when using a compileTime variable as counter" - (`#4097 `_) - - Fixed "Compiler crash issue on 32-bit machines only" - (`#4089 `_) - - Fixed "type mismatch: got () but expected 'outType' in mapIt" - (`#4124 `_) - - Fixed "Generic type constraints broken?" - (`#4084 `_) - - Fixed "Invalid C code generated" - (`#3544 `_) - - Fixed "An exit variable in proc shadows exit function called by quit()" - (`#3471 `_) - - Fixed "ubuntu 16.04 build error" - (`#4144 `_) - - Fixed "Ambiguous identifier error should list all possible qualifiers" - (`#177 `_) - - Fixed "Parameters are not captured inside closures inside closure iterators" - (`#4070 `_) - - Fixed "`$` For array crashes the compiler when assigned to const" - (`#4040 `_) - - - Fixed "Default value for .importcpp enum is initialized incorrectly" - (`#4034 `_) - - Fixed "Nim doesn't instantiate template parameter in cgen when using procedure return value in for-in loop" - (`#4110 `_) - - Fixed "Compile-time SIGSEGV when invoking procedures that cannot be evaluated at compile time from a macro" - (`#3956 `_) - - Fixed "Backtricks inside .emit pragma output incorrect name for types" - (`#3992 `_) - - Fixed "typedef is generated for .importcpp enums" - (`#4145 `_) - - Fixed "Incorrect C code generated for nnkEmpty node" - (`#950 `_) - - Fixed "Syntax error in config file appears as general exception without useful info" - (`#3763 `_) - - Fixed "Converting .importcpp enum to string doesn't work when done inside procs" - (`#4147 `_) - - Fixed "Enum template specifiers do not work for .importcpp enums when they are used as a parameter" - (`#4146 `_) - - Fixed "Providing template specifier recursively for .importcpp type doesn't work" - (`#4148 `_) - - Fixed "sizeof doesn't work for generics in vm" - (`#4153 `_) - - Fixed "Creating list-like structures in a loop leaks memory indefinitely" - (`#3793 `_) - - Fixed "Creating list-like structures in a loop leaks memory indefinitely" - (`#3793 `_) - - Fixed "Enum items generated by a macro have wrong type." - (`#4066 `_) - - Fixed "Memory leak with default GC" - (`#3184 `_) - - Fixed "Rationals Overflow Error on 32-bit machine" - (`#4194 `_) - - - Fixed "osproc waitForExit() is ignoring the timeout parameter" - (`#4200 `_) - - Fixed "Regression: exception parseFloat("-0.0") " - (`#4212 `_) - - Fixed "JS Codegen: Bad constant initialization order" - (`#4222 `_) - - Fixed "Term-rewriting macros gives Error: wrong number of arguments" - (`#4227 `_) - - Fixed "importcpp allowed in body of proc after push" - (`#4225 `_) - - Fixed "pragma SIGSEGV" - (`#4001 `_) - - Fixed "Restrict hints to the current project" - (`#2159 `_) - - Fixed "`unlikely`/`likely` should be no-ops for the Javascript backend" - (`#3882 `_) - - Fixed ".this pragma doesn't work for fields and procs defined for parent type" - (`#4177 `_) - - Fixed "VM SIGSEV with compile-time Table" - (`#3729 `_) - - Fixed "Error during compilation with cpp option on FreeBSD " - (`#3059 `_) - - Fixed "Compiler doesn't keep type bounds" - (`#1713 `_) - - Fixed "Stdlib: future: Shortcut proc definition doesn't support, varargs, seqs, arrays, or openarrays" - (`#4238 `_) - - Fixed "Why don't ``asynchttpserver`` support request-body when ``put`` ``delete``?" - (`#4221 `_) - - Fixed "Paths for includes in Nim documentation" - (`#2640 `_) - - Fixed "Compile pragma doesn't work with relative import" - (`#1262 `_) - - Fixed "Slurp doesn't work with relative imports" - (`#765 `_) - - Fixed "Make tilde expansion consistent" - (`#786 `_) - - Fixed "koch expects nim to be in path for tests?" - (`#3290 `_) - - Fixed "Don't use relative imports for non relative modules (aka babel libs)" - (`#546 `_) - - Fixed ""echo" on general structs does not work" - (`#4236 `_) - - Fixed "Changing math.round() and adding math.integer()" - (`#3473 `_) - - Fixed "Mathematics module missing modf" - (`#4195 `_) - - Fixed "Passing method to macro causes seg fault" - (`#1611 `_) - - Fixed "Internal error with "discard quit"" - (`#3532 `_) - - Fixed "SIGSEGV when using object variant in compile time" - (`#4207 `_) - - Fixed "formatSize has incorrect prefix" - (`#4198 `_) - - Fixed "Add compiler parameter to generate output from source code filters" - (`#375 `_) - - Fixed "Add engineering notation to string formatting functions" - (`#4197 `_) - - Fixed "Very minor error in json documentation" - (`#4255 `_) - - Fixed "can't compile when checking if closure == nil" - (`#4186 `_) - - Fixed "Strange code gen for procs returning arrays" - (`#2259 `_) - - Fixed "asynchttpserver may consume unbounded memory reading headers" - (`#3847 `_) - - - Fixed "download page still implies master is default branch" - (`#4022 `_) - - Fixed "Use standard compiler flags in build script" - (`#2128 `_) - - Fixed "CentOS 6 (gcc-4.4.7) compilation failed (redefinition of typedef)" - (`#4272 `_) - - Fixed "doc2 has issues with httpclient" - (`#4278 `_) - - Fixed "tuples/tuple_with_nil fails without unsigned module" - (`#3579 `_) diff --git a/web/news/e023_version_0_14_2.rst b/web/news/e023_version_0_14_2.rst deleted file mode 100644 index cbfe52713a6d0..0000000000000 --- a/web/news/e023_version_0_14_2.rst +++ /dev/null @@ -1,14 +0,0 @@ -Version 0.14.2 released -======================= - -.. container:: metadata - - Posted by Andreas Rumpf on 09/06/2016 - -Version 0.14.2 is just a bugfix release that fixes the most pressing -regressions. In particular, the ``tar.xz`` now supports documentation -generation, and the Windows installers bundle the latest stable nimble -release. - -The news about the 0.14.0 release are still relevant, so check them out -`here `_. diff --git a/web/news/e024_survey.rst b/web/news/e024_survey.rst deleted file mode 100644 index 0b87577aa032a..0000000000000 --- a/web/news/e024_survey.rst +++ /dev/null @@ -1,29 +0,0 @@ -Launching the 2016 Nim Community Survey -======================================= - -.. container:: metadata - - Posted by Dominik Picheta on 23/06/2016 - -We are proud to announce the official -`2016 Nim Community Survey `_! No matter -whether you use Nim today, have used Nim previously, or never used Nim before; -we want to know your opinions. -Your feedback will help the Nim project understand its strengths and -weaknesses, and to determine development priorities for the future. - -It shouldn't take you much longer than 5 to 10 minutes to complete this survey. -Submissions will be accepted until around the 23rd of July, depending on the -response rates. If you have any questions or feedback, please don't hesitate -to get in touch with us via email at survey@nim-lang.org or on the -`Nim Forum `_. - -We would appreciate your help in spreading the word about this survey. Share -the above link on your social network feeds, with your colleagues and in -other communities. - -Thank you to everyone that helped develop and test the survey! Once the -submission period ends, the results will be shown here and publicised via -Twitter, the Nim Forum and IRC. - -Thanks for your time! diff --git a/web/news/e025_bountysource_update.rst b/web/news/e025_bountysource_update.rst deleted file mode 100644 index 00ca7022ea811..0000000000000 --- a/web/news/e025_bountysource_update.rst +++ /dev/null @@ -1,73 +0,0 @@ -BountySource Update: The Road to v1.0 -===================================== - -.. container:: metadata - - Cross posted by Dominik Picheta on 06/08/2016 from - `Update #4 on BountySource `_ - -We are now in the fourth month of the -`Nim BountySource fundraiser `_ and -here is -this month's update[1]. Once again this month, we have beat our previous -donation record of $1280 having raised over $1600 over the course of July! -That's now 4 months in a row that your monthly donations have been increasing. -As always we are absolutely blown away by your contributions, -`myself `_ and the -rest of the Nim team are extremely thankful for them. It's not only helping us -pay for the necessary expenses (like for example the server that -http://nim-lang.org runs on) but it also inspires us to keep going and to make -Nim the best programming language that it can be. - -As mentioned in -`last month's update `_, we have begun the process of engaging with -the Nim community through a survey. This survey has now been open for more than -a month and will be closing very soon (in about 2 days), so if you haven't -answered it yet, now would be a perfect time to do so. You can find the survey -here: http://nim-lang.org/survey. - -The survey itself has been designed for three types of people: Nim users, -ex-Nim users and people who have never used Nim before. This means that you -have no excuse not to answer it[2]. There are almost 700 submissions and after -the survey is finalised, a blog post will be written with a thorough analysis. - -It is my hope that the survey analysis will give the Nim team a good idea of -what needs to be implemented before version 1.0 can be released. Personally, I -hope to make a thorough review of the standard library to ensure that it is -ready for the "1.0 backwards compatibility lock"[3]. Although I myself have -been very busy lately[4], `Araq `_ has been working very hard to fix -`High Priority `_ -issues, ahead of the 1.0 release. And as always, there has also been a -`lot of pull requests `_ -from a wide range of Nim users. - -Lastly, I would like to mention -`Nim in Action `_ once again. I have recently -finished the final chapter. All that remains now are corrections (based mainly -on your feedback, huge thanks to everyone for reading!) and a final review. -The book will then be put into production[5] with an estimated print date of -around the 20th of January (as usual delays are very much possible). If you -have not yet picked up the book, now would be a perfect time to do so. There -is still time for you to give feedback about the book, and for me to improve it -based on your remarks. It is not often that you can influence a book in this -way, and it is my hope that you will help me make this book one of the best -resources for learning Nim! - -As always, many thanks for reading and if you have any questions or feedback -feel free to get in touch via email at contact@nim-lang.org or via -`Twitter `_. - -1 - These updates have so far been fairly regular and it is my hope to write -at least one a month. Yep, I am patting myself on the back :) - -2 - I joke of course, don't worry about if you don't have the time :) - -3 - After version 1.0, it is typical for a piece of software (especially -a programming language) to ensure that backwards compatibility is not broken -between further minor versions until a new major version such as 2.0 is released. - -4 - Writing a book, moving to Switzerland to start a new job, and playing -`Pokemon Go `_ has certainly kept me busy. - -5 - Basically the brilliant guys at `Manning `_ will -process the book so that it looks good in a printed format. diff --git a/web/news/e026_survey_results.rst b/web/news/e026_survey_results.rst deleted file mode 100644 index 106dce0e4bab7..0000000000000 --- a/web/news/e026_survey_results.rst +++ /dev/null @@ -1,699 +0,0 @@ -Nim Community Survey Results -============================ - -.. container:: metadata - - Posted by Dominik Picheta on 3 September 2016 - -We have recently closed the 2016 Nim Community Survey. I am happy to -say that we have received exactly 790 responses, huge thanks go to the people -that took the time to respond. We're incredibly thankful for this very valuable -feedback. - -This survey was inspired in part by the -`2016 State of Rust `_ -survey. You will note that many of the questions were modelled after -Rust's survey. One of the reasons for doing this was to allow us to easily -compare our results against the results obtained in the Rust survey. In -addition, we of course also liked many of their questions. - -Our survey ran from the 23rd of June 2016 until the 8th of August 2016. The -response numbers are impressive considering Nim's community size; at 790 they -make up just over 25% of the Rust survey's responses. - -The goal of this survey was to primarily determine how our community is using -Nim, in order to better understand how we should be improving it. In particular, -we wanted to know what people feel is missing from Nim in the lead up to -version 1.0. We have also asked our respondents about how well the Nim tools -worked, the challenges of adopting Nim, the resources that they used to learn -Nim and more. - -It is my hope that we will be able to run a similar survey in a years time, -doing so should give us an idea of whether we are improving. -With these general facts in mind, let's begin looking at specific questions. - -How did you find out about Nim? -------------------------------- - -The rationale for the first question was simple, we wanted to know where our -respondents found out about Nim. This is an interesting question for us, as -we do occassionally get users asking us why it took so long for them to hear -about Nim. It allows us to see how effective each website is at spreading the -word about Nim. - -.. raw::html - - - How did you find out about Nim? - - -The majority of our respondents found Nim via Reddit, HackerNews or a search -engine such as Google. These results are not altogether surprising. There were -also a lot of "Other" responses, some of which were a bit more -interesting. These included multiple mentions of habrahabr.ru, Dr. Dobb's, -and lobste.rs. - -Do you use Nim? ---------------- - -Just like the Rust survey creators, we wanted to ensure that our survey was -open to both Nim users as well people who never used Nim. In addition to -those two groups, we have also included a third group of people: ex-Nim -users. All three are interesting, for many different reasons. -Nim users can tell us how they are using Nim and also how Nim's -tooling can improve. Ex-Nim users give us an -idea of why they stopped using Nim. Finally, respondents who never used Nim -can tell us the reasons for not adopting it. - -.. raw::html - - - Do you use Nim? - - -It's nice to see that we have such a good range of respondents. The Rust survey -had a much larger number of Rust users amongst their respondents, with -no distinction between users that never used Rust and users that stopped using -Rust. - -Should we consider your answers to be invalid? ----------------------------------------------- - -This was something I thought would be interesting to have, after I saw it -being used in another survey. While it does pinpoint possibly -invalid respondents, I have opted against filtering those out. Mainly because -that would require re-creating each of the charts generated by Google Forms -manually. - -.. raw::html - - - Should we consider your answers to be invalid? - - -According to the responses to this question, around 94% of our responses -can be considered reliable. - -Nim users ---------- - -The following questions were answered only by the 38.9% of our respondents -who identified themselves as Nim users. - -How long have you been using Nim? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. raw::html - - - How long have you been using Nim? - - -A large proportion of our Nim users were new. This is good news as it means that -our community is growing, with a large proportion of new Nim users that could -become long-term Nimians. In total, more than 35% of Nim users can be considered -new having used Nim for less than 3 months. With 18% of Nim users that can -be considered very new having used Nim for less than a month. -This could suggest that 18% of our users have only just found out about Nim in -the last week or so and have not yet got the chance to use it extensively. - -The high percentages of long term Nim users are encouraging. -They suggest -that many users are continuing to use Nim after making it through the first -few months. The sharp drop at 7-9 months is interesting, but may simply be -due to the fact that there were fewer newcomers during that period, or it -could be because our respondents are more likely to estimate that they have -been using Nim for a year or half a year rather than the awkward 7-9 months. - -.. raw::html - - - Time using Nim and Rust - - -The results for Nim and Rust are actually remarkably similar. They both show a -drop at 7-9 months, although Rust's isn't as dramatic. Nim on the other hand -has a significantly higher percentage of new Nim users. - -Do you use Nim at work? -~~~~~~~~~~~~~~~~~~~~~~~ - -An important aspect of a language's adoption is whether it is being used for -"real" work. We wanted to know how many people are using Nim in their day -jobs and under what circumstances it is used. - -.. raw::html - - - Do you use Nim at work? - - -While a vast majority of our users are not using Nim at work, more than 25% -of them are. It's encouraging to see such a high number already, even before -we have released version 1.0. In fact, this percentage is likely close to 30%, -because many of the "Other" responses mention using Nim for the likes of -internal tools or small scripts to help with the respondent's work. - -.. raw::html - - - Do you use Rust at work? - - -Interestingly, a larger percentage of Nim users are using Nim at work than -Rust users. The sample sizes are of course vastly different, but it's still an -interesting result. Combined, nearly 1/5th of Rust users are using Rust -commercially whereas more than a quarter of Nim users are using Nim -commercially. - -Approximately how large are all the Nim projects that you work on? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Finding out how large the Nim projects worked on by Nim users are is also -very valuable. - -.. raw::html - - - Nim project size for all users - - -This shows us that currently Nim is primarily being used for small scripts and -applications, with nearly 60% of the projects consisting of less than 1,000 -lines of code. This makes sense as many of our users are not using Nim -professionally, but are doing so in their spare time. - -.. raw::html - - - Nim project size for work users - - -The numbers for part-time and full-time work users of Nim tell a different -story. Over 70% of the projects written by full-time users are between 10,001 -and 100,000 lines of code. Part-time users show a slightly different trend, -with many more small projects, the majority being between 1,000 and -10,000 lines of code. - -Overall it's good to see that there is a few large projects out there which are -composed of more than 100,000 lines of code. We expect to see the amount of -large projects to grow with time, especially with version 1.0 on the way. - -.. raw::html - - - Nim project size for work users (Nim vs. Rust) - - -In comparison to Rust the proportion of project sizes for full-time users is -vastly different. This is likely due to our small sample size. Project sizes for -part-time users between Rust and Nim are somewhat similar, with differences of -around 10% for each project size. - -Do you plan to try to use Nim at work? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. raw::html - - - Planning to use Nim at work? - - -It's also encouraging to see that over 50% of Nim users are planning to use -Nim at work! This is slightly more than Rust's 40% and should help Nim's -adoption into even more areas. - -Nim and its tools -~~~~~~~~~~~~~~~~~ - -In this section of the survey, we wanted to find out the tools that Nim -users are utilising when developing Nim applications. - -What editor(s) do you use when writing Nim? -___________________________________________ - -Programmers are very specific when it comes to their editor of choice, because -of that it's good to know which editor is most popular among our community. - -.. raw::html - - - Editors used by Nim users - - -Looks like Vim is the winner with almost 30%. Followed by Sublime Text and -Emacs. Aporia, the Nim IDE, gets a respectable 15.5%. There was -also more than -17% of answers which included "Other" editors, such as: Notepad++, Geany, gedit, -and Kate. - -What operating system(s) do you compile for and run your Nim projects on? -_________________________________________________________________________ - -This question gave us information about the most popular target operating -systems, as well as some of the more obscure ones. We have asked this question -to find out the platforms on which Nim applications run on most frequently. - -.. raw::html - - - Target operating systems - - -This question allowed multiple choices, so each percentage is out of the total -number of respondents for this question. For example, 80.7% of the -respondents selected "Linux" but only 26.6% selected OS X. - -This makes Linux by far the most popular target for Nim applications. -Some "Other" targets included: BSD (OpenBSD, FreeBSD), iOS, Android, and -JavaScript. -It's great to see Nim being used on such a wide variety of platforms. - -What operating system(s) do you develop Nim projects on? -________________________________________________________ - -With this question, we wanted to know what operating systems are used for -development. - -.. raw::html - - - Development operating systems - - -This question also allowed multiple choices and ended up with very similar -results. - -You can see that Linux is also the most popular developmental -platform for Nim. But it's more popular as a target platform. - -Which version(s) of Nim do you use for your applications? -_________________________________________________________ - -.. raw::html - - - Version use - - -At the time of this survey, version 0.14.2 was the latest stable release. -It's no wonder that it is the most commonly used release of Nim. It's good to -see that the older versions are not used as often. The high use of ``Git HEAD (devel)`` -(nightly builds) isn't surprising, Nim is still evolving rapidly and our -release schedule is not regular or frequent. - -Once we go past the 1.0 release, we expect to see much less use of the unstable -``devel`` branch. - -Has upgrading to a new version of the Nim compiler broken your code? -____________________________________________________________________ - -.. raw::html - - - Breakage - - -Despite the unstable nature of Nim in the lead up to version 1.0, whenever -we make breaking changes we do our best to deprecate things and ensure that -old code continues to work for our users. Of course sometimes this is not -possible and other times it is simply easier to add a breaking change. - -This question was asked to determine how much our user base is affected by -breaking changes between Nim versions. We decided to have three possible -answers for this question in order to give us an idea how frequent the -breakage was. - -It's incredible to see that over 50% of our users have not experienced any -breakage after upgrading. We expect this number to increase significantly -after version 1.0 is released. Of the users that did experience breakage, -over 80% of them said that it was a rare occurrence. - -In comparison to Rust, our results show that there was a higher percentage of -users experiencing breakage as a result of an upgrade. This is to be expected, -because Nim is still in its pre-1.0 period, whereas Rust 1.0 has been released -over a year ago now. - -Unfortunately while we are still in this pre-1.0 period, releases will likely -introduce breaking changes as we refine certain aspects of Nim such as its -standard library, so the number of users experiencing breaking changes may -increase. - -If so, how much work did it take to fix it? -___________________________________________ - -.. raw::html - - - difficulty fixing breakage - - -Thankfully most of the breakage experienced by Nim users was very easy to fix. - - -If you used Nimble, do you like it? -___________________________________ - -.. raw::html - - - Do you like Nimble? - - -Nimble is the Nim package manager, a tool that is very important in Nim's -ecosystem as it allows developers to easily install dependencies for their -software. - -The majority of respondents rated it as a 4, showing us that the majority does -like Nimble. With over 55% rating it a 4 or 5. This percentage isn't as -overwhelming as the 94.1% of users that rated Cargo a 4 or 5 in the Rust -survey. Based on these results I think that we definitely need to do a -better job with Nimble. - -In our next survey, it might be a good idea to ask more questions about Nimble -to determine how exactly it can be improved. - -What aspects of Nim do you find most appealing? -_______________________________________________ - -.. raw::html - - - What aspects of Nim do you find most appealing? - - -We were interested to know the features of Nim that appeal most to our users. -More than 80% of our respondents selected "Execution Speed" as one of the -features that appeal to them. With "Development Speed" and "Readability" -tying for second place and "Metaprogramming" at third place. - -The options given to our respondents are rather predictable, -they do show us which of these features have the highest appeal though. -What's more interesting are the "Other" answers. - -By far the most popular "Other" answer was related to Nim's compilation to C. -Many users mentioned that they like how easy it is to interface with C -libraries and the great portability that compiling to C offers. - -What aspects of Nim do you find most displeasing? -_________________________________________________ - -.. raw::html - - - What aspects of Nim do you find most displeasing? - - -It was only natural to ask this question. The results are almost perfectly -opposite to the previous question's answers, with almost 50% of respondents -selecting "Debugging Tools" -as the most displeasing aspect of Nim. With "Documentation" and "Testing Tools" -in second and third place respectively. There is also a much larger number of -"Other" answers to this question. - -The "Other" answers for this question vary a lot. Here is a selection of -them, ordered by frequency: - -* Small community size. -* Lack of in-depth tutorials. -* Quality of error messages. -* Forward declarations and no cyclic imports. -* Bugs in the standard library. -* No good IDE. -* No REPL. -* No major version. -* Bugs in the compiler. -* Lack of libraries. -* Difficulty installing on Windows. -* Non-intuitive semantics of various constructs. -* Lack of immutable collections. -* Async/await not being production ready. -* Lack of shared collections for threads. -* No Haxe target. -* Memory safety. - -We hope that we can improve these things with time. Many of these issues are -already being worked on, including the removal of the need for forward -declarations. Some of these issues like our small community size are difficult -to fix, but we will nonetheless do our best. - - -Previous Nim users -~~~~~~~~~~~~~~~~~~ - -For users that have used Nim before but decided against using it, we asked just -one specific question. The proportion of our respondents that answered it -was 24%. - -Why did you stop using Nim? -___________________________ - -.. raw::html - - - I stopped using Nim because... - - -Again, this question got a lot of "Other" answers. Apart from that, the -most popular reason for leaving Nim is that it is not stable. Followed by the -a lack of needed libraries and packages and the instability of the -standard library. - -* Lack of IDE support. -* Style insensitive. -* Documentation. -* Dislike the syntax. -* Community is too small. -* Missing language features (for example RAII). -* No opportunities to use it at work. -* Messy standard library. - -The first item, "Lack of IDE support", was mentioned by multiple respondents. -In the future we should look into ensuring that major IDEs have plugins which -enable easy Nim development. - -Based on some of the "Other" answers, it seems that many of the respondents -have not used Nim for very long, for example many respondents complained about -installation issues which they would have run into before getting a chance to -use Nim. Because of this I would consider them not -ex-Nim users but developers that have not had a chance to try Nim fully. -Next time we should also ask how long the respondent has used Nim for to get a -better idea of whether they had a chance to use Nim for extended periods of -time. - -Non-Nim users -~~~~~~~~~~~~~ - -We also wanted to know the reasons why developers decided against using Nim. - -Why do you not use Nim? -_______________________ - -.. raw::html - - - I don't use Nim because... - - -The most common reason that people have for not using Nim is that it is -not yet ready for production. Thankfully this will improve with time. -IDE support is also a prominent factor just as we've seen in previous results. - -There is also a lot of "Other" answers, let's have a look at a selection of -them. Some of the most prominent ones, in order of frequency, include: - -* No time to use/learn it -* Syntax -* Documentation is incomplete -* Garbage Collection -* Prefer functional paradigm -* Small community -* Style insensitivity/Case insensitivity - -One respondent made a very good suggestion: they said that the -"Do you use Nim?" question should have included "No, but I intend to" as -an answer. Definitely something we will do in the next survey. Indeed, many -respondents mentioned that they were planning on trying out Nim but that they -just have no time to do so, this is very encouraging! - -Learning Resources -~~~~~~~~~~~~~~~~~~ - -We wanted to get an idea of how Nim users are learning Nim. Every respondent -answered this question, no matter what they answered for the "Do you use Nim?" -question. - -Which learning resources, if any, did you use to learn Nim? -___________________________________________________________ - -.. raw::html - - - learning resources - - -The idea behind this question was to understand which learning resources -were most popular among our user base. The -`Nim tutorial `_ is by far the most -popular. In previous questions, we saw respondents mentioning that the Nim -tutorial does not go into enough detail about Nim. Thanks to this information -we can come to the conclusion that the tutorial needs to be improved -significantly to make sure that it gives our users the necessary information -to use Nim effectively. - -Indeed, many users also use the -`Nim manual `_ to learn Nim. -This manual has been -written as a specification and so is not ideal for teaching Nim. Many of -the concepts in the Nim manual need to be explained in a lot more detail in -the Nim tutorial. - -Of course, it's exciting to see our respondents using other materials to learn -Nim. In particular I am excited to see that over 15% of the respondents have -used -`Nim in Action `_ -to learn Nim. I expect that more and more users will pick up the book after it -is fully published. - -Nim in Action -_____________ - -As the author of -`Nim in Action `_, -I wanted to get some statistics surrounding -my book. With this in mind, I have created some questions relating to it. - -Have you read Nim in Action? -____________________________ - -.. raw::html - - - Have you read Nim in Action? - - -It's good to see that over 50% of respondents have read the book or are at least -planning to read it. Keep in mind that this question was answered by all -respondents, not just Nim users. - -.. container:: standout - - Are you interested in purchasing a copy of - `Nim in Action `_? - If so, you can use code ``wm090416lt`` to get 50% off the printed book today only! - If you purchase it now you will get access to an early access copy of - Nim in Action in eBook form and will be able to take part in the development - of this book. - -Did you enjoy Nim in Action? -____________________________ - -.. raw::html - - - Did you enjoy Nim in Action? - - -Of the people that read Nim in Action it's nice to see that almost 70% have -enjoyed it. - -Nim's future -~~~~~~~~~~~~ - -What improvements are needed before Nim v1.0 can be released? -_____________________________________________________________ - -We were interested to know what our users believe is needed before -Nim version 1.0 can be released. - -.. raw::html - - - What is needed before 1.0 can be released? - - -It appears that the standard library is the biggest concern. With more than half -of all respondents selecting "The standard library needs to reviewed and -any problems with it fixed". This is in fact something we are already planning -to address, so it's good to see that the majority agrees with us. - -A large proportion of users also believes that the language is great as-is -and that we should focus on stabilising the compiler. This somewhat contradicts -the majority. But perhaps most of them thought that "The language" excludes the -standard library. - -For this question, we decided to give our respondents a dedicated place to -give general feedback about what they feel is needed before v1.0 can be -released. We received over 200 responses to that. Many of these responses -reflect what we have already seen: that the documentation needs to improve, -that we need a good Nim IDE, stability for experimental features such as -concepts, the standard library needs to be cleaned up. - -Unfortunately many respondents used this question to say what needs to be fixed -in Nim in general, not what is definitely necessary before 1.0 can be released. - -Community demographics -~~~~~~~~~~~~~~~~~~~~~~ - -What domain do you work in currently? -_____________________________________ - -.. raw::html - - - Work domains - - - -Nim users are working in a wide variety of domains. It is encouraging to see -people from so many different backgrounds taking part in this survey. - -What programming languages are you most comfortable with? -_________________________________________________________ - - -.. raw::html - - - Programming languages - - -Python and C are the top two programming languages that our respondents are -most comfortable with. This is not altogether surprising. - -Last words -~~~~~~~~~~ - -At the end of the survey we gave our respondents a chance to speak their mind -about anything they wish, with a simple question: "Anything else you'd like -to tell us?" - -There was a lot of great feedback given in this question from people who -obviously really care deeply about Nim. There is too much to outline here, -but rest assurred that we will take it all into account and do our best to -act on it. - -In addition to feedback, we were also overwhelmed by the amount of positive -comments in the answers to this -question. There was a lot of support from the community thanking us for our -work and determination. - -I'll let some quotes speak for themselves: - -.. raw::html - -
You rock, seriously.
-
Nim rocks! Keep it up! Thank you very much!
-
You've made great progress on the language without any corporate backing, that is amazing. I wish Nim becomes one of the top used languages in a few years.
-
Nim is elegant and wonderful! Keep at it!
- -Our community is truly brilliant. We thank each and every one of you for -filling out this survey and hope that you will help us tackle some of the -challenges that face Nim. - -This survey was a good place to give us feedback, but please don't wait for -the next one. We are always looking to hear more from you and we hope that you -will participate in discussions relating to this survey as well the future -of Nim. - -Thanks for reading, and have a good day! diff --git a/web/news/e027_version_0_15_0.rst b/web/news/e027_version_0_15_0.rst deleted file mode 100644 index 47c02e9e41907..0000000000000 --- a/web/news/e027_version_0_15_0.rst +++ /dev/null @@ -1,517 +0,0 @@ -Version 0.15.0 released -======================= - -.. container:: metadata - - Posted by Dominik Picheta and Andreas Rumpf on 30/09/2016 - -We're happy to announce that the latest release of Nim, version 0.15.0, is now -available! - -As always, you can grab the latest version from the -`downloads page `_. - -This release includes almost 180 bug fixes and improvements. To see a full list -of changes, take a look at the detailed changelog -`below <#changelog>`_. - -Some of the most significant changes in this release include: improvements to -the documentation, addition of a new ``multisync`` macro, and a new -``HttpClient`` implementation. - -Documentation -~~~~~~~~~~~~~ - -All pages in the documentation now contain a search box and a drop down to -select how procedures should be sorted. This allows you to search for -procedures, types, macros and more from any documentation page. - -.. raw::html - - - Doc search - - -Sorting the procedures by type shows a more natural table of contents. This -should also help you to find procedures and other identifiers. - -.. raw::html - - - Doc sort - - -Multisync macro -~~~~~~~~~~~~~~~ - -The ``multisync`` macro was implemented to enable you to define both -synchronous and asynchronous IO procedures without having to duplicate a -lot of code. - -As an example, consider the ``recvTwice`` procedure below: - -.. code-block:: nim - proc recvTwice(socket: Socket | AsyncSocket): Future[string] {.multisync.} = - result = "" - result.add(await socket.recv(25)) - result.add(await socket.recv(20)) - -The ``multisync`` macro will transform this procedure into the following: - -.. code-block:: nim - proc recvTwice(socket: Socket): string = - result = "" - result.add(socket.recv(25)) - result.add(socket.recv(20)) - - proc recvTwice(socket: AsyncSocket): Future[string] {.async.} = - result = "" - result.add(await socket.recv(25)) - result.add(await socket.recv(20)) - -Allowing you to use ``recvTwice`` with both synchronous and asynchronous sockets. - -HttpClient -~~~~~~~~~~ - -Many of the ``httpclient`` module's procedures have been deprecated in -favour of a new implementation using the ``multisync`` macro. There are now -two types: ``HttpClient`` and ``AsyncHttpClient``. Both of these implement the -same procedures and functionality, the only difference is timeout support and -whether they are blocking or not. - -See the `httpclient `_ module -documentation for more information. - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- The ``json`` module now uses an ``OrderedTable`` rather than a ``Table`` - for JSON objects. - -- The ``split`` `(doc) `_ - procedure in the ``strutils`` module (with a delimiter of type - ``set[char]``) no longer strips and splits characters out of the target string - by the entire set of characters. Instead, it now behaves in a - similar fashion to ``split`` with ``string`` and ``char`` - delimiters. Use ``splitWhitespace`` to get the old behaviour. - -- The command invocation syntax will soon apply to open brackets - and curlies too. This means that code like ``a [i]`` will be - interpreted as ``a([i])`` and not as ``a[i]`` anymore. Likewise - ``f (a, b)`` means that the tuple ``(a, b)`` is passed to ``f``. - The compiler produces a warning for ``a [i]``:: - - Warning: a [b] will be parsed as command syntax; spacing is deprecated - - See `Issue #3898 `_ for the - relevant discussion. - -- Overloading the special operators ``.``, ``.()``, ``.=``, ``()`` now - needs to be enabled via the ``{.experimental.}`` pragma. - -- ``immediate`` templates and macros are now deprecated. - Use ``untyped`` `(doc) `_ - parameters instead. - -- The metatype ``expr`` is deprecated. Use ``untyped`` - `(doc) `_ instead. - -- The metatype ``stmt`` is deprecated. Use ``typed`` - `(doc) `_ instead. - -- The compiler is now more picky when it comes to ``tuple`` types. The - following code used to compile, now it's rejected: - -.. code-block:: nim - - import tables - var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]() - rocketaims["hi"] = {(-1.int8, 0.int8): 0.int64}.toTable() - -Instead be consistent in your tuple usage and use tuple names for named tuples: - -.. code-block:: nim - - import tables - var rocketaims = initOrderedTable[string, Table[tuple[k: int8, v: int8], int64]]() - rocketaims["hi"] = {(k: -1.int8, v: 0.int8): 0.int64}.toTable() - -- Now when you compile console applications for Windows, console output - encoding is automatically set to UTF-8. - -- Unhandled exceptions in JavaScript are now thrown regardless of whether - ``noUnhandledHandler`` is defined. But the stack traces should be much more - readable now. - -- In JavaScript, the ``system.alert`` procedure has been deprecated. - Use ``dom.alert`` instead. - -- De-deprecated ``re.nim`` because there is too much code using it - and it got the basic API right. - -- The type of ``headers`` field in the ``AsyncHttpClient`` type - `(doc) `_ - has been changed - from a string table to the specialised ``HttpHeaders`` type. - -- The ``httpclient.request`` - `(doc) `_ - procedure which takes the ``httpMethod`` as a string - value no longer requires it to be prefixed with ``"http"`` - (or similar). - -- Converting a ``HttpMethod`` - `(doc) `_ - value to a string using the ``$`` operator will - give string values without the ``"Http"`` prefix now. - -- The ``Request`` - `(doc) `_ - object defined in the ``asynchttpserver`` module now uses - the ``HttpMethod`` type for the request method. - -Library Additions ------------------ - -- Added ``readHeaderRow`` and ``rowEntry`` to the ``parsecsv`` - `(doc) `_ module - to provide - a lightweight alternative to python's ``csv.DictReader``. - -- Added ``setStdIoUnbuffered`` proc to the ``system`` module to enable - unbuffered I/O. - -- Added ``center`` and ``rsplit`` to the ``strutils`` - `(doc) `_ module - to provide similar Python functionality for Nim's strings. - -- Added ``isTitle``, ``title``, ``swapCase``, ``isUpper``, ``toUpper``, - ``isLower``, ``toLower``, ``isAlpha``, ``isSpace``, and ``capitalize`` - to the ``unicode.nim`` - `(doc) `_ module - to provide unicode aware case manipulation and case - testing. - -- Added a new module ``strmisc`` - `(doc) `_ - to hold uncommon string - operations. Currently contains ``partition``, ``rpartition`` - and ``expandTabs``. - -- Split out ``walkFiles`` in the ``os`` - `(doc) `_ module to three separate procs - in order to make a clear distinction of functionality. ``walkPattern`` iterates - over both files and directories, while ``walkFiles`` now only iterates - over files and ``walkDirs`` only iterates over directories. - -- Added a synchronous ``HttpClient`` in the ``httpclient`` - `(doc) `_ - module. The old - ``get``, ``post`` and similar procedures are now deprecated in favour of it. - -- Added a new macro called ``multisync`` allowing you to write procedures for - synchronous and asynchronous sockets with no duplication. - -- The ``async`` macro will now complete ``FutureVar[T]`` parameters - automatically unless they have been completed already. - -Tool Additions --------------- - -- The documentation is now searchable and sortable by type. -- Pragmas are now hidden by default in the documentation to reduce noise. -- Edit links are now present in the documentation. - - -Compiler Additions ------------------- - -- The ``-d/--define`` flag can now optionally take a value to be used - by code at compile time. - `(doc) `_ - -Nimscript Additions -------------------- - -- It's possible to enable and disable specific hints and warnings in - Nimscript via the ``warning`` and ``hint`` procedures. - -- Nimscript exports a proc named ``patchFile`` which can be used to - patch modules or include files for different Nimble packages, including - the ``stdlib`` package. - -Language Additions ------------------- - -- Added ``{.intdefine.}`` and ``{.strdefine.}`` macros to make use of - (optional) compile time defines. - `(doc) `_ - -- If the first statement is an ``import system`` statement then ``system`` - is not imported implicitly anymore. This allows for code like - ``import system except echo`` or ``from system import nil``. - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github `_. - -- Fixed "RFC: should startsWith and endsWith work with characters?" - (`#4252 `_) - -- Fixed "Feature request: unbuffered I/O" - (`#2146 `_) -- Fixed "clear() not implemented for CountTableRef" - (`#4325 `_) -- Fixed "Cannot close file opened async" - (`#4334 `_) -- Fixed "Feature Request: IDNA support" - (`#3045 `_) -- Fixed "Async: wrong behavior of boolean operations on futures" - (`#4333 `_) -- Fixed "os.walkFiles yields directories" - (`#4280 `_) -- Fixed "Fix #4392 and progress on #4170" - (`#4393 `_) -- Fixed "Await unable to wait futures from objects fields" - (`#4390 `_) -- Fixed "TMP variable name generation should be more stable" - (`#4364 `_) -- Fixed "nativesockets doesn't compile for Android 4.x (API v19 or older) because of gethostbyaddr" - (`#4376 `_) -- Fixed "no generic parameters allowed for ref" - (`#4395 `_) -- Fixed "split proc in strutils inconsistent for set[char]" - (`#4305 `_) -- Fixed "Problem with sets in devel" - (`#4412 `_) -- Fixed "Compiler crash when using seq[PNimrodNode] in macros" - (`#537 `_) -- Fixed "ospaths should be marked for nimscript use only" - (`#4249 `_) -- Fixed "Repeated deepCopy() on a recursive data structure eventually crashes" - (`#4340 `_) -- Fixed "Analyzing destructor" - (`#4371 `_) -- Fixed "getType does not work anymore on a typedesc" - (`#4462 `_) -- Fixed "Error in rendering empty JSON array" - (`#4399 `_) -- Fixed "Segmentation fault when using async pragma on generic procs" - (`#2377 `_) -- Fixed "Forwarding does not work for generics, | produces an implicit generic" - (`#3055 `_) -- Fixed "Inside a macro, the length of the `seq` data inside a `queue` does not increase and crashes" - (`#4422 `_) -- Fixed "compiler sigsegv while processing varargs" - (`#4475 `_) -- Fixed "JS codegen - strings are assigned by reference" - (`#4471 `_) -- Fixed "when statement doesn't verify syntax" - (`#4301 `_) -- Fixed ".this pragma doesn't work with .async procs" - (`#4358 `_) -- Fixed "type foo = range(...) crashes compiler" - (`#4429 `_) -- Fixed "Compiler crash" - (`#2730 `_) -- Fixed "Crash in compiler with static[int]" - (`#3706 `_) -- Fixed "Bad error message "could not resolve"" - (`#3548 `_) -- Fixed "Roof operator on string in template crashes compiler (Error: unhandled exception: sons is not accessible [FieldError])" - (`#3545 `_) -- Fixed "SIGSEGV during compilation with parallel block" - (`#2758 `_) -- Fixed "Codegen error with template and implicit dereference" - (`#4478 `_) -- Fixed "@ in importcpp should work with no-argument functions" - (`#4496 `_) -- Fixed "Regression: findExe raises" - (`#4497 `_) -- Fixed "Linking error - repeated symbols when splitting into modules" - (`#4485 `_) -- Fixed "Error: method is not a base" - (`#4428 `_) -- Fixed "Casting from function returning a tuple fails" - (`#4345 `_) -- Fixed "clang error with default nil parameter" - (`#4328 `_) -- Fixed "internal compiler error: openArrayLoc" - (`#888 `_) -- Fixed "Can't forward declare async procs" - (`#1970 `_) -- Fixed "unittest.check and sequtils.allIt do not work together" - (`#4494 `_) -- Fixed "httpclient package can't make SSL requests over an HTTP proxy" - (`#4520 `_) -- Fixed "False positive warning "declared but not used" for enums." - (`#4510 `_) -- Fixed "Explicit conversions not using converters" - (`#4432 `_) - -- Fixed "Unclear error message when importing" - (`#4541 `_) -- Fixed "Change console encoding to UTF-8 by default" - (`#4417 `_) - -- Fixed "Typedesc ~= Generic notation does not work anymore!" - (`#4534 `_) -- Fixed "unittest broken?" - (`#4555 `_) -- Fixed "Operator "or" in converter types seems to crash the compiler." - (`#4537 `_) -- Fixed "nimscript failed to compile/run -- Error: cannot 'importc' variable at compile time" - (`#4561 `_) -- Fixed "Regression: identifier expected, but found ..." - (`#4564 `_) -- Fixed "varargs with transformation that takes var argument creates invalid c code" - (`#4545 `_) -- Fixed "Type mismatch when using empty tuple as generic parameter" - (`#4550 `_) -- Fixed "strscans" - (`#4562 `_) -- Fixed "getTypeImpl crashes (SIGSEGV) on variant types" - (`#4526 `_) -- Fixed "Wrong result of sort in VM" - (`#4065 `_) -- Fixed "I can't call the random[T](x: Slice[T]): T" - (`#4353 `_) -- Fixed "invalid C code generated (function + block + empty tuple)" - (`#4505 `_) - -- Fixed "performance issue: const Table make a copy at runtime lookup." - (`#4354 `_) -- Fixed "Compiler issue: libraries without absolute paths cannot be found correctly" - (`#4568 `_) -- Fixed "Cannot use math.`^` with non-int types." - (`#4574 `_) -- Fixed "C codegen fails when constructing an array using an object constructor." - (`#4582 `_) -- Fixed "Visual Studio 10 unresolved external symbol _trunc(should we support VS2010?)" - (`#4532 `_) -- Fixed "Cannot pass generic subtypes to proc for generic supertype" - (`#4528 `_) -- Fixed "Lamda-lifting bug leading to crash." - (`#4551 `_) -- Fixed "First-class iterators declared as inline are compiled at Nim side (no error message) and fail at C" - (`#2094 `_) -- Fixed "VS2010-warning C4090 : 'function' : different 'const' qualifiers" - (`#4590 `_) -- Fixed "Regression: type mismatch with generics" - (`#4589 `_) -- Fixed "„can raise an unlisted exception“ when assigning nil as default value" - (`#4593 `_) -- Fixed "upcoming asyncdispatch.closeSocket is not GC-safe" - (`#4606 `_) -- Fixed "Visual Studio 10.0 compiler errors, 12.0 warning" - (`#4459 `_) -- Fixed "Exception of net.newContext: result.extraInternalIndex == 0 [AssertionError]" - (`#4406 `_) -- Fixed "error: redeclaration of 'result_115076' with no linkage" - (`#3221 `_) -- Fixed "Compiler crashes on conversion from int to float at compile time" - (`#4619 `_) -- Fixed "wrong number of arguments regression in devel" - (`#4600 `_) -- Fixed "importc $ has broken error message (and is not documented)" - (`#4579 `_) -- Fixed "Compiler segfaults on simple importcpp in js mode [regression]" - (`#4632 `_) -- Fixed "Critical reference counting codegen problem" - (`#4653 `_) -- Fixed "tables.nim needs lots of {.noSideEffect.}" - (`#4254 `_) -- Fixed "Capture variable error when using ``=>`` macro" - (`#4658 `_) -- Fixed "Enum from char: internal error getInt" - (`#3606 `_) -- Fixed "Compiler crashes in debug mode (no error in release mode) with Natural discriminant in object variants" - (`#2865 `_) -- Fixed "SIGSEGV when access field in const object variants" - (`#4253 `_) -- Fixed "varargs cannot be used with template converter." - (`#4292 `_) -- Fixed "Compiler crashes when borrowing $" - (`#3928 `_) -- Fixed "internal error: genMagicExpr: mArrPut" - (`#4491 `_) -- Fixed "Unhelpful error message on importc namespace collision" - (`#4580 `_) -- Fixed "Problem with openarrays and slices" - (`#4179 `_) -- Fixed "Removing lines from end of file then rebuilding does not rebuild [js only?]" - (`#4656 `_) -- Fixed "getCurrentException and getCurrentExceptionMsg do not work with JS" - (`#4635 `_) -- Fixed "generic proc parameter is not inferred if type parameter has specifier" - (`#4672 `_) -- Fixed "Cannot instantiate generic parameter when it is parent type parameter" - (`#4673 `_) -- Fixed "deepCopy doesn't work with inheritance after last commit" - (`#4693 `_) -- Fixed "Multi-methods don't work when passing ref to a different thread" - (`#4689 `_) -- Fixed "Infinite loop in effect analysis on generics" - (`#4677 `_) -- Fixed "SIGSEGV when compiling NimYAML tests" - (`#4699 `_) - -- Fixed "Closing AsyncEvent now also unregisters it on non-Windows platforms" - (`#4694 `_) -- Fixed "Don't update handle in upcoming/asyncdispatch poll() if it was closed" - (`#4697 `_) -- Fixed "generated local variables declared outside block" - (`#4721 `_) -- Fixed "Footer Documentation links, & Community link point to the wrong place under news entries" - (`#4529 `_) -- Fixed "Jester's macro magic leads to incorrect C generation" - (`#4088 `_) -- Fixed "cas bug in atomics.nim" - (`#3279 `_) -- Fixed "nimgrep PEG not capturing the pattern 'A'" - (`#4751 `_) -- Fixed "GC assert triggers when assigning TableRef threadvar" - (`#4640 `_) -- Fixed ".this pragma conflicts with experimental ptr dereferencing when names conflict" - (`#4671 `_) -- Fixed "Generic procs accepting var .importcpp type do not work [regression]" - (`#4625 `_) -- Fixed "C Error on tuple assignment with array" - (`#4626 `_) -- Fixed "module securehash not gcsafe" - (`#4760 `_) - -- Fixed "Nimble installation failed on Windows x86." - (`#4764 `_) -- Fixed "Recent changes to marshal module break old marshalled data" - (`#4779 `_) -- Fixed "tnewasyncudp.nim test loops forever" - (`#4777 `_) -- Fixed "Wrong poll timeout behavior in asyncdispatch" - (`#4262 `_) -- Fixed "Standalone await shouldn't read future" - (`#4170 `_) -- Fixed "Regression: httpclient fails to compile without -d:ssl" - (`#4797 `_) -- Fixed "C Error on declaring array of heritable objects with bitfields" - (`#3567 `_) -- Fixed "Corruption when using Channels and Threads" - (`#4776 `_) -- Fixed "Sometimes Channel tryRecv() erroneously reports no messages available on the first call on Windows" - (`#4746 `_) -- Fixed "Improve error message of functions called without parenthesis" - (`#4813 `_) -- Fixed "Docgen doesn't find doc comments in macro generated procs" - (`#4803 `_) -- Fixed "asynchttpserver may consume unbounded memory reading headers" - (`#3847 `_) -- Fixed "TLS connection to api.clashofclans.com hangs forever." - (`#4587 `_) diff --git a/web/news/e028_version_0_15_2.rst b/web/news/e028_version_0_15_2.rst deleted file mode 100644 index 601a26646ff90..0000000000000 --- a/web/news/e028_version_0_15_2.rst +++ /dev/null @@ -1,77 +0,0 @@ -Version 0.15.2 released -======================= - -.. container:: metadata - - Posted by Andreas Rumpf on 23/10/2016 - -We're happy to announce that the latest release of Nim, version 0.15.2, is now -available! - -As always, you can grab the latest version from the -`downloads page `_. - -This release is a pure bugfix release fixing the most pressing issues and -regressions of 0.15.0. For Windows we now provide zipfiles in addition to the -NSIS based installer which proves to be hard to maintain and after all these -months still has serious issues. So we encourage you download the .zip -file instead of the .exe file! Unzip it somewhere, run ``finish.exe`` to -detect your MingW installation, done. ``finish.exe`` can also set your PATH -environment variable. - - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github `_. - - -- Fixed "`NimMain` not exported in DLL, but `NimMainInner` is" - (`#4840 `_) -- Fixed "Tables clear seems to be broken" - (`#4844 `_) -- Fixed "compiler: internal error" - (`#4845 `_) -- Fixed "trivial macro breaks type checking in the compiler" - (`#4608 `_) -- Fixed "derived generic types with static[T] breaks type checking in v0.15.0 (worked in v0.14.2)" - (`#4863 `_) -- Fixed "xmlparser.parseXml is not recognised as GC-safe" - (`#4899 `_) -- Fixed "async makes generics instantiate only once" - (`#4856 `_) -- Fixed "db_common docs aren't generated" - (`#4895 `_) -- Fixed "rdstdin disappeared from documentation index" - (`#3755 `_) -- Fixed "ICE on template call resolution" - (`#4875 `_) -- Fixed "Invisible code-block" - (`#3078 `_) -- Fixed "nim doc does not generate doc comments correctly" - (`#4913 `_) -- Fixed "nim doc2 fails on ARM when running against lib/pure/coro.nim" - (`#4879 `_) -- Fixed "xmlparser does not unescape correctly" - (`#1518 `_) -- Fixed "[docs] mysterious "raise hook"" - (`#3485 `_) -- Fixed "assertion failure in non-release Nim when compiling NimYAML" - (`#4869 `_) -- Fixed "A closure causes nimscript to fail with unhandled exception" - (`#4906 `_) -- Fixed "startProcess changes working directory" - (`#4867 `_) -- Fixed "bindsym to void template produces ICE" - (`#4808 `_) -- Fixed "readline(TFile, var string) segfaults if second argument is nil" - (`#564 `_) -- Fixed "times.parse gives the wrong day of the week for the first hour of the day." - (`#4922 `_) -- Fixed "Internal error when passing parameter proc inside .gcsafe closure" - (`#4927 `_) -- Fixed "Upcoming asyncdispatch doesn't compile with C++ backend on OS X" - (`#4928 `_) diff --git a/web/news/e029_version_0_16_0.rst b/web/news/e029_version_0_16_0.rst deleted file mode 100644 index 4b204cfd06c59..0000000000000 --- a/web/news/e029_version_0_16_0.rst +++ /dev/null @@ -1,222 +0,0 @@ -Version 0.16.0 released -======================= - -.. container:: metadata - - Posted by The Nim Team on 08/01/2017 - -We're happy to announce that the latest release of Nim, version 0.16.0, is now -available! - -As always, you can grab the latest version from the -`downloads page `_. - -This release includes over 80 bug fixes and improvements. To see a full list -of changes, take a look at the detailed changelog -`below <#changelog>`_. - -Some of the most significant changes in this release include: a major new -Nimble release, an improved import syntax, and the stabilisation of -name mangling rules enabling faster compile times. - -The new Nimble release that is included with Nim 0.16.0 includes a variety of -new features and bug fixes. The most prominent of which is the improved output -system, as shown in the figure below. - -.. raw::html - - - Nimble 0.8.0 - - -For a full list of changes in Nimble, see its -`changelog `_. - -The new import syntax makes it easier to import multiple modules from the same -package or directory. For example: - -.. code-block:: nim - import compiler/ast, compiler/parser, compiler/lexer - import compiler / [ast, parser, lexer] - -The two are equivalent, but the new latter syntax is less redundant. - -Finally, the code responsible for name mangling in the generated C and C++ code -has been improved to reduce compile times. In particular, compile-time for -the common edit-compile-run cycles have been reduced. - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- ``staticExec`` now uses the directory of the nim file that contains the - ``staticExec`` call as the current working directory. -- ``TimeInfo.tzname`` has been removed from ``times`` module because it was - broken. Because of this, the option ``"ZZZ"`` will no longer work in format - strings for formatting and parsing. - -Library Additions ------------------ - -- Added new parameter to ``error`` proc of ``macro`` module to provide better - error message -- Added new ``deques`` module intended to replace ``queues``. - ``deques`` provides a superset of ``queues`` API with clear naming. - ``queues`` module is now deprecated and will be removed in the future. - -- Added ``hideCursor``, ``showCursor``, ``terminalWidth``, - ``terminalWidthIoctl`` and ``terminalSize`` to the ``terminal`` - `(doc) `_ module. - -- Added new module ``distros`` - `(doc) `_ that can be used in Nimble - packages to aid in supporting the OS's native package managers. - - -Tool Additions --------------- - - -Compiler Additions ------------------- - -- The C/C++ code generator has been rewritten to use stable - name mangling rules. This means that compile times for - edit-compile-run cycles are much reduced. - - -Language Additions ------------------- - -- The ``emit`` pragma now takes a list of Nim expressions instead - of a single string literal. This list can easily contain non-strings - like template parameters. This means ``emit`` works out of the - box with templates and no new quoting rules needed to be introduced. - The old way with backtick quoting is still supported but will be - deprecated. - -.. code-block:: nim - type Vector* {.importcpp: "std::vector", header: "".}[T] = object - - template `[]=`*[T](v: var Vector[T], key: int, val: T) = - {.emit: [v, "[", key, "] = ", val, ";"].} - - proc setLen*[T](v: var Vector[T]; size: int) {.importcpp: "resize", nodecl.} - proc `[]`*[T](v: var Vector[T], key: int): T {.importcpp: "(#[#])", nodecl.} - - proc main = - var v: Vector[float] - v.setLen 1 - v[0] = 6.0 - echo v[0] - -- The ``import`` statement now supports importing multiple modules from - the same directory: - -.. code-block:: nim - import compiler / [ast, parser, lexer] - -Is a shortcut for: - -.. code-block:: nim - import compiler / ast, compiler / parser, compiler / lexer - - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github `_. - -- Fixed "staticRead and staticExec have different working directories" - (`#4871 `_) -- Fixed "CountTable doesn't support the '==' operator" - (`#4901 `_) -- Fixed "documentation for module sequtls apply proc" - (`#4386 `_) -- Fixed "Operator `==` for CountTable does not work." - (`#4946 `_) -- Fixed "sysFatal (IndexError) with parseUri and the / operator" - (`#4959 `_) -- Fixed "initialSize parameter does not work in OrderedTableRef" - (`#4940 `_) -- Fixed "error proc from macro library could have a node parameter" - (`#4915 `_) -- Fixed "Segfault when comparing OrderedTableRef with nil" - (`#4974 `_) -- Fixed "Bad codegen when comparing isNil results" - (`#4975 `_) -- Fixed "OrderedTable cannot delete entry with empty string or 0 key" - (`#5035 `_) -- Fixed "Deleting specific keys from ordered table leaves it in invalid state." - (`#5057 `_) -- Fixed "Paths are converted to lowercase on Windows" - (`#5076 `_) -- Fixed "toTime(getGMTime(...)) doesn't work correctly when local timezone is not UTC" - (`#5065 `_) -- Fixed "out of memory error from `test=` type proc call when parameter is a call to a table's `[]` proc" - (`#5079 `_) -- Fixed "Incorrect field order in object construction" - (`#5055 `_) -- Fixed "Incorrect codegen when importing nre with C++ backend (commit 8494338)" - (`#5081 `_) -- Fixed "Templates, {.emit.}, and backtick interpolation do not work together" - (`#4730 `_) -- Fixed "Regression: getType fails in certain cases" - (`#5129 `_) -- Fixed "CreateThread doesn't accept functions with generics" - (`#43 `_) -- Fixed "No instantiation information when template has error" - (`#4308 `_) -- Fixed "realloc leaks" - (`#4818 `_) -- Fixed "Regression: getType" - (`#5131 `_) -- Fixed "Code generation for generics broken by sighashes" - (`#5135 `_) -- Fixed "Regression: importc functions are not declared in generated C code" - (`#5136 `_) -- Fixed "Calling split("") on string hangs program" - (`#5119 `_) -- Fixed "Building dynamic library: undefined references (Linux)" - (`#4775 `_) -- Fixed "Bad codegen for distinct + importc - sighashes regression" - (`#5137 `_) -- Fixed "C++ codegen regression: memset called on a result variable of `importcpp` type" - (`#5140 `_) -- Fixed "C++ codegen regression: using channels leads to broken C++ code" - (`#5142 `_) -- Fixed "Ambiguous call when overloading var and non-var with generic type" - (`#4519 `_) -- Fixed "[Debian]: build.sh error: unknown processor: aarch64" - (`#2147 `_) -- Fixed "RFC: asyncdispatch.poll behaviour" - (`#5155 `_) -- Fixed "Can't access enum members through alias (possible sighashes regression)" - (`#5148 `_) -- Fixed "Type, declared in generic proc body, leads to incorrect codegen (sighashes regression)" - (`#5147 `_) -- Fixed "Compiler SIGSEGV when mixing method and proc" - (`#5161 `_) -- Fixed "Compile-time SIGSEGV when declaring .importcpp method with return value " - (`#3848 `_) -- Fixed "Variable declaration incorrectly parsed" - (`#2050 `_) -- Fixed "Invalid C code when naming a object member "linux"" - (`#5171 `_) -- Fixed "[Windows] MinGW within Nim install is missing libraries" - (`#2723 `_) -- Fixed "async: annoying warning for future.finished" - (`#4948 `_) -- Fixed "new import syntax doesn't work?" - (`#5185 `_) -- Fixed "Fixes #1994" - (`#4874 `_) -- Fixed "Can't tell return value of programs with staticExec" - (`#1994 `_) -- Fixed "startProcess() on Windows with poInteractive: Second call fails ("Alle Pipeinstanzen sind ausgelastet")" - (`#5179 `_) diff --git a/web/news/e030_nim_in_action_in_production.rst b/web/news/e030_nim_in_action_in_production.rst deleted file mode 100644 index b68b8280135e7..0000000000000 --- a/web/news/e030_nim_in_action_in_production.rst +++ /dev/null @@ -1,53 +0,0 @@ -Nim in Action is going into production! -======================================= - -.. container:: metadata - - Posted by Dominik Picheta on 20/11/2016 - -.. raw::html - - - A printed copy of Nim in Action should be available in March 2017! - - -I am very happy to say that just last week I have put the finishing touches -on Nim in Action. The final manuscript has been submitted to Manning (the book's -publisher), and the printed version is expected to start shipping in March -2017 (give or take 1 month). - -The eBook is still available and now contains all of the book's chapters, -including new ones dealing with the foreign function interface and -metaprogramming. -That said, it may still take some time before the eBook is updated with the -latest corrections. - -I am incredibly thankful to everyone that purchased the book already. Many of -you have also given me a lot of `brilliant `_ -`feedback `_, -thank you very much for -taking the time to do so. I have done my best to act on this -feedback and I hope you will agree that the book has risen in quality as a -result. - -Writing this book has been both exhausting and incredible at the same time. -I look forward -to having a physical copy of it in my hands, and I'm sure many of you do as -well. I can safely say that without your support this book would not have -happened, even if you did not purchase a copy your interest in Nim has made it -possible and I thank you for that. - -As always, you can make a purchase on -`Manning's website `_. -Both eBook's and printed books are available, and purchasing a printed book will -get you an eBook for free. -You can now also pre-order Nim in Action on -`Amazon `_! - -If you would like updates about the book then please feel free to -follow either `myself `_ or -`@nim_lang `_ on Twitter. Finally, if you have any -questions, do get in touch via `Twitter, NimForum, -IRC or Gitter `_. - -Thanks for reading! diff --git a/web/news/e031_version_0_16_2.rst b/web/news/e031_version_0_16_2.rst deleted file mode 100644 index 3458ac83e177d..0000000000000 --- a/web/news/e031_version_0_16_2.rst +++ /dev/null @@ -1,325 +0,0 @@ -Version 0.17.0 released -======================= - -This release fixes the most important regressions introduced in 0.16.0. In -particular memory manager and channel bugs have been fixed. The NSIS based -installer is not provided anymore as the Nim website moved to ``https`` and -this causes NSIS downloads to fail. - - -Changelog -~~~~~~~~~ - -Changes affecting backwards compatibility ------------------------------------------ - -- There are now two different HTTP response types, ``Response`` and - ``AsyncResponse``. ``AsyncResponse``'s ``body`` accessor returns a - ``Future[string]``! -- ``httpclient.request`` now respects ``maxRedirects`` option. Previously - redirects were handled only by ``get`` and ``post`` procs. -- The IO routines now raise ``EOFError`` for the "end of file" condition. - ``EOFError`` is a subtype of ``IOError`` and so it's easier to distinguish - between "error during read" and "error due to EOF". -- A hash procedure has been added for ``cstring`` type in ``hashes`` module. - Previously, hash of a ``cstring`` would be calculated as a hash of the - pointer. Now the hash is calculated from the contents of the string, assuming - ``cstring`` is a null-terminated string. Equal ``string`` and ``cstring`` - values produce an equal hash value. -- Macros accepting `varargs` arguments will now receive a node having the - `nkArgList` node kind. Previous code expecting the node kind to be `nkBracket` - may have to be updated. -- ``memfiles.open`` now closes file handleds/fds by default. Passing - ``allowRemap=true`` to ``memfiles.open`` recovers the old behavior. The old - behavior is only needed to call ``mapMem`` on the resulting ``MemFile``. -- ``posix.nim``: For better C++ interop the field - ``sa_sigaction*: proc (x: cint, y: var SigInfo, z: pointer) {.noconv.}`` was - changed - to ``sa_sigaction*: proc (x: cint, y: ptr SigInfo, z: pointer) {.noconv.}``. -- The compiler doesn't infer effects for ``.base`` methods anymore. This means - you need to annotate them with ``.gcsafe`` or similar to clearly declare - upfront every implementation needs to fullfill these contracts. -- ``system.getAst templateCall(x, y)`` now typechecks the ``templateCall`` - properly. You need to patch your code accordingly. -- ``macros.getType`` and ``macros.getTypeImpl`` for an enum will now return an - AST that is the same as what is used to define an enum. Previously the AST - returned had a repeated ``EnumTy`` node and was missing the initial pragma - node (which is currently empty for an enum). -- ``macros.getTypeImpl`` now correctly returns the implementation for a symbol - of type ``tyGenericBody``. -- If the dispatcher parameter's value used in multi method is ``nil``, - a ``NilError`` exception is raised. The old behavior was that the method - would be a ``nop`` then. -- ``posix.nim``: the family of ``ntohs`` procs now takes unsigned integers - instead of signed integers. -- In Nim identifiers en-dash (Unicode point U+2013) is not an alias for the - underscore anymore. Use underscores and fix your programming font instead. -- When the ``requiresInit`` pragma is applied to a record type, future versions - of Nim will also require you to initialize all the fields of the type during - object construction. For now, only a warning will be produced. -- The Object construction syntax now performs a number of additional safety - checks. When fields within case objects are initialiazed, the compiler will - now demand that the respective discriminator field has a matching known - compile-time value. -- On posix, the results of `waitForExit`, `peekExitCode`, `execCmd` will return - 128 + signal number if the application terminates via signal. -- ``ospaths.getConfigDir`` now conforms to the XDG Base Directory specification - on non-Windows OSs. It returns the value of the XDG_CONFIG_DIR environment - variable if it is set, and returns the default configuration directory, - "~/.config/", otherwise. - -Library Additions ------------------ - -- Added ``system.onThreadDestruction``. -- Added ``dial`` procedure to networking modules: ``net``, ``asyncdispatch``, - ``asyncnet``. It merges socket creation, address resolution, and connection - into single step. When using ``dial``, you don't have to worry about - IPv4 vs IPv6 problem. ``httpclient`` now supports IPv6. - -Tool Additions --------------- - -- The ``finish`` tool can now download MingW for you should it not find a - working MingW installation. - - -Compiler Additions ------------------- - -- The name mangling rules used by the C code generator changed. Most of the time - local variables and parameters are not mangled at all anymore. This improves - debugging experience. -- The compiler produces explicit name mangling files when ``--debugger:native`` - is enabled. Debuggers can read these ``.ndi`` files in order to improve - debugging Nim code. - - -Language Additions ------------------- - -- The ``try`` statement's ``except`` branches now support the binding of a -caught exception to a variable: - -.. code-block:: nim - try: - raise newException(Exception, "Hello World") - except Exception as exc: - echo(exc.msg) - -This replaces the ``getCurrentException`` and ``getCurrentExceptionMsg()`` -procedures, although these procedures will remain in the stdlib for the -foreseeable future. This new language feature is actually implemented using -these procedures. - -In the near future we will be converting all exception types to refs to -remove the need for the ``newException`` template. - -- A new pragma ``.used`` can be used for symbols to prevent -the "declared but not used" warning. More details can be -found `here `_. -- The popular "colon block of statements" syntax is now also supported for - ``let`` and ``var`` statements and assignments: - -.. code-block:: nim - template ve(value, effect): untyped = - effect - val - - let x = ve(4): - echo "welcome to Nim!" - -This is particularly useful for DSLs that help in tree construction. - - -Language changes ----------------- - -- The ``.procvar`` annotation is not required anymore. That doesn't mean you - can pass ``system.$`` to ``map`` just yet though. - - -Bugfixes --------- - -The list below has been generated based on the commits in Nim's git -repository. As such it lists only the issues which have been closed -via a commit, for a full list see -`this link on Github `_. - -- Fixed "Weird compilation bug" - (`#4884 `_) -- Fixed "Return by arg optimization does not set result to default value" - (`#5098 `_) -- Fixed "upcoming asyncdispatch doesn't remove recv callback if remote side closed socket" - (`#5128 `_) -- Fixed "compiler bug, executable writes into wrong memory" - (`#5218 `_) -- Fixed "Module aliasing fails when multiple modules have the same original name" - (`#5112 `_) -- Fixed "JS: var argument + case expr with arg = bad codegen" - (`#5244 `_) -- Fixed "compiler reject proc's param shadowing inside template" - (`#5225 `_) -- Fixed "const value not accessible in proc" - (`#3434 `_) -- Fixed "Compilation regression 0.13.0 vs 0.16.0 in compile-time evaluation" - (`#5237 `_) -- Fixed "Regression: JS: wrong field-access codegen" - (`#5234 `_) -- Fixed "fixes #5234" - (`#5240 `_) -- Fixed "JS Codegen: duplicated fields in object constructor" - (`#5271 `_) -- Fixed "RFC: improving JavaScript FFI" - (`#4873 `_) -- Fixed "Wrong result type when using bitwise and" - (`#5216 `_) -- Fixed "upcoming.asyncdispatch is prone to memory leaks" - (`#5290 `_) -- Fixed "Using threadvars leads to crash on Windows when threads are created/destroyed" - (`#5301 `_) -- Fixed "Type inferring templates do not work with non-ref types." - (`#4973 `_) -- Fixed "Nimble package list no longer works on lib.html" - (`#5318 `_) -- Fixed "Missing file name and line number in error message" - (`#4992 `_) -- Fixed "ref type can't be converted to var parameter in VM" - (`#5327 `_) -- Fixed "nimweb ignores the value of --parallelBuild" - (`#5328 `_) -- Fixed "Cannot unregister/close AsyncEvent from within its handler" - (`#5331 `_) -- Fixed "name collision with template instanciated generic inline function with inlined iterator specialization used from different modules" - (`#5285 `_) -- Fixed "object in VM does not have value semantic" - (`#5269 `_) -- Fixed "Unstable tuple destructuring behavior in Nim VM" - (`#5221 `_) -- Fixed "nre module breaks os templates" - (`#4996 `_) -- Fixed "Cannot implement distinct seq with setLen" - (`#5090 `_) -- Fixed "await inside array/dict literal produces invalid code" - (`#5314 `_) - -- Fixed "asyncdispatch.accept() can raise exception inside poll() instead of failing future on Windows" - (`#5279 `_) -- Fixed "VM: A crash report should be more informative" - (`#5352 `_) -- Fixed "IO routines are poor at handling errors" - (`#5349 `_) -- Fixed "new import syntax doesn't work?" - (`#5185 `_) -- Fixed "Seq of object literals skips unmentioned fields" - (`#5339 `_) -- Fixed "``sym is not accessible`` in compile time" - (`#5354 `_) -- Fixed "the matching is broken in re.nim" - (`#5382 `_) -- Fixed "development branch breaks in my c wrapper" - (`#5392 `_) -- Fixed "Bad codegen: toSeq + tuples + generics" - (`#5383 `_) -- Fixed "Bad codegen: toSeq + tuples + generics" - (`#5383 `_) -- Fixed "Codegen error when using container of containers" - (`#5402 `_) -- Fixed "sizeof(RangeType) is not available in static context" - (`#5399 `_) -- Fixed "Regression: ICE: expr: var not init ex_263713" - (`#5405 `_) -- Fixed "Stack trace is wrong when assignment operator fails with template" - (`#5400 `_) -- Fixed "SIGSEGV in compiler" - (`#5391 `_) -- Fixed "Compiler regression with struct member names" - (`#5404 `_) -- Fixed "Regression: compiler segfault" - (`#5419 `_) -- Fixed "The compilation of jester routes is broken on devel" - (`#5417 `_) -- Fixed "Non-generic return type produces "method is not a base"" - (`#5432 `_) -- Fixed "Confusing error behavior when calling slice[T].random" - (`#5430 `_) -- Fixed "Wrong method called" - (`#5439 `_) -- Fixed "Attempt to document the strscans.scansp macro" - (`#5154 `_) -- Fixed "[Regression] Invalid C code for _ symbol inside jester routes" - (`#5452 `_) -- Fixed "StdLib base64 encodeInternal crashes with out of bound exception" - (`#5457 `_) -- Fixed "Nim hangs forever in infinite loop in nre library" - (`#5444 `_) - -- Fixed "Tester passes test although individual test in suite fails" - (`#5472 `_) -- Fixed "terminal.nim documentation" - (`#5483 `_) -- Fixed "Codegen error - expected identifier before ')' token (probably regression)" - (`#5481 `_) -- Fixed "mixin not works inside generic proc generated by template" - (`#5478 `_) -- Fixed "var not init (converter + template + macro)" - (`#5467 `_) -- Fixed "`==` for OrderedTable should consider equal content but different size as equal." - (`#5487 `_) -- Fixed "Fixed tests/tester.nim" - (`#45 `_) -- Fixed "template instanciation crashes compiler" - (`#5428 `_) -- Fixed "Internal compiler error in handleGenericInvocation" - (`#5167 `_) -- Fixed "compiler crash in forwarding template" - (`#5455 `_) -- Fixed "Doc query re public/private + suggestion re deprecated" - (`#5529 `_) -- Fixed "inheritance not work for generic object whose parent is parameterized" - (`#5264 `_) -- Fixed "weird inheritance rule restriction" - (`#5231 `_) -- Fixed "Enum with holes broken in JS" - (`#5062 `_) -- Fixed "enum type and aliased enum type inequality when tested with operator `is` involving template" - (`#5360 `_) -- Fixed "logging: problem with console logger caused by the latest changes in sysio" - (`#5546 `_) -- Fixed "Crash if proc and caller doesn't define seq type - HEAD" - (`#4756 `_) -- Fixed "`path` config option doesn't work when compilation is invoked from a different directory" - (`#5228 `_) -- Fixed "segfaults module doesn't compile with C++ backend" - (`#5550 `_) -- Fixed "Improve `joinThreads` for windows" - (`#4972 `_) -- Fixed "Compiling in release mode prevents valid code execution." - (`#5296 `_) -- Fixed "Forward declaration of generic procs or iterators doesn't work" - (`#4104 `_) -- Fixed "cant create thread after join" - (`#4719 `_) -- Fixed "can't compile with var name "near" and --threads:on" - (`#5598 `_) -- Fixed "inconsistent behavior when calling parent's proc of generic object" - (`#5241 `_) -- Fixed "The problem with import order of asyncdispatch and unittest modules" - (`#5597 `_) -- Fixed "Generic code fails to compile in unexpected ways" - (`#976 `_) -- Fixed "Another 'User defined type class' issue" - (`#1128 `_) -- Fixed "compiler fails to compile user defined typeclass" - (`#1147 `_) -- Fixed "Type class membership testing doesn't work on instances of generic object types" - (`#1570 `_) -- Fixed "Strange overload resolution behavior for procedures with typeclass arguments" - (`#1991 `_) -- Fixed "The same UDTC can't constrain two type parameters in the same procedure" - (`#2018 `_) -- Fixed "More trait/concept issues" - (`#2423 `_) -- Fixed "Bugs with concepts?" - (`#2882 `_) \ No newline at end of file diff --git a/web/question.rst b/web/question.rst deleted file mode 100644 index 54c392ced1f74..0000000000000 --- a/web/question.rst +++ /dev/null @@ -1,194 +0,0 @@ -=========================================== - Questions and Answers -=========================================== - - -General FAQ -=========== - - -.. container:: standout - - What is Nim? - ------------ - - Nim (formerly known as "Nimrod") is a statically typed, imperative programming - 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 - various forms. Beneath a nice infix/indentation based syntax with a - powerful (AST based, hygienic) macro system lies a semantic model that supports - 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. - - - -.. .. container:: standout - -.. Why should I use Nim? -.. --------------------- - -.. It's a conservative language in a sense that we stick to features that have -.. proven themselves for larger scale programming. But it's revolutionary by -.. the features which have been laid on top. - -.. One of Nim's goals is to increase developer productivity without sacrificing -.. the produced software's stability. The way that this is done is by providing - -.. Depending on your use case. - -.. Nim is one of the few programming languages in the world which allows you to - - -.. The language inventor describes it as the ultimate programming language -.. with features which make it perfect for just about any problem. - -.. container:: standout - - Why yet another programming language? - ------------------------------------- - - 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. - - -.. container:: standout - - What have been the major influences in the language's design? - ------------------------------------------------------------- - - 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? - ---------------------------------- - - Nim primarily focusses on thread local (and garbage collected) heaps and - 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 - provided. - - Future versions will additionally include a GC "per thread group" - and Nim's type system will be enhanced to accurately model this shared - memory heap. - - -.. container:: standout - - How is Nim licensed? - -------------------- - - The Nim compiler and the library are MIT licensed. - This means that you can use any license for your own programs developed with - Nim. - - -.. container:: standout - - How stable is Nim? - ------------------ - - 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. - - -.. container:: standout - - How fast is Nim? - ---------------- - Benchmarks show it to be comparable to C. Some language features (methods, - 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. - - -.. container:: standout - - What about JVM/CLR backends? - ---------------------------- - - JVM/CLR support is not in the nearest plans. However, since these VMs support FFI to C - it should be possible to create native Nim bridges, that transparenlty generate all the - glue code thanks to powerful metaprogramming capabilities of Nim. - - -.. container:: standout - - What about editor support? - -------------------------- - - - Native Nim Editor: https://github.com/nim-lang/Aporia - - Visual Studio Code: https://marketplace.visualstudio.com/items?itemName=kosz78.nim - - Emacs: https://github.com/nim-lang/nim-mode - - Vim: https://github.com/zah/nimrod.vim/ - - Scite: Included - - Gedit: The `Aporia .lang file `_ - - jEdit: https://github.com/exhu/nimrod-misc/tree/master/jedit - - TextMate: Available in bundle installer (`Repository `_) - - Sublime Text: Available via Package Control (`Repository `_) - - LiClipse: http://www.liclipse.com/ (Eclipse based plugin) - - Howl: Included - - Notepad++: Available via `plugin `_ - - -.. 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 is planned to have ``func`` - as syntactic sugar for ``proc {.noSideEffect.}`` and ``func`` is already a - keyword. Naming it ``def`` would not make sense because Nim also provides a - ``iterator`` and ``method`` keywords, whereas ``def`` stands for ``define``. - - -Compilation FAQ -=============== - -.. container:: standout - - Which option to use for the fastest executable? - ----------------------------------------------- - - For the standard configuration file, ``-d:release`` does the trick. - -.. container:: standout - - Which option to use for the smallest executable? - ------------------------------------------------ - - For the standard configuration file, ``-d:quick --opt:size`` does the trick. - -.. container:: standout - - How do I use a different C compiler than the default one? - --------------------------------------------------------- - - Edit the ``config/nim.cfg`` file. - Change the value of the ``cc`` variable to one of the following: - - ================ ============================================ - **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 - ================ ============================================ - - Other C compilers are not officially supported, but might work too. - - 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. diff --git a/web/snippets/snippet1.nim b/web/snippets/snippet1.nim deleted file mode 100644 index b0895e0c09b0f..0000000000000 --- a/web/snippets/snippet1.nim +++ /dev/null @@ -1,4 +0,0 @@ -import strutils -echo "Give a list of integers (separated by spaces): ", - stdin.readLine.split.each(parseInt).max, - " is the maximum!" diff --git a/web/sponsors.csv b/web/sponsors.csv deleted file mode 100644 index 7136808c6ab59..0000000000000 --- a/web/sponsors.csv +++ /dev/null @@ -1,40 +0,0 @@ -logo, name, url, this_month, all_time, since, level -assets/bountysource/secondspectrum.png,Second Spectrum,http://www.secondspectrum.com/,250,2250,"May 5, 2016",250 -assets/bountysource/xored.svg,"Xored Software, Inc.",http://xored.com/,250,1000,250,2000,"Jun 20, 2016",250 -,Varriount,https://github.com/Varriount,250,750,"Nov 18, 2016",250 -,flyx,http://flyx.org,35,350,"Apr 7, 2016",75 -,"Yuriy Glukhov",,25,250,"Apr 6, 2016",25 -,endragor,https://github.com/endragor,25,250,"Apr 7, 2016",25 -,FedericoCeratto,http://firelet.net,25,250,"Apr 7, 2016",25 -,"Adrian Veith",,25,250,"Apr 20, 2016",25 -,euantorano,http://euantorano.co.uk,25,200,"Jun 7, 2016",25 -,xxlabaza,https://github.com/xxlabaza,25,170,"Jun 17, 2016",25 -,devted,https://github.com/devted,25,100,"Oct 19, 2016",25 -,"pyloor ",https://schwarz-weiss.cc/,10,95,"May 16, 2016",10 -,niebaopeng,https://github.com/niebaopeng,10,90,"Apr 15, 2016",10 -,zolern,https://github.com/zolern,10,80,"Apr 15, 2016",10 -,"Oskari Timperi",,10,80,"Jun 8, 2016",10 -,jcosborn,https://github.com/jcosborn,25,75,"Nov 21, 2016",25 -,swalf,https://github.com/swalf,5,65,"May 9, 2016",5 -,"Handojo Goenadi",,5,55,"Apr 19, 2016",5 -,cpunion,https://github.com/cpunion,10,50,"Sep 9, 2016",10 -,D-L,https://github.com/D-L,5,50,"Apr 7, 2016",5 -,moigagoo,http://sloth-ci.com,10,40,"May 13, 2016",10 -,enthus1ast,http://code0.xyz/,10,40,"Oct 28, 2016",10 -,RyanMarcus,http://rmarcus.info,5,35,"Jul 19, 2016",5 -,lenzenmi,https://github.com/lenzenmi,5,35,"Jul 28, 2016",5 -,"Christian Bagley",,10,30,"Oct 11, 2016",10 -,pandada8,https://github.com/pandada8,5,30,"Aug 12, 2016",5 -,abeaumont,http://alfredobeaumont.org/blog,5,30,"Aug 12, 2016",5 -,opendragon,http://www.opendragon.com,25,25,"Jan 18, 2017",25 -,"Eric Raible",,10,20,"Dec 23, 2016",10 -,zefciu,http://pythonista.net,10,20,"Dec 29, 2016",10 -,"Andrey ",https://github.com/Andrey,5,20,"Oct 10, 2016",5 -,syrol,https://github.com/syrol,5,10,"Dec 12, 2016",5 -,"Svend Knudsen",,1,10,"Apr 11, 2016",1 -,"Michael D. Sklaroff",,1,10,"Apr 27, 2016",1 -,nicck,,1,6,"Aug 9, 2016",1 -,cnygaard,,5,5,"Jan 17, 2017",5 -,Aldrog,,5,5,"Feb 11, 2017",5 -,mpachecofaulk55,,5,5,"Feb 11, 2017",5 -,campbellr,,1,5,"Sep 4, 2016",1 diff --git a/web/support.rst b/web/support.rst deleted file mode 100644 index 72e6dad711edf..0000000000000 --- a/web/support.rst +++ /dev/null @@ -1,40 +0,0 @@ -Commercial and Community Support -================================ - -We offer a multitude of support networks including those in both a community -and commercial setting. - -Commercial support includes: - -.. container:: standout - - Priority Bug Fixes - ------------------ - - File a bug report and we will address them with the highest priority. Once - fixed, you will be able to access either the current Git build or at your - request a custom build against the latest release with your bug fixed. - - -.. container:: standout - - Feature Requests - ---------------- - - Suggest to us any feature that you might need, we will examine your request with - care and provide a proper answer about its potential for inclusion. - - Communication happens via email or for a slightly higher fee via Skype. - The pricing is based on the amount of hours spent on the bugfix / feature - implementation and is open to negotiation. - - -All interested parties should email ``support@nim-lang.org``. -The bid for contracting work is a commercial offer provided by: - - -| **Andreas Rumpf** -| St.-Quentin-Ring 47 -| 67663 Kaiserslautern -| GERMANY -| EU VAT-IN: DE297783450 diff --git a/web/ticker.html b/web/ticker.html deleted file mode 100644 index 865dcf4f8f112..0000000000000 --- a/web/ticker.html +++ /dev/null @@ -1,26 +0,0 @@ - -

January 8, 2017

-

Nim version 0.16.0 has been released!

-
- - -

November 20, 2016

-

Nim in Action is going into production!

-
- - -

October 23, 2016

-

Nim version 0.15.2 has been released!

-
- - -

September 30, 2016

-

Nim version 0.15.0 has been released!

-
- - -

September 3, 2016

-

Nim Community Survey results

-
- -See All News...