5 Commits

Author SHA1 Message Date
1f19292366 Update README.md
This project is frozen for now so it doesn't make sense to have dates for the roadmap.
2024-10-12 13:49:04 -06:00
3bc504aae6 Clarify install instructions in README.md 2024-04-19 08:31:57 +00:00
1085cfdc3c Typo 2024-04-12 05:10:28 +00:00
ecd9f79aae Add FAQ to README.md 2024-04-12 05:08:55 +00:00
c934a6c76c Updated readme (conditional comp. -> GOOS/GOARCH) 2024-04-09 19:00:59 +00:00
2 changed files with 29 additions and 10 deletions

View File

@@ -19,9 +19,11 @@ This language is designed for:
- Compiler must avoid generating logic that the user does not write
## Installation
You can install the compiler by running:
Before installing the compiler with `go install`, you will need to install the
[Go programming language](https://go.dev/) on your system. Afterwards, you can
install the compiler and associated tooling by running:
`go install ./cmd/fsplc`
`go install ./cmd/*`
The `fsplc` program depends on the LLVM IR compiler (`llc`). If it is not found,
it will attempt to use `clang` instead but with some features disabled. Please
@@ -98,21 +100,38 @@ Q1 2024:
- [x] For/range loops
- [x] Switch statements
Q2 2024:
Afterwards:
- [ ] Mutable/immutable variables
- [ ] Basic, non-final standard library routines
- [ ] Conditional compilation
- [ ] Shared library compilation
- [ ] Constants
- [ ] ABI documentation
Q3 2024
- [ ] Vararg
- [ ] FSPL vararg using Slices
- [ ] Optional per-function C-style vararg for compatibility
- [ ] Generics
- [ ] Ownership system
- [ ] Lightweight, modularized (and of course, totally optional) standard library to replace those written in Q2
- [ ] Lightweight, modularized (and of course, totally optional) standard library to replace those written previously
At the beginning of Q4 2024, a 1.0 version of the language will be released.
## FAQ
I have either been asked these questions, or expect to be at some point.
### What happened to ARF?
A couple of years ago, I attempted to create a programming language under the
name ARF, with the goal of trying out some new and interesting syntax I'd come
up with. I made several attempts to build a working compiler for it, but never
quite succeeded. When I entered my senior year at university, I decided to have
another crack at it as my senior project. By then, the ideas I had for the
language had changed so much, it was basically a Ship of Theseus situation and
it really just needed a new name altogether. Plus, ARF never really stood for
anything in the first place.
### Why Go?
Out of all the languages I know, I probably know Go the best. It was an obvious
choice for making something this complex. However, I'd like to self-host the
compiler eventually.
### I know you as X name from Y place, why is your name here Sasha Koshka?
I consider it a bad idea to share your real name over the internet.

View File

@@ -8,9 +8,9 @@ IR module tree.
## Organization
Generator defines the Target type, which contains information about the system
that the program is being compiled for. The native sub-package uses Go's
conditional compilation directives to provide a default Target that matches the
system the compiler has been natively built for.
that the program is being compiled for. The native sub-package uses GOOS and
GOARCH to provide a default Target that matches the system the compiler has been
natively built for.
The entry point for all logic defined in this package is Target.Generate(). This
method creates a new generator, and uses it to recursively generate and return an