Skip to content

Commit

Permalink
feat(lang): support for generators / stackful coroutines
Browse files Browse the repository at this point in the history
  • Loading branch information
tibordp committed Sep 8, 2024
1 parent 459799d commit d4b68c7
Show file tree
Hide file tree
Showing 7 changed files with 2,295 additions and 19 deletions.
26 changes: 17 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ ifndef NO_THREADS
ALUMINA_FLAGS += --cfg threading
LDFLAGS += -lpthread
endif
ifndef NO_MINICORO
MINICORO = $(BUILD_DIR)/minicoro.o
endif

ifdef TIMINGS
ALUMINA_FLAGS += --timings
Expand Down Expand Up @@ -112,13 +115,18 @@ ALUMINA_FLAGS_TEST = --sysroot $(SYSROOT) $(ALUMINA_FLAGS) --cfg test
ALUMINA_FLAGS_TEST_STD = --sysroot $(SYSROOT) $(ALUMINA_FLAGS) --cfg test --cfg test_std
endif

## ----------------------------- Minicoro ------------------------------

$(BUILD_DIR)/minicoro.o: common/minicoro/minicoro.c
$(CC) $(CFLAGS) -c $^ -o $@

## --------------------------- Stdlib tests ----------------------------

# Stdlib tests
$(STDLIB_TESTS).c: $(ALU_TEST_STD_DEPS)
$(ALUMINA_BOOT) $(ALUMINA_FLAGS_TEST_STD) -Zdeny-warnings --output $@

$(STDLIB_TESTS): $(STDLIB_TESTS).c
$(STDLIB_TESTS): $(STDLIB_TESTS).c $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

## ---------------------------- Lang tests -----------------------------
Expand All @@ -129,7 +137,7 @@ $(LANG_TESTS).c: $(ALU_TEST_DEPS) $(LANG_TEST_FILES)
$(ALUMINA_BOOT) $(ALUMINA_FLAGS_TEST) -Zdeny-warnings --output $@ \
$(call alumina_modules,$(LANG_TEST_FILES),tests/,)

$(LANG_TESTS): $(LANG_TESTS).c
$(LANG_TESTS): $(LANG_TESTS).c $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

## ------------------ Libraries ------------------
Expand All @@ -151,7 +159,7 @@ $(CODEGEN).c: $(ALU_DEPS) $(TREE_SITTER_SOURCES) $(CODEGEN_SOURCES)
$(call alumina_modules,$(TREE_SITTER_SOURCES),libraries/,/) \
$(call alumina_modules,$(CODEGEN_SOURCES),tools/,/)

$(CODEGEN): $(CODEGEN).c $(BUILD_DIR)/parser.o
$(CODEGEN): $(CODEGEN).c $(BUILD_DIR)/parser.o $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -ltree-sitter

libraries/aluminac/lib/node_kinds.alu: $(CODEGEN)
Expand All @@ -161,7 +169,7 @@ $(LIBRARIES_TESTS).c: $(ALU_TEST_DEPS) $(ALU_LIBRARIES)
$(ALUMINA_BOOT) $(ALUMINA_FLAGS_TEST) -Zdeny-warnings --output $@ \
$(call alumina_modules,$(ALU_LIBRARIES),libraries/,/)

$(LIBRARIES_TESTS): $(LIBRARIES_TESTS).c
$(LIBRARIES_TESTS): $(LIBRARIES_TESTS).c $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -ltree-sitter

## --------------------------------Tools -------------------------------
Expand All @@ -174,7 +182,7 @@ $(ALUMINA_DOC).c: $(ALU_DEPS) $(ALU_LIBRARIES) $(ALUMINA_DOC_SOURCES) libraries/
$(call alumina_modules,$(ALU_LIBRARIES),libraries/,/) \
$(call alumina_modules,$(ALUMINA_DOC_SOURCES),tools/,/)

$(ALUMINA_DOC): $(ALUMINA_DOC).c $(BUILD_DIR)/parser.o
$(ALUMINA_DOC): $(ALUMINA_DOC).c $(BUILD_DIR)/parser.o $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -ltree-sitter

$(BUILD_DIR)/doctest.alu: $(ALUMINA_DOC) $(SYSROOT_FILES) tools/alumina-doc/static/*
Expand All @@ -191,7 +199,7 @@ $(DOCTEST).c: $(ALU_TEST_DEPS) $(BUILD_DIR)/doctest.alu
$(ALUMINA_BOOT) $(ALUMINA_FLAGS_TEST) --output $@ $(BUILD_DIR)/doctest.alu \
$(call alumina_modules,$(ALU_LIBRARIES),libraries/,/)

$(DOCTEST): $(DOCTEST).c
$(DOCTEST): $(DOCTEST).c $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

.PHONY: docs test-docs serve-docs watch-docs
Expand Down Expand Up @@ -219,7 +227,7 @@ $(BUILD_DIR)/examples/.build:
$(BUILD_DIR)/examples/%.c: examples/%.alu $(ALU_DEPS) $(BUILD_DIR)/examples/.build
$(ALUMINA_BOOT) $(ALUMINA_FLAGS_COMMON) --output $@ main=$<

$(BUILD_DIR)/examples/%: $(BUILD_DIR)/examples/%.c
$(BUILD_DIR)/examples/%: $(BUILD_DIR)/examples/%.c $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

examples: $(patsubst examples/%.alu,$(BUILD_DIR)/examples/%,$(EXAMPLES))
Expand Down Expand Up @@ -268,7 +276,7 @@ all: alumina-boot
$(BUILD_DIR)/quick.c: $(ALU_DEPS) quick.alu
$(ALUMINA_BOOT) $(ALUMINA_FLAGS_COMMON) --output $@ quick=./quick.alu

$(BUILD_DIR)/quick: $(BUILD_DIR)/quick.c
$(BUILD_DIR)/quick: $(BUILD_DIR)/quick.c $(MINICORO)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

quick: $(BUILD_DIR)/quick
Expand All @@ -291,7 +299,7 @@ bench-std-cached: $(ALU_TEST_STD_DEPS)
fi
$(BENCH_CMD) $(ALUMINA_BOOT) $(ALUMINA_FLAGS_TEST_STD) --timings --cfg test --cfg test_std --output /dev/null

bench-std-cc: $(STDLIB_TESTS).c
bench-std-cc: $(STDLIB_TESTS).c $(MINICORO)
$(BENCH_CMD) $(CC) $(CFLAGS) -o/dev/null $^ $(LDFLAGS)

$(BUILD_DIR)/flamegraph.svg: $(ALUMINA_BOOT) $(SYSROOT_FILES)
Expand Down
2 changes: 2 additions & 0 deletions common/minicoro/minicoro.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#define MINICORO_IMPL
#include "minicoro.h"
Loading

0 comments on commit d4b68c7

Please sign in to comment.