Compare commits
No commits in common. "master" and "v0.1.2" have entirely different histories.
|
@ -12,10 +12,9 @@ name: default
|
|||
|
||||
steps:
|
||||
- name: build
|
||||
image: pureos/byzantium
|
||||
image: pureos/amber-slim
|
||||
commands:
|
||||
- apt -y update
|
||||
- apt -y install wget build-essential autoconf automake dejagnu
|
||||
- apt -y install build-essential autoconf automake dejagnu
|
||||
- autoreconf --install
|
||||
- ./configure CFLAGS='-O0 -g -std=c99 -Wall -Wextra -Wpedantic --coverage'
|
||||
- make
|
||||
|
|
62
README.md
62
README.md
|
@ -1,54 +1,42 @@
|
|||
<!--
|
||||
Copyright (C) 2020,2021 CismonX <admin@cismon.net>
|
||||
Copyright (C) 2020,2021 CismonX <admin@cismon.net>
|
||||
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty, provided the copyright notice and
|
||||
this notice are preserved. This file is offered as-is, without any warranty.
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty, provided the copyright notice and
|
||||
this notice are preserved. This file is offered as-is, without any warranty.
|
||||
-->
|
||||
|
||||
U6a
|
||||
===
|
||||
# U6a
|
||||
|
||||
[![Build Status]](https://drone.cismon.net/esolangs/u6a) [![License]](LICENSE)
|
||||
[![Build Status](https://drone.cismon.net/api/badges/esolangs/u6a/status.svg)](https://drone.cismon.net/esolangs/u6a)
|
||||
[![License](https://img.shields.io/badge/license-GPL--3.0--or--later-blue.svg)](LICENSE)
|
||||
|
||||
Implementation of Unlambda, an esoteric programming language.
|
||||
|
||||
Description
|
||||
-----------
|
||||
## Description
|
||||
|
||||
The U6a project provides a bytecode compiler and a runtime system for the
|
||||
[Unlambda] programming language.
|
||||
The U6a project provides a bytecode compiler and a runtime system for the [Unlambda](http://www.madore.org/~david/programs/unlambda/) programming language.
|
||||
|
||||
Ideas behind this implementation can be found [here][U6a wiki].
|
||||
Ideas behind this implementation can be found [here](https://git.cismon.net/esolangs/u6a/wiki/Developer%27s-Notes-on-Implementing-Unlambda).
|
||||
|
||||
U6a is free software. You can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option) any later
|
||||
version.
|
||||
U6a is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
Getting Started
|
||||
---------------
|
||||
## Getting Started
|
||||
|
||||
To install U6a from source, see INSTALL.md.
|
||||
To install U6a from source, see [INSTALL](INSTALL).
|
||||
|
||||
Usage (See the u6ac(1) and u6a(1) man pages for details):
|
||||
Usage (See [**u6ac**(1)](man/u6ac.1) and [**u6a**(1)](man/u6a.1) man pages for details):
|
||||
|
||||
# Compile an Unlambda source file into bytecode.
|
||||
u6ac -o foo.unl.bc foo.unl
|
||||
# Execute the bytecode file.
|
||||
u6a foo.unl.bc
|
||||
```bash
|
||||
# Compile an Unlambda source file into bytecode.
|
||||
u6ac -o foo.unl.bc foo.unl
|
||||
# Execute the bytecode file.
|
||||
u6a foo.unl.bc
|
||||
```
|
||||
|
||||
Future Plans
|
||||
------------
|
||||
## Future Plans
|
||||
|
||||
* Interactive debugger: u6adb
|
||||
* More compile-time optimizations
|
||||
* More test cases
|
||||
* LLVM backend for u6ac
|
||||
|
||||
<!-- Reference Links -->
|
||||
|
||||
[Build Status]: https://drone.cismon.net/api/badges/esolangs/u6a/status.svg
|
||||
[License]: https://img.shields.io/badge/license-GPL--3.0--or--later-blue.svg
|
||||
[Unlambda]: http://www.madore.org/~david/programs/unlambda/
|
||||
[U6a wiki]: https://git.cismon.net/esolangs/u6a/wiki/Implementing-Unlambda
|
||||
* Interactive debugger: `u6adb`
|
||||
* More compile-time optimizations
|
||||
* More test cases
|
||||
* LLVM backend for `u6ac`
|
||||
|
|
12
man/u6a.1
12
man/u6a.1
|
@ -1,4 +1,4 @@
|
|||
.TH "U6A" "1" "Jan 30, 2020" "0.1.1" "U6a User Manual"
|
||||
.TH "U6A" "1" "Jan 30, 2020" "0.1.1" "U6A User Manual"
|
||||
.
|
||||
.SH NAME
|
||||
u6a - Runtime for the Unlambda programming language
|
||||
|
@ -49,9 +49,8 @@ Prints version number, then exit.
|
|||
.TP
|
||||
Version compatiblility:
|
||||
Definition of Unlambda bytecode may differ across multiple versions of u6a.
|
||||
Execution result is guaranteed to be consistent when both major and minor
|
||||
versions of bytecode file and the interpreter matches. Otherwise, the code
|
||||
may not work as expected and the interpreter will refuse to execute unless
|
||||
Execution result is guaranteed to be consistent when both major and minor versions of bytecode file and the interpreter matches.
|
||||
Otherwise, the code may not work as expected and the interpreter will refuse to execute unless
|
||||
.B -f
|
||||
option is provided.
|
||||
.TP
|
||||
|
@ -73,6 +72,5 @@ they could be read by the current Unlambda program.
|
|||
.SH COPYRIGHT
|
||||
Copyright (c) 2020 CismonX <admin@cismon.net>
|
||||
.PP
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty, provided the copyright notice and
|
||||
this notice are preserved. This file is offered as-is, without any warranty.
|
||||
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty, provided the copyright notice and this notice are preserved.
|
||||
This file is offered as-is, without any warranty.
|
||||
|
|
33
man/u6ac.1
33
man/u6ac.1
|
@ -1,4 +1,4 @@
|
|||
.TH "U6A" "1" "Jan 30, 2020" "0.1.1" "U6a User Manual"
|
||||
.TH "U6A" "1" "Jan 30, 2020" "0.1.1" "U6A User Manual"
|
||||
.
|
||||
.SH NAME
|
||||
u6ac - Bytecode compiler for the Unlambda programming language
|
||||
|
@ -14,8 +14,7 @@ Read and compile Unlambda code from the given
|
|||
or
|
||||
.B STDIN
|
||||
if "-" is given.
|
||||
Compilation result is saved in a special bytecode format, which can be executed
|
||||
with
|
||||
Compilation result is saved in a special bytecode format, which can be executed with
|
||||
.BR u6a (1).
|
||||
.
|
||||
.SH OPTIONS
|
||||
|
@ -39,17 +38,15 @@ to the beginning of
|
|||
.IR out-file .
|
||||
Defaults to "#!/usr/bin/env u6a\\n".
|
||||
.TP
|
||||
\fB\-O\fR[\fIoptimization-level\fR]
|
||||
\fB\-O[\fIoptimization-level\fR]
|
||||
Compile-time optimization level.
|
||||
.BR \-O0 :
|
||||
Turn off optimization.
|
||||
.BR \-O1 (default):
|
||||
Turn on basic optimizations, including constant folding & propagation,
|
||||
dead code elimination, etc.
|
||||
Turn on basic optimizations, including constant folding & propagation, dead code elimination, etc.
|
||||
.TP
|
||||
\fB\-\-syntax\-only\fR
|
||||
Only check for lexical and syntactic correctness of the source file, and skips
|
||||
bytecode generation.
|
||||
Only check for lexical and syntactic correctness of the source file, and skips bytecode generation.
|
||||
.TP
|
||||
\fB\-S\fR
|
||||
Produce mnemonic pseudo-instructions instead of bytecode.
|
||||
|
@ -72,24 +69,21 @@ Prints version number, then exit.
|
|||
.SS Unlambda
|
||||
.TP
|
||||
Language features:
|
||||
All features of Unlambda 2.0 are supported, including I/O functions,
|
||||
continuations and promises.
|
||||
All features of Unlambda 2.0 are supported, including I/O functions, continuations and promises.
|
||||
.TP
|
||||
Comments:
|
||||
Text in line comments is not restricted to ASCII only. UTF-8 format is also
|
||||
supported.
|
||||
Text in line comments is not restricted to ASCII only. UTF-8 format is also supported.
|
||||
.TP
|
||||
Function names:
|
||||
Charactor X in functions
|
||||
.B .X
|
||||
and
|
||||
.B ?X
|
||||
must be printable ASCII or "\\n" (beware if you are using Windows-style
|
||||
newlines), and are case-sensitive. Other builtin function names are
|
||||
case-insensitive.
|
||||
must be printable ASCII or "\\n" (beware if you are using Windows-style newlines), and are case-sensitive.
|
||||
Other builtin function names are case-insensitive.
|
||||
.SS Code Size
|
||||
Unlambda code size should not be larger than 4MiB (not counting comments and
|
||||
whitespaces). You may change this limit in
|
||||
Unlambda code size should not be larger than 4MiB (not counting comments and whitespaces).
|
||||
You may change this limit in
|
||||
.B defs.h
|
||||
and rebuild U6a for larger code to compile.
|
||||
.
|
||||
|
@ -99,6 +93,5 @@ and rebuild U6a for larger code to compile.
|
|||
.SH COPYRIGHT
|
||||
Copyright (c) 2020 CismonX <admin@cismon.net>
|
||||
.PP
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty, provided the copyright notice and
|
||||
this notice are preserved. This file is offered as-is, without any warranty.
|
||||
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty, provided the copyright notice and this notice are preserved.
|
||||
This file is offered as-is, without any warranty.
|
||||
|
|
|
@ -10,7 +10,7 @@ set tool "default"
|
|||
set timeout 20
|
||||
|
||||
puts "Downloading files..."
|
||||
exec wget --quiet "ftp://ftp.madore.org/pub/madore/unlambda/unlambda-2.0.0.tar.gz"
|
||||
exec wget --quiet "http://www.eleves.ens.fr:8080/home/madore/unlambda-2.0.0.tar.gz"
|
||||
puts "Extracting archive..."
|
||||
exec tar -zxvf "unlambda-2.0.0.tar.gz" >& /dev/null
|
||||
|
||||
|
|
Loading…
Reference in New Issue