interesting links2022-02-11T11:59:24+01:00https://roland.iwasno.net/links/https://roland.iwasno.net/links/https://roland.iwasno.net/links/Kalyn: a self-hosting compiler for x86-64https://roland.iwasno.net/links/?VKvHjA2022-02-11T11:59:24+01:00Found via <a href="https://vlang.io/" rel="nofollow">https://vlang.io/</a> → <a href="https://github.com/damon-kwok/v-mode" rel="nofollow">https://github.com/damon-kwok/v-mode</a> → <a href="https://github.com/raxod502/straight.el" rel="nofollow">https://github.com/raxod502/straight.el</a><br />
The programming language playground <a href="https://riju.codes/" rel="nofollow">https://riju.codes/</a> looks interesting too.<br>(<a href="https://roland.iwasno.net/links/?VKvHjA">Permalink</a>)LITCAVEhttps://roland.iwasno.net/links/?ldrP3A2022-01-11T14:00:20+01:00Home page of Ali Gholami Rudi. Found on fefe's homepage<br />
<a href="https://www.fefe.de/" rel="nofollow">https://www.fefe.de/</a><br />
His troff implementation Neatroff has been mentioned on TUHS <a href="https://minnie.tuhs.org/pipermail/tuhs/2022-January/025071.html" rel="nofollow">https://minnie.tuhs.org/pipermail/tuhs/2022-January/025071.html</a><br />
See also <a href="https://github.com/aligrudi/neatcc" rel="nofollow">https://github.com/aligrudi/neatcc</a>, a a small ARM/X86(_64) compiler for a subset of C; a brief introduction can be found on <a href="https://litcave.rudi.ir/neatcc.pdf" rel="nofollow">https://litcave.rudi.ir/neatcc.pdf</a>, a small test suite on <a href="https://litcave.rudi.ir/ncctest.tar.gz" rel="nofollow">https://litcave.rudi.ir/ncctest.tar.gz</a><br>(<a href="https://roland.iwasno.net/links/?ldrP3A">Permalink</a>)C Compiler for Common Lisphttps://roland.iwasno.net/links/?qZ__JA2021-07-30T09:56:30+02:00See also <a href="https://github.com/vsedach/Vacietis" rel="nofollow">https://github.com/vsedach/Vacietis</a> and <a href="https://awesomeopensource.com/project/vsedach/Vacietis" rel="nofollow">https://awesomeopensource.com/project/vsedach/Vacietis</a><br>(<a href="https://roland.iwasno.net/links/?qZ__JA">Permalink</a>)Zig is a general-purpose programming languagehttps://roland.iwasno.net/links/?IbVYPw2021-07-13T00:13:05+02:00Zig is a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.<br>(<a href="https://roland.iwasno.net/links/?IbVYPw">Permalink</a>)PDP-11 C stack operation - Computer History Wikihttps://roland.iwasno.net/links/?wQlUFA2021-06-29T17:36:50+02:00Detailed description of the stack layout, use of R5 as frame pointer by the (V6) Unix C compiler on the pdp-11.<br>(<a href="https://roland.iwasno.net/links/?wQlUFA">Permalink</a>)The Multics MACLISP Compilerhttps://roland.iwasno.net/links/?grhrpQ2021-06-28T01:10:37+02:00Found in <a href="https://minnie.tuhs.org/pipermail/tuhs/2018-February/014546.html" rel="nofollow">https://minnie.tuhs.org/pipermail/tuhs/2018-February/014546.html</a><br>(<a href="https://roland.iwasno.net/links/?grhrpQ">Permalink</a>)A simple cross-compiler for the Raspberry Pihttps://roland.iwasno.net/links/?gHxfjg2021-04-18T18:27:08+02:00(<a href="https://roland.iwasno.net/links/?gHxfjg">Permalink</a>)The Amsterdam Compiler Kithttps://roland.iwasno.net/links/?dfwBJQ2021-04-02T23:54:59+02:00The Amsterdam Compiler Kit is a cross-platform compiler and toolchain suite that is small, portable, extremely fast, and extremely flexible. It targets a number of low-end machines including the Z80, 8086 and 80386, but there are many other code generators available. It supports several languages, including ANSI C, Pascal and Modula-2, and contains integrated runtime libraries including a libc.<br />
<br />
The maintainer, David Given states "I, dtrg, cannot honestly recommend using the ACK for production code unless as a stop-gap measure or unless the other benefits of the ACK (e.g. having a very lightweight turnkey toolchain is valuable to you) outweigh the code quality."<br>(<a href="https://roland.iwasno.net/links/?dfwBJQ">Permalink</a>)Ideone is an online compiler and debugging tool which allows you to compile source code and execute it online in more than 60 programming languages.https://roland.iwasno.net/links/?rF9zyA2021-03-17T12:12:02+01:00(<a href="https://roland.iwasno.net/links/?rF9zyA">Permalink</a>)Cowgol 2.0: Ada-inspired language for very small systemshttps://roland.iwasno.net/links/?mfqhrA2021-02-23T14:45:29+01:00Main page is <a href="http://cowlark.com/cowgol/" rel="nofollow">http://cowlark.com/cowgol/</a><br />
It used to support the Apollo Guidance Computer used in the Apollo spacecraft, but I had to remove the code generator while rewriting the compiler and I haven’t reworked the AGC backend.<br />
<a href="http://cowlark.com/2019-07-20-cowgol-agc/index.html" rel="nofollow">http://cowlark.com/2019-07-20-cowgol-agc/index.html</a><br />
The author also ported the Fuzix operating system to the Raspberry π pico.<br />
<a href="http://cowlark.com/2021-02-16-fuzix-pi-pico/index.html" rel="nofollow">http://cowlark.com/2021-02-16-fuzix-pi-pico/index.html</a><br />
<br />
His tool <a href="https://github.com/davidgiven/narcissus" rel="nofollow">https://github.com/davidgiven/narcissus</a> to remap keys might be interesting too.<br />
So is his Forth system <a href="http://cowlark.com/fforth/" rel="nofollow">http://cowlark.com/fforth/</a><br>(<a href="https://roland.iwasno.net/links/?mfqhrA">Permalink</a>)Port of the "Ritchie C compiler" to the TI990 series processorshttps://roland.iwasno.net/links/?ccDUCA2021-02-21T18:16:45+01:00This repository contains a port of the "Ritchie C compiler" to the TI990 series processors, in particular the 9995 and 99105 chips. The port is currently fairly complete; only floating point operations remain unported. Other tool chain components (assembler, linker, etc.) are also provided.<br />
<br />
The long term goal is to run ancient unix on these chips. As a first stepping stone on that journey, a port of the original 1983 version of the Xinu system has already been completed. The source for that is also in this repository.<br />
<br />
Announced on TUHS mailing list <a href="https://minnie.tuhs.org/pipermail/tuhs/2021-February/023225.html" rel="nofollow">https://minnie.tuhs.org/pipermail/tuhs/2021-February/023225.html</a><br>(<a href="https://roland.iwasno.net/links/?ccDUCA">Permalink</a>)Loko Schemehttps://roland.iwasno.net/links/?Fdr9-A2020-06-21T23:48:24+02:00Loko Scheme, an optimizing R6RS Scheme compiler!<br />
<br />
- Batteries on the side (Akku.scm)<br />
- Only available for Linux/amd64, NetBSD/amd64 and bare metal amd64<br />
- New, untested, obnoxiously Free Software<br />
- Barely a REPL & slim documentation<br />
- The worst of Scheme and Lisp<br>(<a href="https://roland.iwasno.net/links/?Fdr9-A">Permalink</a>).@ Tony Finch's homepagehttps://roland.iwasno.net/links/?dN5DyQ2020-06-08T22:31:25+02:00Interesting software, such as<br />
unifdef selectively removes C preprocessor conditionals. My version of this program now shipped by all the BSDs (including Mac OS X) and is used by the Linux kernel build system.<br />
regpg safely stores server secrets using gpg, so you can keep them in version control.<br />
picoro - tiny coroutine implementations in pure C. I wrote an accompanying article, coroutines in 20 lines of standard C.<br />
Counting the days - tiny routines for converting Gregorian dates into linear counts, like Julian day numbers or Unix time_t. The date of the count - a small routine for converting linear day counts into Gregorian dates.<br />
<a href="https://dotat.at/@/2016-04-22-synergy-vs-xmodmap-fight.html" rel="nofollow">https://dotat.at/@/2016-04-22-synergy-vs-xmodmap-fight.html</a> Why you can't use xmodmap to change how Synergy handles modifier keys<br />
<a href="https://dotat.at/@/2023-05-26-whence-time.html" rel="nofollow">https://dotat.at/@/2023-05-26-whence-time.html</a> Where does my computer get the time from?<br />
His log of links, <a href="https://dotat.at/" rel="nofollow">https://dotat.at/</a>:/ which I found on the TUHS mailing list is also worth reading. He explains a bit about this log on <a href="http://dotat.at/" rel="nofollow">http://dotat.at/</a>.<br>(<a href="https://roland.iwasno.net/links/?dN5DyQ">Permalink</a>)Modern interactive LLVM-based Fortran compilerhttps://roland.iwasno.net/links/?ReyLeA2020-02-24T23:44:00+01:00LFortran is a modern open-source (BSD licensed) interactive Fortran compiler built on top of LLVM. It can execute user’s code interactively to allow exploratory work (much like Python, MATLAB or Julia) as well as compile to binaries with the goal to run user’s code on modern architectures such as multi-core CPUs and GPUs.<br>(<a href="https://roland.iwasno.net/links/?ReyLeA">Permalink</a>)Göran Weinholt's blog and project pageshttps://roland.iwasno.net/links/?0lMwbg2019-10-03T20:59:28+02:00Found via SchemePlanet, where he announced the R6RS Scheme compiler Loko. It targets AMD64, either on bare hardware or under Linux.<br />
Just one interesting example: <a href="https://weinholt.se/articles/non-posix-filesystems/" rel="nofollow">https://weinholt.se/articles/non-posix-filesystems/</a><br>(<a href="https://roland.iwasno.net/links/?0lMwbg">Permalink</a>)Compiler Explorerhttps://roland.iwasno.net/links/?x0Hzjw2019-06-03T10:15:16+02:00See the output of several compilers in your web browser.<br />
In addition to C++, it now supports Go, Rust and D.<br>(<a href="https://roland.iwasno.net/links/?x0Hzjw">Permalink</a>)Easy-ISLisp(EISL) is an interpreter and compiler compatible with ISLisp standard.https://roland.iwasno.net/links/?lK645A2019-02-19T17:03:06+01:00EISL was written by Kenichi Sasagawa<br />
<a href="https://qiita.com/sym_num/items/793adfe118514668e5b0" rel="nofollow">https://qiita.com/sym_num/items/793adfe118514668e5b0</a><br />
The license appears to be similar to BSD/MIT to my non-laywer eyes: <a href="https://github.com/sasagawa888/eisl/blob/master/license.txt" rel="nofollow">https://github.com/sasagawa888/eisl/blob/master/license.txt</a><br />
It provides an interface to WiringPi, allowing control of the GPIO pins on a Raspberry π.<br>(<a href="https://roland.iwasno.net/links/?lK645A">Permalink</a>)Mes - GNU Project - Free Software Foundationhttps://roland.iwasno.net/links/?K-I-yQ2018-10-30T18:51:26+01:00GNU Mes brings a Reduced Binary Seed bootstrap to GuixSD and potentially to any other interested GNU/Linux distribution, and aims to help create a full source bootstrap as part of the bootstrappable builds effort.<br />
<br />
It consists of a mutual self-hosting Scheme interpreter written in ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. This mes.c is being simplified to be transpiled by M2-Planet.<br />
<a href="https://github.com/oriansj/M2-Planet" rel="nofollow">https://github.com/oriansj/M2-Planet</a><br />
<br />
The Scheme interpreter (mes.c) has a Garbage Collector, a library of loadable Scheme modules– notably Dominique Boucher's LALR, Pre-R6RS portable syntax-case with R7RS ellipsis, Matt Wette's Nyacc –and test suite just barely enough to support a simple REPL and simple C-compiler: MesCC.<br />
<a href="https://github.com/oriansj/mescc-tools" rel="nofollow">https://github.com/oriansj/mescc-tools</a><br />
<br />
Mes+MesCC can compile an only lightly patched TinyCC that is self-hosting. Using this tcc and the Mes C library we now have a Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap GuixSD for i686-linux and x8664-linux.<br />
<br />
Mes is inspired by The Maxwell Equations of Software: LISP-1.5 – John McCarthy page 13, GNU Guix's source/binary packaging transparency and Jeremiah Orians's stage0 ~500 byte self-hosting hex assembler.<br />
<br />
GNU Mes is free software, it is distributed under the terms of the GNU General Public Licence version 3 or later. See the file COPYING.<br>(<a href="https://roland.iwasno.net/links/?K-I-yQ">Permalink</a>)Kblog: Setting up MinGW-w64 with Cygwinhttps://roland.iwasno.net/links/?4-igEQ2014-11-05T19:44:30+01:00A description how to use the MinGW-w64 tools in Cygwin.<br>(<a href="https://roland.iwasno.net/links/?4-igEQ">Permalink</a>)The Amsterdam Compiler Kithttps://roland.iwasno.net/links/?XLjfhw2014-11-04T11:02:28+01:00The Amsterdam Compiler Kit is a cross-platform compiler and toolchain suite that is small, portable, extremely fast, and extremely flexible. It targets a number of low-end machines including the Z80, 8086 and 80386, but there are many other code generators available (including the pdp-11). It supports several languages, including ANSI C, Pascal and Modula-2, and contains integrated runtime libraries including a libc. While it used to be a commercial product, it has been made open source under a BSD license.<br>(<a href="https://roland.iwasno.net/links/?XLjfhw">Permalink</a>)T3X.ORGhttps://roland.iwasno.net/links/?VxMsXw2014-09-12T13:54:22+02:00Interesting books and software about compiler/interpreter construction, including Scheme 9 from Empty Space and SubC.<br>(<a href="https://roland.iwasno.net/links/?VxMsXw">Permalink</a>)Jack Crenshaw's tutorial on compiler constructionhttps://roland.iwasno.net/links/?VnzexQ2013-11-28T14:20:47+01:00An on-line book describing the construction of a compiler translating a subset (?) of C into 68000 assembly. The compiler is written in Turbo Pascal.<br />
See also the original site <a href="http://compilers.iecc.com/crenshaw/" rel="nofollow">http://compilers.iecc.com/crenshaw/</a><br />
This fifteen-part series, written from 1988 to 1995, is a non-technical introduction to compiler construction. You can read the parts on-line or download them in a ZIP file.<br>(<a href="https://roland.iwasno.net/links/?VnzexQ">Permalink</a>)The Scheme programming language AKA The CHICKEN hens nest - Part 1 | shisaa.jphttps://roland.iwasno.net/links/?zkZkYA2013-09-03T23:32:14+02:00Blog entry describing how to write extensions (called eggs) for the Scheme compiler Chicken.<br>(<a href="https://roland.iwasno.net/links/?zkZkYA">Permalink</a>)sourceLairhttps://roland.iwasno.net/links/?JJ4quw2013-07-13T00:48:03+02:00On-line editor, compiler and runtime for various languages. Although Fortran is claimed to be supported, I have not been able to run a simple program.<br>(<a href="https://roland.iwasno.net/links/?JJ4quw">Permalink</a>)http://mythryl.org/index.htmlhttps://roland.iwasno.net/links/?e4pOBw2010-02-16T13:18:48+01:00Interesting functional programming language based on the Standard ML implementation SML/NJ, which came from the nice folks who gave us the laser, the transistor, and Unix.<br>(<a href="https://roland.iwasno.net/links/?e4pOBw">Permalink</a>)Programming musingshttps://roland.iwasno.net/links/?I88UFw2009-04-06T12:07:14+02:00Blog written by Juan Jose Garcia Ripoll, maintainer of the Common Lisp implementation ECL.<br>(<a href="https://roland.iwasno.net/links/?I88UFw">Permalink</a>)The Elements of Computing Systems / Nisan & Schocken / www.idc.ac.il/tecshttps://roland.iwasno.net/links/?3pSITA2009-03-24T14:41:57+01:00A book trying to teach computers from first principles, i.e. gates, using a hardware description language (a simulator is provided), software tools (assembler, compiler) and a small operating system.<br>(<a href="https://roland.iwasno.net/links/?3pSITA">Permalink</a>)Airs - Ian Lance Taylor Linkers part 1https://roland.iwasno.net/links/?smXXoA2009-02-26T17:38:53+01:00Start of a series of blog articles about linkers.<br>(<a href="https://roland.iwasno.net/links/?smXXoA">Permalink</a>)Programming Languages for the Java Virtual Machine JVMhttps://roland.iwasno.net/links/?K9WhWA2009-01-20T13:55:10+01:00A list of 240 implementations of various programming languages targeting the Java virtual machine.<br>(<a href="https://roland.iwasno.net/links/?K9WhWA">Permalink</a>)Lambda Associates Home Pagehttps://roland.iwasno.net/links/?IE4mJw2008-02-11T14:43:40+01:00Interesting work on Qi, a language based on Common Lisp which incorporates features such as (optional) type checking, pattern matching similar to those in ML and Haskell and logical programming (Prolog).<br>(<a href="https://roland.iwasno.net/links/?IE4mJw">Permalink</a>)Scheme systems supporting R6RShttps://roland.iwasno.net/links/?FuTg8A2008-02-05T11:08:04+01:00A post in comp.lang.lisp and comp.lang.scheme provides this "common knowledge".<br>(<a href="https://roland.iwasno.net/links/?FuTg8A">Permalink</a>)Scheme2Jshttps://roland.iwasno.net/links/?Lu92ag2006-11-22T11:30:10+01:00Scheme2Js is a Scheme to Javascript compiler distributed under the GPL license. While some effort has been spent on being as close as possible to R5rs, we concentrated mainly on efficiency. Usually Scheme2Js produces Javascript code, that is comparable to<br>(<a href="https://roland.iwasno.net/links/?Lu92ag">Permalink</a>)The ECL manualhttps://roland.iwasno.net/links/?PPTs1Q2006-10-24T20:52:50+02:00A new version of the manual for Embedded Common Lisp (ECL), work in progress but looks quite nice.<br>(<a href="https://roland.iwasno.net/links/?PPTs1Q">Permalink</a>)'(Montreal Scheme/Lisp User Group) / Bienvenuehttps://roland.iwasno.net/links/?pIAtPw2006-10-03T16:58:57+02:00Marc Feeley demonstrated how to write a simple Scheme to C compiler, in Scheme. In only 90 minutes! Presentation material (slides?), source code and video (200MB) are available.<br>(<a href="https://roland.iwasno.net/links/?pIAtPw">Permalink</a>)