Compare commits
5 Commits
implement-
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f19292366 | |||
| 3bc504aae6 | |||
| 1085cfdc3c | |||
| ecd9f79aae | |||
| c934a6c76c |
33
README.md
33
README.md
@@ -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.
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user