Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,25 @@ We will review your pull request and provide feedback.

To set up a local development environment:

1. Ensure you have the required dependencies installed (e.g., cmake, ninja, gcc or your preferred compiler).
1. Ensure you have a C compiler installed, such as `cc`, `gcc`, or `clang`.

2. Clone the Luma repository:
1. Clone the Luma repository:

```bash
git clone https://github.com/your-username/luma.git
cd luma
git clone https://github.com/Luma-Programming-Language/Luma.git
cd Luma
```

3. Build the project following instructions in the README (or specific build scripts).
1. Build the project with the bootstrap script:

4. Run to ensure everything is working:
```bash
./scripts/bootstrap-build.sh
```

1. Run the compiler to ensure everything is working:

```bash
./luma
./bin/luma --help
```

## Style Guide
Expand All @@ -86,7 +90,7 @@ cd luma
Tests are important to maintain code quality. Before submitting a pull request:

- Write new tests for your features or bug fixes
- Run the full test suite to make sure everything passes
- Run the full test suite with `./bin/luma test/test.lx -name testing`
- Avoid breaking existing tests

## License
Expand Down
16 changes: 8 additions & 8 deletions docs/INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Luma is a self-hosted compiler — it transpiles to C and just needs a C compile

Grab the archive for your platform from the [latest release](releases/v0.3.5.md).

### Linux / macOS
### Linux / macOS (Prebuilt Binary)

```bash
tar -xzf luma-v0.3.5-linux-x86_64.tar.gz # or luma-v0.3.5-macos-x86_64.tar.gz
Expand All @@ -17,7 +17,7 @@ sudo ./install.sh # system-wide, requires sudo
./install.sh # user-local install, no sudo needed
```

### Windows
### Windows (Prebuilt Binary)

1. Extract `luma-v0.3.5-windows-x86_64.zip`.
2. Run `install.bat` — as Administrator for a system-wide install, or without for a user-local one.
Expand Down Expand Up @@ -68,7 +68,7 @@ If none of the three has the file, you'll get a "module not found — was its fi

If you'd rather not run the installer script:

### Linux / macOS
### Linux / macOS (Manual Installation)

**System-wide:**

Expand All @@ -90,9 +90,9 @@ cp -r std/* ~/.luma/std/
export PATH="$PATH:$HOME/.local/bin"
```

### Windows
### Windows (Manual Installation)

1. Create `C:\Program Files\luma\bin` and `\std` (system-wide) or `%USERPROFILE%\.luma\bin` and `\std` (user-local).
1. Create `C:\Program Files\luma\bin` and `C:\Program Files\luma\std` (system-wide) or `%USERPROFILE%\.luma\bin` and `%USERPROFILE%\.luma\std` (user-local).
2. Copy `luma.exe` into the `bin` directory.
3. Copy the contents of `std/` into the `std` directory.
4. Add the `bin` directory to your `PATH` environment variable.
Expand All @@ -105,15 +105,15 @@ export PATH="$PATH:$HOME/.local/bin"
luma --version
```

```
```text
Luma Compiler v0.3.5
```

---

## Troubleshooting

**"module not found — was its file passed with -l?"**
### "module not found — was its file passed with -l?"

Either the file wasn't passed with `-l` at all, or it's not sitting in any of the three [Standard Library Paths](#standard-library-paths) tiers above. Double-check the install actually landed where you expect (`ls ~/.luma/std/` or `ls /usr/local/lib/luma/std/`), and that the path you're passing to `-l` matches what's actually on disk relative to your current directory.

Expand All @@ -126,7 +126,7 @@ export PATH="$PATH:$HOME/.local/bin" # user-local install
export PATH="$PATH:/usr/local/bin" # system-wide install (usually already on PATH)
```

**PATH issues (Windows)**
### PATH issues (Windows)

Search "Environment Variables" in the Start menu, edit your PATH, and add `%USERPROFILE%\.luma\bin` or `C:\Program Files\luma\bin`, then restart your terminal.

Expand Down
15 changes: 5 additions & 10 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

*A low-level compiled language for people who want C's control without giving up their afternoon to memory bugs.*

<p align="center">
<img src="../assets/luma.png" alt="Luma Logo" width="160"/>
</p>
![Luma Logo](../assets/luma.png)

[Why?](#why) • [Language Tour](#language-tour) • [Self-Hosted](#self-hosted) • [Getting Started](#getting-started) • [Join Us](#join-us)

Expand Down Expand Up @@ -117,7 +115,7 @@ That's a small slice. The full language reference is in [`docs/docs.md`](https:/

The compiler is written in Luma. It compiles itself, and every commit proves it can: an existing `luma` binary builds the current compiler source, that output builds the same source again, and the two results are diffed byte-for-byte. If a compiler can't reproduce itself exactly from its own source, something's wrong, so that check runs before anything else does, on every push and every PR.

Releases are cross-compiled from that same self-hosted compiler: a single Linux CI run produces Linux, Windows, and macOS binaries, and the Windows/macOS ones actually get downloaded and executed on real runners before a release goes out. See [`docs/releases/`](releases/) for what's shipped and when.
Releases are built from that same self-hosted compiler: Linux and Windows binaries are produced on Linux, while macOS binaries are built on a macOS CI runner. The Windows and macOS binaries are downloaded and executed on real runners before a release goes out. See [`docs/releases/`](releases/) for what's shipped and when.

---

Expand All @@ -134,13 +132,13 @@ Latest release: **[v0.3.5](releases/v0.3.5.md)**
- A language server (`luma --lsp`) with diagnostics, hover, and completion
- Cross-platform builds for Linux, Windows, and macOS, verified in CI

**What's not there yet:** generic structs (generic *functions* — `fn<T>` — are implemented, see [docs.md's Generics section](docs.md#generics)), and a few rough edges in the static analyzer around conditional allocation paths. See the Known Limitations section of the [latest release notes](releases/v0.3.5.md) for the current honest list.
**What's not there yet:** a few rough edges in the static analyzer around conditional allocation paths. Generic functions and generic structs are implemented; see [the Generics section](docs.md#generics). See [Current Limitations](docs.md#current-limitations) for the current list.

---

## Getting Started

Building from source just needs a C compiler no LLVM, no Meson, nothing else to install first:
Building from source just needs a C compiler, not LLVM or Meson:

```bash
git clone https://github.com/Luma-Programming-Language/Luma.git
Expand Down Expand Up @@ -199,7 +197,4 @@ cc output/main.c -lm -o main

---

<p align="center">
<strong>Built with ❤️ by the Luma community</strong>
</p>

Built with ❤️ by the Luma community
Loading