feat: add wasm build targets, profile hooks, os_demo example, and restructure manual source

- Add `wasm`, `wasm-clean`, and `install-emscripten` phony targets to Makefile for WebAssembly cross-compilation
- Insert `WREN_PROFILE_ENTER`/`WREN_PROFILE_EXIT` macros in `wren_vm.h` and `wren_vm.c` to support optional runtime profiling via `WREN_PROFILE_ENABLED`
- Create `example/os_demo.wren` demonstrating Platform, Process, and conditional exit usage
- Update `example/regex_demo.wren` to import `Match` and exercise Match object properties, groups, and `matchAll`
- Remove static HTML manual pages (`base64.html`, `dns.html`, `json.html`) and replace with structured `manual_src/` directory containing Jinja2 templates, YAML metadata, and content pages
- Expand `README.md` with build targets table, manual building instructions, source layout, and guide for adding new module documentation
This commit is contained in:
2026-01-26 04:12:14 +00:00
parent 79ff93c9a2
commit 04e467e09b
143 changed files with 13333 additions and 15112 deletions
+18 -6
View File
@@ -37,7 +37,7 @@ ifeq ($(config),release_64bit)
TARGETDIR = ../../bin
TARGET = $(TARGETDIR)/wren_cli
OBJDIR = obj/64bit/Release
DEFINES += -DNDEBUG -D_GNU_SOURCE
DEFINES += -DNDEBUG -DWREN_PROFILE_ENABLED -D_GNU_SOURCE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -O3 -std=c99
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -O3
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -s
@@ -46,7 +46,7 @@ else ifeq ($(config),release_32bit)
TARGETDIR = ../../bin
TARGET = $(TARGETDIR)/wren_cli
OBJDIR = obj/32bit/Release
DEFINES += -DNDEBUG -D_GNU_SOURCE
DEFINES += -DNDEBUG -DWREN_PROFILE_ENABLED -D_GNU_SOURCE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m32 -O3 -std=c99
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m32 -O3
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib32 -m32 -s
@@ -55,7 +55,7 @@ else ifeq ($(config),release_64bit-no-nan-tagging)
TARGETDIR = ../../bin
TARGET = $(TARGETDIR)/wren_cli
OBJDIR = obj/64bit-no-nan-tagging/Release
DEFINES += -DNDEBUG -DWREN_NAN_TAGGING=0 -D_GNU_SOURCE
DEFINES += -DNDEBUG -DWREN_NAN_TAGGING=0 -DWREN_PROFILE_ENABLED -D_GNU_SOURCE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -O3 -std=c99
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -O3
ALL_LDFLAGS += $(LDFLAGS) -s
@@ -64,7 +64,7 @@ else ifeq ($(config),debug_64bit)
TARGETDIR = ../../bin
TARGET = $(TARGETDIR)/wren_cli_d
OBJDIR = obj/64bit/Debug
DEFINES += -DDEBUG -D_GNU_SOURCE
DEFINES += -DDEBUG -DWREN_PROFILE_ENABLED -D_GNU_SOURCE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -g -std=c99
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -g
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64
@@ -73,7 +73,7 @@ else ifeq ($(config),debug_32bit)
TARGETDIR = ../../bin
TARGET = $(TARGETDIR)/wren_cli_d
OBJDIR = obj/32bit/Debug
DEFINES += -DDEBUG -D_GNU_SOURCE
DEFINES += -DDEBUG -DWREN_PROFILE_ENABLED -D_GNU_SOURCE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m32 -g -std=c99
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m32 -g
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib32 -m32
@@ -82,7 +82,7 @@ else ifeq ($(config),debug_64bit-no-nan-tagging)
TARGETDIR = ../../bin
TARGET = $(TARGETDIR)/wren_cli_d
OBJDIR = obj/64bit-no-nan-tagging/Debug
DEFINES += -DDEBUG -DWREN_NAN_TAGGING=0 -D_GNU_SOURCE
DEFINES += -DDEBUG -DWREN_NAN_TAGGING=0 -DWREN_PROFILE_ENABLED -D_GNU_SOURCE
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g -std=c99
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g
ALL_LDFLAGS += $(LDFLAGS)
@@ -150,8 +150,10 @@ OBJECTS += $(OBJDIR)/sqlite_module.o
OBJECTS += $(OBJDIR)/subprocess.o
OBJECTS += $(OBJDIR)/strutil.o
OBJECTS += $(OBJDIR)/pathlib.o
OBJECTS += $(OBJDIR)/pexpect.o
OBJECTS += $(OBJDIR)/tls.o
OBJECTS += $(OBJDIR)/udp_module.o
OBJECTS += $(OBJDIR)/jinja.o
OBJECTS += $(OBJDIR)/stream.o
OBJECTS += $(OBJDIR)/strscpy.o
OBJECTS += $(OBJDIR)/sysinfo-loadavg.o
@@ -166,6 +168,7 @@ OBJECTS += $(OBJDIR)/uv-common.o
OBJECTS += $(OBJDIR)/uv-data-getter-setters.o
OBJECTS += $(OBJDIR)/version.o
OBJECTS += $(OBJDIR)/vm.o
OBJECTS += $(OBJDIR)/profile.o
OBJECTS += $(OBJDIR)/wren_compiler.o
OBJECTS += $(OBJDIR)/wren_core.o
OBJECTS += $(OBJDIR)/wren_debug.o
@@ -383,6 +386,9 @@ $(OBJDIR)/path.o: ../../src/cli/path.c
$(OBJDIR)/vm.o: ../../src/cli/vm.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/profile.o: ../../src/cli/profile.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/base64.o: ../../src/module/base64.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
@@ -455,12 +461,18 @@ $(OBJDIR)/strutil.o: ../../src/module/strutil.c
$(OBJDIR)/pathlib.o: ../../src/module/pathlib.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/pexpect.o: ../../src/module/pexpect.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/tls.o: ../../src/module/tls.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/udp_module.o: ../../src/module/udp.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/jinja.o: ../../src/module/jinja.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
-include $(OBJECTS:%.o=%.d)
ifneq (,$(PCH))