Giter Club home page Giter Club logo

nimbuild's Introduction

Nimbuild

This is the Nim build farm. It is separated into multiple components; main one being the website (website.nim); which acts as a hub for all the other components

The other components:

Github.nim

This component waits for connections from github, it acts as a POST receive hook. It waits for a POST request from github containing a payload informing it of the file commited to the Nim repo, it then sends this information on to the website.

Builder.nim

This component does the actual building, multiple instances of it run on different platforms. It pulls the latest version of the compiler from github, bootstraps it, zips the binary then uploads the zip to nimbuild. It then finally runs the test suite. It also does some other tasks which are optional, like generating c sources and the documentation.

ircbot.nim

This component is an IRC bot which idles in the #nim channel on freenode, it has some features already. It's main purpose is to announce a commit in the channel, but it also has a !seen command. More features are planned for later.

Contributing

Pull requests are always welcome. If you are not much of a programmer you can always donate a machine, we are always looking for new machines, especially Windows ones to run nimbuild on, if you have one please contact me on Github or on freenode (i'm dom96).

nimbuild's People

Contributors

dom96 avatar araq avatar varriount avatar gradha avatar

Stargazers

Timothee Cour avatar David Yu avatar Ciaran Downey avatar Xe Iaso avatar Hakan Deryal avatar DJ avatar  avatar deknos avatar M Haidar Hanif avatar Camilo E. Hidalgo Estevez avatar  avatar

Watchers

genotrance avatar  avatar Alexander Ivanov avatar James Cloos avatar Oscar N. avatar Timothee Cour avatar  avatar Clyybber avatar  avatar ringabout avatar

nimbuild's Issues

Fatal error with FTP build messages sent after build ended

It seems that the builder may still send messages regarding FTP to the builder after it has told the website that it stopped building.

Here is the output of the website:

[INFO:REDIS] 'buildResult' new field added to hash
Got line from builder: { "job": 1}
Got line from builder: { "desc": "\"koch.exe tests\" started.",  "eventType": 0,
  "cmd": "koch.exe",  "args": "tests"}
Got line from builder: { "eventType": 1,  "line": "c:\\32\\nimrod\\config\\nimro
d.cfg(37, 2) Hint: added path: 'C:\\Users\\Clay\\.babel\\pkgs\\windows-1.0' [Pat
h]"}
Got line from builder: { "eventType": 1,  "line": "c:\\32\\nimrod\\config\\nimro
d.cfg(37, 2) Hint: added path: 'C:\\Users\\Clay\\.babel\\pkgs\\babel-0.1.0' [Pat
h]"}
Got line from builder: { "eventType": 1,  "line": "c:\\32\\nimrod\\config\\nimro
d.cfg(37, 2) Hint: added path: 'C:\\Users\\Clay\\.babel\\pkgs\\' [Path]"}
Got line from builder: { "eventType": 1,  "line": "Hint: used config file 'C:\\3
2\\nimrod\\config\\nimrod.cfg' [Conf]"}
Got line from builder: { "eventType": 2,  "exitCode": 1}
Got line from builder: { "result": 0,  "detail": "\"koch.exe tests\" failed."}
[INFO:REDIS] 'testResult' new field added to hash
[INFO:REDIS] 'failReason' new field added to hash
Got line from builder: { "eventType": 4}
PING -> redis
Got line from builder: { "ping": "1390005328.591286"}
Got line from builder: { "ping": "1390005329.536461"}
Got line from builder: { "ping": "1390005162.816703"}
PING -> redis
Pinging builder-windows-x86(96.231.190.233)
Got line from builder: { "pong": "1390005426.854859"}
Pinging builder-windows-x86_64(96.231.190.233)
Got line from builder: { "pong": "1390005427.993858"}
Pinging builder-linux-ppc64(140.211.15.137)
Got line from builder: { "pong": "1390005430.132849"}
PING -> redis
Got line from builder: { "result": 0,  "detail": "Expected reply '250' got: 421
Timeout."}
Fatal error for builder-linux-ppc64(140.211.15.137)
Traceback (most recent call last)
website.nim(1109)        website
asyncio.nim(631)         poll
asyncio.nim(212)         asyncSockHandleRead
website.nim(141)         :anonymous
website.nim(589)         handleModuleMsg
website.nim(303)         parseMessage
types.nim(35)            jobInProgress
system.nim(2555)         hiddenRaiseAssert
system.nim(1844)         raiseAssert

--------------------------
builder-linux-ppc64(140.211.15.137) disconnected.

CPU usage spikes after network failures

I had the builder running along without problems and after a while it got 100% hungry again. The recent log in the console did showed the following, just before I pressed Ctrl+C:


Got message from hub: { "ping": "1362937403.427957"}
Replying to Ping
We seem to be timing out! PINGing server.
Server has not replied with a pong in 5 seconds.
nodename nor servname provided, or not known
We seem to be timing out! PINGing server.
Socket is not connected
Disconnected from server due to ^^
nodename nor servname provided, or not known
We seem to be timing out! PINGing server.
Socket is not connected
Disconnected from server due to ^^
nodename nor servname provided, or not known
We seem to be timing out! PINGing server.
Socket is not connected
Disconnected from server due to ^^
nodename nor servname provided, or not known
^CTraceback (most recent call last)
builder.nim(858)         builder
asyncio.nim(542)         poll
gc.nim(411)              newSeq
gc.nim(404)              newObj
gc.nim(380)              rawNewObj
gc.nim(883)              collectCT
gc.nim(860)              collectCTBody
gc.nim(819)              CollectZCT
gc.nim(318)              forAllChildren
SIGINT: Interrupted by Ctrl-C.

In a separate test I started the builder, it connected, and then I turned off wifi. At the first event of ping timeout the screen log displayed:

We seem to be timing out! PINGing server.
Server has not replied with a pong in 5 seconds.
nodename nor servname provided, or not known

Instantly after that message appeared the cpu usage of builder went to 100%. I used Ctrl+C which showed a similar effect as the previous stack trace. It seems to be weird that in both cases objects are being allocated at the very same time I abort, isn't it?

^CTraceback (most recent call last)
builder.nim(858)         builder
asyncio.nim(542)         poll
gc.nim(411)              newSeq
gc.nim                   newObj
SIGINT: Interrupted by Ctrl-C.

Deleting branches creates fatal error

{
   "ref":"refs/heads/revert-1289-patch-5",
   "before":"f67b9bcc82b85d07031fbd65a70c2a1f2439e6e9",
   "after":"0000000000000000000000000000000000000000",
   "created":false,
   "deleted":true,
   "forced":true,
   "base_ref":null,
   "compare":"https://github.com/nim-lang/Nim/compare/f67b9bcc82b8...000000000000",
   "commits":[

   ],
   "head_commit":null,
   "repository":{
      "id":842037,
      "name":"Nim",
      "full_name":"nim-lang/Nim",
      "owner":{
         "name":"nim-lang",
         "email":""
      },
      "private":false,
      "html_url":"https://github.com/nim-lang/Nim",
      "description":"Nim (formerly known as \"Nimrod\") is a compiled, garbage-collected systems programming language which has an excellent productivity/performance ratio. Nim's design focuses on efficiency, expressiveness, elegance (in the order of priority).",
      "fork":false,
      "url":"https://github.com/nim-lang/Nim",
      "forks_url":"https://api.github.com/repos/nim-lang/Nim/forks",
      "keys_url":"https://api.github.com/repos/nim-lang/Nim/keys{/key_id}",
      "collaborators_url":"https://api.github.com/repos/nim-lang/Nim/collaborators{/collaborator}",
      "teams_url":"https://api.github.com/repos/nim-lang/Nim/teams",
      "hooks_url":"https://api.github.com/repos/nim-lang/Nim/hooks",
      "issue_events_url":"https://api.github.com/repos/nim-lang/Nim/issues/events{/number}",
      "events_url":"https://api.github.com/repos/nim-lang/Nim/events",
      "assignees_url":"https://api.github.com/repos/nim-lang/Nim/assignees{/user}",
      "branches_url":"https://api.github.com/repos/nim-lang/Nim/branches{/branch}",
      "tags_url":"https://api.github.com/repos/nim-lang/Nim/tags",
      "blobs_url":"https://api.github.com/repos/nim-lang/Nim/git/blobs{/sha}",
      "git_tags_url":"https://api.github.com/repos/nim-lang/Nim/git/tags{/sha}",
      "git_refs_url":"https://api.github.com/repos/nim-lang/Nim/git/refs{/sha}",
      "trees_url":"https://api.github.com/repos/nim-lang/Nim/git/trees{/sha}",
      "statuses_url":"https://api.github.com/repos/nim-lang/Nim/statuses/{sha}",
      "languages_url":"https://api.github.com/repos/nim-lang/Nim/languages",
      "stargazers_url":"https://api.github.com/repos/nim-lang/Nim/stargazers",
      "contributors_url":"https://api.github.com/repos/nim-lang/Nim/contributors",
      "subscribers_url":"https://api.github.com/repos/nim-lang/Nim/subscribers",
      "subscription_url":"https://api.github.com/repos/nim-lang/Nim/subscription",
      "commits_url":"https://api.github.com/repos/nim-lang/Nim/commits{/sha}",
      "git_commits_url":"https://api.github.com/repos/nim-lang/Nim/git/commits{/sha}",
      "comments_url":"https://api.github.com/repos/nim-lang/Nim/comments{/number}",
      "issue_comment_url":"https://api.github.com/repos/nim-lang/Nim/issues/comments{/number}",
      "contents_url":"https://api.github.com/repos/nim-lang/Nim/contents/{+path}",
      "compare_url":"https://api.github.com/repos/nim-lang/Nim/compare/{base}...{head}",
      "merges_url":"https://api.github.com/repos/nim-lang/Nim/merges",
      "archive_url":"https://api.github.com/repos/nim-lang/Nim/{archive_format}{/ref}",
      "downloads_url":"https://api.github.com/repos/nim-lang/Nim/downloads",
      "issues_url":"https://api.github.com/repos/nim-lang/Nim/issues{/number}",
      "pulls_url":"https://api.github.com/repos/nim-lang/Nim/pulls{/number}",
      "milestones_url":"https://api.github.com/repos/nim-lang/Nim/milestones{/number}",
      "notifications_url":"https://api.github.com/repos/nim-lang/Nim/notifications{?since,all,participating}",
      "labels_url":"https://api.github.com/repos/nim-lang/Nim/labels{/name}",
      "releases_url":"https://api.github.com/repos/nim-lang/Nim/releases{/id}",
      "created_at":1281991138,
      "updated_at":"2015-09-15T04:15:25Z",
      "pushed_at":1442308289,
      "git_url":"git://github.com/nim-lang/Nim.git",
      "ssh_url":"[email protected]:nim-lang/Nim.git",
      "clone_url":"https://github.com/nim-lang/Nim.git",
      "svn_url":"https://github.com/nim-lang/Nim",
      "homepage":"http://nim-lang.org/",
      "size":354859,
      "stargazers_count":2316,
      "watchers_count":2316,
      "language":"Nimrod",
      "has_issues":true,
      "has_downloads":true,
      "has_wiki":true,
      "has_pages":false,
      "forks_count":310,
      "mirror_url":null,
      "open_issues_count":596,
      "forks":310,
      "open_issues":598,
      "watchers":2316,
      "default_branch":"devel",
      "stargazers":2316,
      "master_branch":"devel",
      "organization":"nim-lang"
   },
   "pusher":{
      "name":"dom96",
      "email":"[email protected]"
   },
   "organization":{
      "login":"nim-lang",
      "id":603863,
      "url":"https://api.github.com/orgs/nim-lang",
      "repos_url":"https://api.github.com/orgs/nim-lang/repos",
      "events_url":"https://api.github.com/orgs/nim-lang/events",
      "members_url":"https://api.github.com/orgs/nim-lang/members{/member}",
      "public_members_url":"https://api.github.com/orgs/nim-lang/public_members{/member}",
      "avatar_url":"https://avatars.githubusercontent.com/u/603863?v=3",
      "description":""
   },
   "sender":{
      "login":"dom96",
      "id":246651,
      "avatar_url":"https://avatars.githubusercontent.com/u/246651?v=3",
      "gravatar_id":"",
      "url":"https://api.github.com/users/dom96",
      "html_url":"https://github.com/dom96",
      "followers_url":"https://api.github.com/users/dom96/followers",
      "following_url":"https://api.github.com/users/dom96/following{/other_user}",
      "gists_url":"https://api.github.com/users/dom96/gists{/gist_id}",
      "starred_url":"https://api.github.com/users/dom96/starred{/owner}{/repo}",
      "subscriptions_url":"https://api.github.com/users/dom96/subscriptions",
      "organizations_url":"https://api.github.com/users/dom96/orgs",
      "repos_url":"https://api.github.com/users/dom96/repos",
      "events_url":"https://api.github.com/users/dom96/events{/privacy}",
      "received_events_url":"https://api.github.com/users/dom96/received_events",
      "type":"User",
      "site_admin":false
   }
}
Got message from hub: {"fatal":"Traceback (most recent call last)\u000Awebsite.nim(1183)        website\u000Aasyncio.nim(649)         poll\u000Aasyncio.nim(229)         asyncSockHandleRead\u000Awebsite.nim(143)         :anonymous\u000Awebsite.nim(681)         handleModuleMsg\u000Awebsite.nim(508)         parseMessage\u000Ajson.nim(779)            []\u000Asystem.nim(2358)         sysFatal\u000A"}

Public directory finding bug

The getStaticDir() gives an incorrect directory for the build specific logs when the website is executed from the src directory.

Remove irclogspath from config and add publicpath or the like.

Rewrite using Jester.

Rewrite the website using Jester and make (or design everything with a future possibility of implementing):

  • Control of builds on the website: being able to force a rebuild on particular platforms, build with different options (use C sources to rebuild is one example).
  • Create some kind of a template for the builder to make adjusting the build process much easier instead faffing about with Nimrod code. Or maybe write a small DSL in Nimrod which makes this kind of thing easier.
  • Improve the IRC bot; make sure it reports commits correctly.
  • Organize homepage better; do not list ALL commits and their build results.
  • /downloadLatest?platform=linux-x86_64

Builder reconnections during a build cause issues

When a builder reconnects during a build it should resync its state with the website.

Currently issues happen because NimBuild by default thinks there is no job when the builder connects. Commands which require a job to be running are sent and an assert job.isInProgress gets called along the way.

Warning: Could not write to logfile as it is nil.
Got line from builder: { "desc": "\"koch.exe boot -d:release\" started.",  "even
tType": 0,  "cmd": "koch.exe",  "args": "boot -d:release"}
Fatal error for builder-windows-x86(96.231.190.233)
Traceback (most recent call last)
website.nim(1161)        website
asyncio.nim(617)         poll
asyncio.nim(212)         asyncSockHandleRead
website.nim(142)         :anonymous
website.nim(639)         handleModuleMsg
website.nim(421)         parseMessage
website.nim(262)         setDesc
system.nim(2555)         hiddenRaiseAssert
system.nim(1844)         raiseAssert

Builder doesn't capture all output

The builder seems to fail at capturing all the output from a process, especially when the process fails. Perhaps it is an issue where all the data doesn't get written to the file and it gets uploaded before it does.

Add Pull Request Testing

Nimbuild should be able to watch repositories for new/changed pull requests, and have the testers report if any tests fail/succeed due to changes in the new branch.

Builder csource.zip detection issues

Builder should check the output of 'git pull' for the presence of 'csource.zip'.
This is required if the builder does not receive the files that have been modified because it requests the newest commit from the website in which case that is not sent.

builder can't start without network

The builder can't start up if there is no network access:

Started builder: built at 2013-03-08 23:22:38
Traceback (most recent call last)
builder.nim(855)         builder
builder.nim(724)         open
builder.nim(709)         hubConnect
asyncio.nim(293)         connect
sockets.nim(402)         connectAsync
os.nim(207)              OSError
Error: unhandled exception: nodename nor servname provided, or not known [EOS]

It would be nice if it acknowledged this and kept retrying connection (or whatever it seems to be doing), or maybe exit handling the exception gracefully with an error message to the user along with an exit code for external monitoring tools to catch.

Odd issues with large JSON from github

Traceback (most recent call last)
website.nim(1186)        website
asyncio.nim(631)         poll
asyncio.nim(212)         asyncSockHandleRead
website.nim(143)         :anonymous
website.nim(664)         handleModuleMsg
website.nim(498)         parseMessage
SIGSEGV: Illegal storage access. (Attempt to read from nil?)

Github module output:

eas Rumpf","email":"[email protected]","username":"Araq"},"committer":{"name":"Andr
eas Rumpf","email":"[email protected]","username":"Araq"},"added":["bin/empty.txt",
"build/empty.txt","tests/misc/99bottles.nim","tests/misc/minit.nim","tests/misc/
mvarious.nim","tests/misc/t99bott.nim","tests/misc/tack.nim","tests/misc/tatomic
.nim","tests/misc/tbug511622.nim","tests/misc/tcmdline.nim","tests/misc/tcolonis
proc.nim","tests/misc/tdllvar.nim","tests/misc/temit.nim","tests/misc/temptyecho
.nim","tests/misc/tendian.nim","tests/misc/teventemitter.nim","tests/misc/tevent
s.nim","tests/misc/tfib.nim","tests/misc/tfilter.nim","tests/misc/tgenconstraint
s.nim","tests/misc/tgetstartmilsecs.nim","tests/misc/tgtk.nim","tests/misc/thall
o.nim","tests/misc/theaproots.nim","tests/misc/thintoff.nim","tests/misc/tinc.ni
m","tests/misc/tinit.nim","tests/misc/tinout.nim","tests/misc/tints.nim","tests/
misc/tinvalidarrayaccess.nim","tests/misc/tinvalidnewseq.nim","tests/misc/tlastm
od.nim","tests/misc/tlibs.nim","tests/misc/tlocals.nim","tests/misc/tloops.nim",
"tests/misc/tmandelbrot.nim","tests/misc/tmemoization.nim","tests/misc/tmissingn
ilcheck.nim","tests/misc/tnew.nim","tests/misc/tnewderef.nim","tests/misc/tnewli
bs.nim","tests/misc/tnewsets.nim","tests/misc/tnewuns.nim","tests/misc/tnoforwar
d.nim","tests/misc/tnoinst.nim","tests/misc/tnolen.nim","tests/misc/tnoop.nim","
tests/misc/tnot.nim","tests/misc/tparedef.nim","tests/misc/tpos.nim","tests/misc
/tprep.nim","tests/misc/tquicksort.nim","tests/misc/tradix.nim","tests/misc/traw
str.nim","tests/misc/treadln.nim","tests/misc/treadx.nim","tests/misc/tromans.ni
m","tests/misc/tshadow_magic_type.nim","tests/misc/tsimplesort.nim","tests/misc/
tsimtych.nim","tests/misc/tsizeof.nim","tests/misc/tslices.nim","tests/misc/tsor
tdev.nim","tests/misc/tstrace.nim","tests/misc/tstrange.nim","tests/misc/tstrdes
c.nim","tests/misc/tstrdist.nim","tests/misc/tvarious.nim","tests/misc/tvarious1
.nim","tests/misc/tvarnums.nim"],"removed":[],"modified":["lib/system.nim"]},{"i
d":"8b82004359b8d852fa0107d79cc78b21eb35c028","distinct":false,"message":"delete
d & purged dlls","timestamp":"2014-04-09T18:17:42-05:00","url":"https://github.c
om/Araq/Nimrod/commit/8b82004359b8d852fa0107d79cc78b21eb35c028","author":{"name"
:"Simon Hafner","email":"[email protected]","username":"reactormonk"},"commi
tter":{"name":"Simon Hafner","email":"[email protected]","username":"reactor
monk"},"added":[],"removed":[],"modified":[]},{"id":"dcfc7a8896166563f6fd80fbab8
1bc50e0b5a217","distinct":true,"message":"resolved conflict","timestamp":"2014-0
4-10T01:47:20+02:00","url":"https://github.com/Araq/Nimrod/commit/dcfc7a88961665
63f6fd80fbab81bc50e0b5a217","author":{"name":"Andreas Rumpf","email":"ar@kimeta.
de"},"committer":{"name":"Andreas Rumpf","email":"[email protected]"},"added":["bin/e
mpty.txt","build/empty.txt","compiler/c2nim/tests/vincent.c","compiler/c2nim/tes
ts/vincent.h","compiler/canonicalizer.nim","compiler/lowerings.nim","compiler/se
mmacrosanity.nim"],"removed":[],"modified":["compiler/aliases.nim","compiler/ast
.nim","compiler/astalgo.nim","compiler/babelcmd.nim","compiler/bitsets.nim","com
piler/c2nim/c2nim.nim","compiler/c2nim/clex.nim","compiler/c2nim/cparse.nim","co
mpiler/c2nim/cpp.nim","compiler/ccgcalls.nim","compiler/ccgexprs.nim","compiler/
ccgmerge.nim","compiler/ccgstmts.nim","compiler/ccgthreadvars.nim","compiler/ccg
trav.nim","compiler/ccgtypes.nim","compiler/ccgutils.nim","compiler/cgen.nim","c
ompiler/cgendata.nim","compiler/cgmeth.nim","compiler/commands.nim","compiler/co
ndsyms.nim","compiler/crc.nim","compiler/depends.nim","compiler/docgen.nim","com
piler/docgen2.nim","compiler/evalffi.nim","compiler/evals.nim","compiler/evaltem
pl.nim","compiler/extccomp.nim","compiler/filter_tmpl.nim","compiler/filters.nim
","compiler/guards.nim","compiler/hlo.nim","compiler/idents.nim","compiler/idgen
.nim","compiler/importer.nim","compiler/jsgen.nim","compiler/jstypes.nim","compi
ler/lambdalifting.nim","compiler/lexer.nim","compiler/lists.nim","compiler/llstr
eam.nim","compiler/lookups.nim","compiler/magicsys.nim","compiler/main.nim","com
piler/modules.nim","compiler/msgs.nim","compiler/nimconf.nim","compiler/nimeval.
nim","compiler/nimlexbase.nim","compiler/nimrod.nim","compiler/nimrod.nimrod.cfg
","compiler/nimsets.nim","compiler/options.nim","compiler/parampatterns.nim","co
mpiler/parser.nim","compiler/pas2nim/pas2nim.nim","compiler/pas2nim/paslex.nim",
"compiler/pas2nim/pasparse.nim","compiler/passaux.nim","compiler/passes.nim","co
mpiler/patterns.nim","compiler/pbraces.nim","compiler/platform.nim","compiler/pr
agmas.nim","compiler/pretty.nim","compiler/procfind.nim","compiler/renderer.nim"
,"compiler/rodread.nim","compiler/rodutils.nim","compiler/rodwrite.nim","compile
r/ropes.nim","compiler/saturate.nim","compiler/sem.nim","compiler/semcall.nim","
compiler/semdata.nim","compiler/semdestruct.nim","compiler/semexprs.nim","compil
er/semfold.nim","compiler/semgnrc.nim","compiler/seminst.nim","compiler/semmagic
.nim","compiler/sempass2.nim","compiler/semstmts.nim","compiler/semtempl.nim","c
ompiler/semthreads.nim","compiler/semtypes.nim","compiler/semtypinst.nim","compi
ler/service.nim","compiler/sigmatch.nim","compiler/suggest.nim"]}],"head_commit"
:{"id":"dcfc7a8896166563f6fd80fbab81bc50e0b5a217","distinct":true,"message":"res
olved conflict","timestamp":"2014-04-10T01:47:20+02:00","url":"https://github.co
m/Araq/Nimrod/commit/dcfc7a8896166563f6fd80fbab81bc50e0b5a217","author":{"name":
"Andreas Rumpf","email":"[email protected]"},"committer":{"name":"Andreas Rumpf","ema
il":"[email protected]"},"added":["bin/empty.txt","build/empty.txt","compiler/c2nim/t
ests/vincent.c","compiler/c2nim/tests/vincent.h","compiler/canonicalizer.nim","c
ompiler/lowerings.nim","compiler/semmacrosanity.nim"],"removed":[],"modified":["
compiler/aliases.nim","compiler/ast.nim","compiler/astalgo.nim","compiler/babelc
md.nim","compiler/bitsets.nim","compiler/c2nim/c2nim.nim","compiler/c2nim/clex.n
im","compiler/c2nim/cparse.nim","compiler/c2nim/cpp.nim","compiler/ccgcalls.nim"
,"compiler/ccgexprs.nim","compiler/ccgmerge.nim","compiler/ccgstmts.nim","compil
er/ccgthreadvars.nim","compiler/ccgtrav.nim","compiler/ccgtypes.nim","compiler/c
cgutils.nim","compiler/cgen.nim","compiler/cgendata.nim","compiler/cgmeth.nim","
compiler/commands.nim","compiler/condsyms.nim","compiler/crc.nim","compiler/depe
nds.nim","compiler/docgen.nim","compiler/docgen2.nim","compiler/evalffi.nim","co
mpiler/evals.nim","compiler/evaltempl.nim","compiler/extccomp.nim","compiler/fil
ter_tmpl.nim","compiler/filters.nim","compiler/guards.nim","compiler/hlo.nim","c
ompiler/idents.nim","compiler/idgen.nim","compiler/importer.nim","compiler/jsgen
.nim","compiler/jstypes.nim","compiler/lambdalifting.nim","compiler/lexer.nim","
compiler/lists.nim","compiler/llstream.nim","compiler/lookups.nim","compiler/mag
icsys.nim","compiler/main.nim","compiler/modules.nim","compiler/msgs.nim","compi
ler/nimconf.nim","compiler/nimeval.nim","compiler/nimlexbase.nim","compiler/nimr
od.nim","compiler/nimrod.nimrod.cfg","compiler/nimsets.nim","compiler/options.ni
m","compiler/parampatterns.nim","compiler/parser.nim","compiler/pas2nim/pas2nim.
nim","compiler/pas2nim/paslex.nim","compiler/pas2nim/pasparse.nim","compiler/pas
saux.nim","compiler/passes.nim","compiler/patterns.nim","compiler/pbraces.nim","
compiler/platform.nim","compiler/pragmas.nim","compiler/pretty.nim","compiler/pr
ocfind.nim","compiler/renderer.nim","compiler/rodread.nim","compiler/rodutils.ni
m","compiler/rodwrite.nim","compiler/ropes.nim","compiler/saturate.nim","compile
r/sem.nim","compiler/semcall.nim","compiler/semdata.nim","compiler/semdestruct.n
im","compiler/semexprs.nim","compiler/semfold.nim","compiler/semgnrc.nim","compi
ler/seminst.nim","compiler/semmagic.nim","compiler/sempass2.nim","compiler/semst
mts.nim","compiler/semtempl.nim","compiler/semthreads.nim","compiler/semtypes.ni
m","compiler/semtypinst.nim","compiler/service.nim","compiler/sigmatch.nim","com
piler/suggest.nim"]},"repository":{"id":842037,"name":"Nimrod","url":"https://gi
thub.com/Araq/Nimrod","description":"Nimrod is a compiled, garbage-collected sys
tems programming language which has an excellent productivity/performance ratio.
 Nimrod's design focuses on efficiency, expressiveness, elegance (in the order o
f priority).","homepage":"http://nimrod-lang.org/","watchers":539,"stargazers":5
39,"forks":84,"fork":false,"size":333547,"owner":{"name":"Araq","email":"rumpf_a
@web.de"},"private":false,"open_issues":0,"has_issues":true,"has_downloads":true
,"has_wiki":true,"language":"Nimrod","created_at":1281991138,"pushed_at":1397087
261,"master_branch":"devel"},"pusher":{"name":"Araq","email":"[email protected]"}}
       dcfc7a8896166563f6fd80fbab81bc50e0b5a217
  200 OK {Content-Type: text/html}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.