diff --git a/README.md b/README.md index 5056d5efb..8eefe2c67 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,9 @@ [3]: https://github.com/JetBrains-Research/Lama-devel/workflows/Build/badge.svg?branch=1.10 [4]: https://github.com/JetBrains-Research/Lama-devel/actions - - # Lama -![lama](lama.png) is a programming language developed by JetBrains Research for educational purposes as an exemplary language to introduce +![lama](lama.svg) is a programming language developed by JetBrains Research for educational purposes as an exemplary language to introduce the domain of programming languages, compilers and tools. Its general characteristics are: * procedural with first-class functions - functions can be passed as arguments, placed in data structures, @@ -24,11 +22,11 @@ the domain of programming languages, compilers and tools. Its general characteri * with user-defined infix operators, including those defined in local scopes; * with automatic memory management (garbage collection). -The name ![lama](lama.png) is an acronym for *Lambda-Algol* since the language has borrowed the syntactic shape of +The name ![lama](lama.svg) is an acronym for *Lambda-Algol* since the language has borrowed the syntactic shape of operators from **Algol-68**; [**Haskell**](http://www.haskell.org) and [**OCaml**](http://ocaml.org) can be mentioned as other languages of inspiration. -The main purpose of ![lama](lama.png) is to present a repertoire of constructs with certain runtime behavior and +The main purpose of ![lama](lama.svg) is to present a repertoire of constructs with certain runtime behavior and relevant implementation techniques. The lack of a type system (a vital feature for a real-word language for software engineering) is an intensional decision which allows to show the unchained diversity of runtime behaviors, including those which a typical type system is called to prevent. On the other hand @@ -37,7 +35,7 @@ type systems) on. The current implementation contains a native code compiler for **x86-32**, written in **OCaml**, a runtime library with garbage-collection support, written in **C**, and a small -standard library, written in ![lama](lama.png) itself. The native code compiler uses **gcc** as a toolchain. +standard library, written in ![lama](lama.svg) itself. The native code compiler uses **gcc** as a toolchain. In addition, a source-level reference interpreter is implemented as well as a compiler to a small stack machine. The stack machine code can in turn be either interpreted on a stack machine interpreter, or @@ -54,11 +52,11 @@ Windows users should get Windows Subsystem for Linux a.k.a WSL (recommended) or * System-wide prerequisites: - `sudo apt install gcc-multilib` (in Debian-based GNU/Linux) - - On some versions you need to install additional package `lib32gcc-9-dev` in case of errors like - ``` + + On some versions you need to install additional package `lib32gcc-9-dev` in case of errors like + ``` /usr/bin/ld: cannot find -lgcc - /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a when searching for -lgcc + /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a when searching for -lgcc ``` - [opam](http://opam.ocaml.org) (>= 2.0.4) - [OCaml](http://ocaml.org) (>= 4.10.1). *Optional* because it can be easily installed through opam. Compiler variant with `flambda` switch is recommended diff --git a/lama.svg b/lama.svg new file mode 100644 index 000000000..7e0b42a5e --- /dev/null +++ b/lama.svg @@ -0,0 +1,2 @@ + +