From 33eaa227947c87bcc418fec5034d0e4896214230 Mon Sep 17 00:00:00 2001
From: Adam McDaniel
Date: Wed, 20 Dec 2023 17:46:49 -0500
Subject: [PATCH 1/3] Save changes
---
README.md | 144 +-
assets/code1.png | Bin 0 -> 289994 bytes
assets/code2.png | Bin 0 -> 305559 bytes
assets/code3.png | Bin 0 -> 276708 bytes
assets/presentation.png | Bin 0 -> 304762 bytes
assets/sage.png | Bin 0 -> 85652 bytes
assets/shell1.png | Bin 0 -> 37948 bytes
assets/shell2.png | Bin 0 -> 37802 bytes
examples/frontend/interactive-calculator.sg | 440 ++
examples/sage-os/presentation.sg | 414 ++
examples/sage-os/shell.sg | 4359 +++++++++++++++++++
src/cli.rs | 12 +-
src/lib.rs | 2 +-
src/targets/mod.rs | 4 +-
src/targets/{my_os.rs => sage_os.rs} | 10 +-
15 files changed, 5368 insertions(+), 17 deletions(-)
create mode 100644 assets/code1.png
create mode 100644 assets/code2.png
create mode 100644 assets/code3.png
create mode 100644 assets/presentation.png
create mode 100644 assets/sage.png
create mode 100644 assets/shell1.png
create mode 100644 assets/shell2.png
create mode 100644 examples/frontend/interactive-calculator.sg
create mode 100644 examples/sage-os/presentation.sg
create mode 100644 examples/sage-os/shell.sg
rename src/targets/{my_os.rs => sage_os.rs} (99%)
diff --git a/README.md b/README.md
index bba21d34..b3525b68 100644
--- a/README.md
+++ b/README.md
@@ -4,15 +4,152 @@
Sage advice for your coding conundrums!
-
-
+
+
-[***Here's a link to the online compiler with a builtin virtual machine interpreter!***](https://adam-mcdaniel.net/sage)
+[***Here's a link to the online compiler playground!***](https://adam-mcdaniel.net/sage)
## What is Sage?
+Sage is a programming language that tries to be maximally portable, expressive, and intuitive. It borrows some aspects of Rust, C, and Python. It currently has an x86 compiler backend, a C source backend, and an interpreter backend [which can run on the web](https://adam-mcdaniel.net/sage).
+
+
+
+## Why Sage?
+
+Sage is very portable -- run it on your thermostat! Here's the complete list of core virtual machine instructions, and their C equivalents:
+
+| Instruction | C Equivalent |
+| ----------- | --------------- |
+| `while` | `while (reg) {` |
+| `if` | `if (reg) {` |
+| `else` | `} else {` |
+| `end` | `}` |
+| `set N` | `reg = N;` |
+| `call` | `funs[reg]();` |
+| `ret` | `return;` |
+| `save` | `*tape_ptr = reg;` |
+| `res` | `reg = *tape_ptr;` |
+| `move N` | `tape_ptr += N;` |
+| `where` | `reg = tape_ptr;` |
+| `deref` | `push(tape_ptr); tape_ptr = *tape_ptr;` |
+| `refer` | `tape_ptr = pop();` |
+| `index` | `reg = (cell*)(reg) + *tape_ptr;` |
+| `add` | `reg += *tape_ptr;` |
+| `sub` | `reg -= *tape_ptr;` |
+| `mul` | `reg *= *tape_ptr;` |
+| `div` | `reg /= *tape_ptr;` |
+| `rem` | `reg %= *tape_ptr;` |
+| `gez` | `reg = reg >= 0;` |
+
+The compiler can target this limited instruction "core" set, with an expanded "standard" instruction set for floating point operations and foreign functions. The core instruction set is designed to be as simple as possible for anyone to implement their own backend. [Try to see if you can implement it yourself for your backend of choice!](https://github.com/adam-mcdaniel/sage/blob/main/src/targets/c.rs)
+
+## How useful is Sage?
+
+Sage is a very young project, and is not ready for production. It's still possible to write very useful programs in it, though.
+
+[SageOS is an operating system with a userspace written in Sage.](https://github.com/adam-mcdaniel/sage-os). The graphical shell and powerpoint presentation app (both written in Sage) use the FFI to draw to the screen, receive input from the mouse and keyboard, and interact with the filesystem. [You can look at the shell code here.](https://github.com/adam-mcdaniel/sage/tree/main/examples/sage-os/shell.sg)
+
+![Shell1](assets/shell1.png)
+![Shell2](assets/shell2.png)
+
+The presentation app parses PPM image files from the filesystem and renders them to the screen. [You can look at the presentation code here](https://github.com/adam-mcdaniel/sage/tree/main/examples/sage-os/presentation.sg)
+
+![Presentation](assets/presentation.png)
+
+Go to the [web-demo](https://adam-mcdaniel.net/sage) or the [examples/frontend](https://github.com/adam-mcdaniel/sage/tree/main/examples/) folder to see more code examples.
+
+## How do I use Sage?
+
+To start using sage, install it with cargo:
+
+```sh
+$ cargo install --git https://github.com/adam-mcdaniel/sage
+```
+
+Then, you can run a sage file with the `sage` command:
+
+```sh
+$ sage examples/frontend/calculator.sg
+```
+
+You can also compile a sage file to C with the `--target` flag:
+
+```sh
+$ sage examples/frontend/calculator.sg --target c
+$ # Or `-t c` for short
+$ sage examples/frontend/calculator.sg -tc
+$ gcc out.c -o out
+$ ./out
+```
+
+## Feature Roadmap
+
+- [x] Compiler Backends
+ - [x] x86 (semi-implemented and unoptimized)
+ - [ ] RISC-V
+ - [ ] ARM
+ - [ ] LLVM (highly desired!)
+ - [x] C (fully-implemented but unoptimized)
+ - [x] Interpreter (fully-implemented but unoptimized)
+ - [x] Web Backend
+ - [x] Interpreter
+ - [ ] Visual demo like the [web-demo](https://adam-mcdaniel.net/harbor) for [Harbor](https://github.com/adam-mcdaniel/harbor)
+- [x] Static variables and constant expressions
+- [x] Conditional compilation
+- [x] Polymorphic functions
+- [x] Mutability checks
+- [x] Rust-like `enum`s
+- [x] Pattern `match`ing
+- [x] Structural typing
+- [x] Recursive polymorphic types
+- [ ] Iterators and list/vector/array comprehensions
+- [ ] Hindley-Milner type inference
+- [ ] Typeclasses
+- [ ] Modules
+- [ ] A standard library
+ - [ ] Collections
+ - [ ] Networking
+ - [ ] Filesystem
+ - [ ] Graphics
+ - [ ] Audio
+ - [ ] GUI
+ - [ ] WebAssembly
+ - [ ] Foreign Function Interface
+ - [ ] Memory Management
+- [ ] A package manager
+- [ ] AST Macros
+
+## How do I contribute?
+
+If you want to contribute, you can open an issue or a pull request. [Adding backends for other architectures is a great way to contribute!](https://github.com/adam-mcdaniel/sage/blob/main/src/targets/c.rs)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/code1.png b/assets/code1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1073746112e3d6320741d9297ffb09345f7ada7f
GIT binary patch
literal 289994
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