diff options
author | Camil Staps | 2018-12-30 00:32:36 +0100 |
---|---|---|
committer | Camil Staps | 2018-12-30 00:35:18 +0100 |
commit | 3290cc4f3bc6c9bd12b190330bd063fc269cd56d (patch) | |
tree | 1468efdea58d1576493d71080a5fd6fc6fce7505 /resources/pug/finals | |
parent | Remove pre-master (not formally finished) (diff) |
Add links to headings of clean.html; add part about the ABC machine
Diffstat (limited to 'resources/pug/finals')
-rw-r--r-- | resources/pug/finals/clean.pug | 74 |
1 files changed, 60 insertions, 14 deletions
diff --git a/resources/pug/finals/clean.pug b/resources/pug/finals/clean.pug index 02b59b3..970ecf8 100644 --- a/resources/pug/finals/clean.pug +++ b/resources/pug/finals/clean.pug @@ -26,7 +26,7 @@ block content mixin svnItem(repo, desc) +item('https://svn.cs.ru.nl/repos/' + repo, repo, desc)&attributes(attributes) - h2 Tools & auxiliaries + h2(id="tools") #[a(href="#tools") #] Tools & auxiliaries ul +item('https://cloogle.org', 'Cloogle', 'search engine') +gitlabItem('cloogle', 'cloogle-tags', 'tagfile generator') @@ -34,7 +34,7 @@ block content +gitlabItem('cstaps', 'iclm', 'clm with automatic error handling') +item('https://gitlab.science.ru.nl/cstaps/clean-rts-cheat-sheet', 'cstaps/clean-rts-cheat-sheet', 'cheat sheets for the run-time system') - h2 Syntax highlighting, editor plugins, etc. + h2(id="plugins") #[a(href="#plugins") #] Syntax highlighting, editor plugins, etc. ul +gitlabItem('cstaps', 'vim-clean', 'Vim syntax highlighting and extra functions') +gitlabItem('cloogle', 'clean-highlighter', 'standalone JavaScript highlighter') @@ -45,7 +45,7 @@ block content +githubItem('timjs', 'atom-language-clean', 'Atom highlighting support') +githubItem('W95Psp', 'CleanForVSCode', 'an extension for VSCode') - h2 Distributions + h2(id="distributions") #[a(href="#distributions") #] Distributions ul +item('https://ftp.cs.ru.nl/Clean/builds/', 'ftp.cs.ru.nl/Clean/builds/', 'official nightlies') +item('https://hub.docker.com/r/camilstaps/clean', 'camilstaps/clean', 'Docker images') @@ -54,7 +54,63 @@ block content +item('https://ftp.cs.ru.nl/Clean/Clean30/', 'ftp.cs.ru.nl/Clean/Clean30', 'the official Clean 3.0 distribution') +item('https://ftp.cs.ru.nl/Clean/nightly/', 'ftp.cs.ru.nl/Clean/nightly', 'some older iTasks distributions') - h2 Homework + h2(id="official-repos") #[a(href="#official-repos") #] Official repositories + p These repositories can be browsed at #[a(href="https://svn.camilstaps.nl") svn.camilstaps.nl]. + ul + +item('https://gitlab.science.ru.nl/clean-and-itasks', 'clean-and-itasks', 'Radboud gitlab group with libraries') + +item('https://gitlab.science.ru.nl/clean-compiler-and-rts', 'clean-compiler-and-rts', 'Radboud gitlab group with the compiler, code generator, and other core tools') + +svnItem('clean-dynamic-system', 'the dynamics linker and other related tools and libraries') + +svnItem('clean-ide', 'the IDE, cpm') + +svnItem('clean-libraries', 'StdEnv, StdLib, Generics, TCPIP, ArgEnv, Directory, ObjectIO, Hilde, and many others') + +svnItem('clean-tools', 'clm, elf_linker, htoclean') + + h2(id="abc") #[a(href="#abc") #] The ABC machine + p + | The ABC machine is the abstract machine for which the Clean #[em compiler] generates code. + | The #[em code generator] can generate actual machine code from ABC code for various platforms. + | For people working on a low level with Clean, it can be useful to implement parts of an application in ABC (through #[a(href="https://cloogle.org/#exact%20code") #[code code { ... }]] blocks) + | It is also a convenient target language if you are implementing a compiler, because it is still relatively high level and has a code generator that optimises a lot of inefficient ABC code away. + p If you are looking into the ABC machine, the following things may be helpful: + ul + li + p + | The ABC machine was originally described by Pieter Koopman in his 1990 dissertation #[em Functional Programs as Executable Specifications] (Meppel). + | For a port of the original #[em Miranda] implementation to Clean, see #[a(href="https://gitlab.science.ru.nl/cstaps/ABCMachine/") cstaps/ABCMachine]. + | While this dissertation is useful to get an overview of the design of the abstract machine, it cannot be used as a reference for present-day ABC code. + li + p + | For an overview of all ABC instructions, search for #[code put_instructions_in_table] in #[a(href="https://gitlab.science.ru.nl/clean-compiler-and-rts/code-generator/blob/master/cginput.c") #[code cginput.c]]. + | The instructions are implemented in #[code cgcode.c] and #[code cginstructions.c] of the same repository. + | However, the implementation is at times hard to read and sometimes it is easier to look at the implementation in the ABC interpreter described below. + li + p + | #[a(href="https://cloogle.org") Cloogle] has documentation for some ABC instructions. + | The documentation is generated from #[a(href="https://gitlab.science.ru.nl/cloogle/cloogle-org/blob/master/backend/Builtin/ABC.icl") #[code backend/Builtin/ABC.icl]]. + | There is a #[a(href="https://gitlab.science.ru.nl/cloogle/cloogle-org/blob/master/util/genabcdoc.icl") #[code genabcdoc]] tool that can generate all ABC documentation in one webpage. + | Pull requests for missing instructions are very welcome. + li + p + | There is an #[a(href="https://gitlab.science.ru.nl/cstaps/abc-interpreter") ABC interpreter] written in C. + | The implementation of the instructions can be found in #[code /src/interpret_instructions.h]. + | This is probably the most useful reference for the semantics of ABC instructions. + p + | The repository also includes an interactive graphical debugger for the ABC machine, inspired by `gdb`. + | This is the #[code debug] program found in #[code /src]. + | You first need to generate bytecode from the ABC code using the workflow described in #[a(href="https://gitlab.science.ru.nl/cstaps/abc-interpreter/blob/master/doc/tools.md") #[code doc/tools.md]]. + | For help on the interface of #[code debug], press #[kbd ?] when you are in the GUI. + p + | For performance reasons, this interpreter has a larger instruction set than the actual ABC machine. + | You can optimise 'common' ABC code to 'optimised' ABC code using the #[code abcopt] tool in the same repository. + | The interpreter should however also work with unoptimised ABC code. + li + p If you get stuck, ask the maintainer of the #[a(href="https://gitlab.science.ru.nl/cstaps/abc-interpreter") ABC interpreter] or the #[a(href="https://gitlab.science.ru.nl/clean-compiler-and-rts/code-generator") code generator] for help. + + h2(id="homework") #[a(href="#homework") #] Homework + p + strong(style="color:red;") NB: + | While not all of these repositories have #[strong(style="color:red;") licenses], + | copying from any of them without giving proper attribution constitutes #[strong(style="color:red;") plagiarism] in a university context. + | This list is provided here for inspiration only. ul li strong Radboud: Functional Programming 1/2 (pre-Haskell); Functional Programming for Artificial Intelligence students @@ -92,13 +148,3 @@ block content +githubItem('ordogfioka', 'Clean')(year='2016-17') +githubItem('thookes', 'clean')(year='2016-17') +githubItem('tomeeeS', 'clean-bead1')(year='2017-18') - - h2 Official repositories - p These repositories can be browsed at #[a(href="https://svn.camilstaps.nl") svn.camilstaps.nl]. - ul - +item('https://gitlab.science.ru.nl/clean-and-itasks', 'clean-and-itasks', 'Radboud gitlab group with libraries') - +item('https://gitlab.science.ru.nl/clean-compiler-and-rts', 'clean-compiler-and-rts', 'Radboud gitlab group with the compiler, code generator, and other core tools') - +svnItem('clean-dynamic-system', 'the dynamics linker and other related tools and libraries') - +svnItem('clean-ide', 'the IDE, cpm') - +svnItem('clean-libraries', 'StdEnv, StdLib, Generics, TCPIP, ArgEnv, Directory, ObjectIO, Hilde, and many others') - +svnItem('clean-tools', 'clm, elf_linker, htoclean') |