| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Baremetal is now the default build target and therefore has its sources
at the top-level. Baremetal programs build using the phase-2 Mu toolchain
that requires a Linux kernel. This phase-2 codebase which used to be at
the top-level is now under the linux/ directory. Finally, the phase-2 toolchain,
while self-hosting, has a way to bootstrap from a C implementation, which
is now stored in linux/bootstrap. The bootstrap C implementation uses some
literate programming tools that are now in linux/bootstrap/tools.
So the whole thing has gotten inverted. Each directory should build one
artifact and include the main sources (along with standard library). Tools
used for building it are relegated to sub-directories, even though those
tools are often useful in their own right, and have had lots of interesting
programs written using them.
A couple of things have gotten dropped in this process:
- I had old ways to run on just a Linux kernel, or with a Soso kernel.
No more.
- I had some old tooling for running a single test at the cursor. I haven't
used that lately. Maybe I'll bring it back one day.
The reorg isn't done yet. Still to do:
- redo documentation everywhere. All the README files, all other markdown,
particularly vocabulary.md.
- clean up how-to-run comments at the start of programs everywhere
- rethink what to do with the html/ directory. Do we even want to keep
supporting it?
In spite of these shortcomings, all the scripts at the top-level, linux/
and linux/bootstrap are working. The names of the scripts also feel reasonable.
This is a good milestone to take stock at.
|
| |
|
|
|
|
|
| |
This is a little misleading otherwise since this is an entirely C++
project.
|
|
|
|
| |
https://futureofcoding.org/two-minute-week
|
|
|
|
| |
Give the bootstrap C++ program a less salient name.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Start of a new script called treeshake to emit stats for minimal line counts
and binary sizes for all apps.
It doesn't actually do any dead-code deletion yet. But it does build and
run all apps successfully. (Except apps/mu; we'll ignore that for now.
It's probably not being disciplined about identifying internal labels.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This undoes 5672 in favor of a new plan:
Layers 000 - 099 are for running without syntax sugar. We use them for
building syntax-sugar passes.
Layers 100 and up are for running with all syntax sugar.
The layers are arranged in approximate order so more phases rely on earlier
layers than later ones.
I plan to not use intermediate syntax sugar (just sigils without calls,
or sigils and calls without braces) anywhere except in the specific passes
implementing them.
|
| |
|
|
|
|
|
|
|
|
|
| |
https://github.com/ozkl/soso
+ Much smaller than Linux; builds instantly
+ Supports graphics
- No network support
- Doesn't work on a cloud server (yet?)
|
| |
|
| |
|
|
|
|
| |
There's going to be multiple forms of syntax sugar going forward.
|
|\ |
|
| |
| |
| |
| |
| | |
We basically only want to rebuild phases of the self-hosted translator
when we run the self-hosted translator.
|
| |
| |
| |
| | |
Environment variables allow me to have non-local effects inside scripts.
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Be more robust to stray files with numeric prefixes.
|
| |
|
| |
|
|
|
|
|
| |
Turns out enabling profiling requires '-pg' to also be passed in to the
linker. Might as well pass all flags everywhere.
|
|
|
|
| |
Handle CFLAGS like "-g -O3 -pg" while compiling.
|
|
|
|
| |
Let's start highlighting pipe stages better in shell scripts.
|
|
|
|
|
| |
Was there some reason I used a subshell?
No reason recorded at bottom.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Streamline the build process.
It's safest to always:
a) check if each output is `older_than` the inputs necessary to
construct it, and
b) update the output only if something changed.
However:
i) We don't yet have helpers to do b) in all situations, and
ii) combining a) and b) can cause `older_than` to spuriously report
files being updated.
So we'll always run exactly one of a) and b) and err on the side of
keeping the output reliable, at the risk of occasionally updating a file
unnecessarily and triggering unnecessary work downstream. Cross that
bridge when we run into it.
|
|
|
|
| |
Don't update autogenerated *_list files unless necessary.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
I'd messed up termbox in commit 3443; it was weird how it failed though.
The terminal got really sluggish to switch between windows when the
edit/ app was running. And it stopped clearing the screen properly.
|
| |
|
| |
|
|
|
|
| |
Don't print anything during build if there's nothing being built.
|
| |
|
|
|
|
|
|
|
|
| |
Fix the sense of a shell function.
Somehow in all these years I hadn't realized that 0 is true and non-zero
is false for purposes of *nix shells' `&&` and `||` operators. Suddenly
Urbit doesn't seem so far out..
|
|
|
|
| |
Purge remaining `makefile`s, without breaking CI.
|
|
A generic build system is overkill for such a small project, and it was
adding complexity on OpenBSD which doesn't come with GNU make by
default.
In the process we also eliminate our reliance on bash and perl, at least
for the core build script.
|