druid520/nscc
not sucky c compiler.
| git.druid.rocks | index | druid520 | nscc | trunk |
clone:
git://git.druid.rocks/druid520/nscc.git
ssh://git@git.druid.rocks/druid520/nscc.git
writers:
druid520
files:
.gitignore
LICENSE
docs/
makefile
mk.conf
mk/
src/
test/
commits:
2026-09-29 cb340db druid520 MOD: docs/nsc.btft: correct a stale reserved-words claim
2026-09-24 96993c9 druid520 ADD: function pointers -- &f takes a function's address, e(args) calls through a ptr
2026-09-19 7f3442a druid520 MOD: LICENSE: bump to FMC v1.1
2026-09-18 e071a84 druid520 MOD: fix stale index.btft claims, spell out include is not a macro system
2026-09-18 33da56b druid520 MOD: fix while loops never re-checking a &&/|| condition after entry
2026-09-18 5128dee druid520 ADD: include keyword, plus two real linkage bugs it surfaced
2026-09-18 85fdaa4 druid520 MOD: fix two real bugs hit compiling a large hex literal
2026-09-18 06ac147 druid520 ADD: document global variables as their own topic
2026-09-18 ab3e3a0 druid520 MOD: give uninitialized global declarations real storage (.comm)
2026-09-15 b63d7f5 webgit MOD: docs restyle to classic-unix paper theme (matches mp/site).
2026-09-13 086367a Druid520 ADD: license.
2026-09-12 3f7cda3 Druid520 MOD: byte-pack arrays for real buffers -- elements run UPWARD from the array's lowest slot at their real width (i8=1 .. i64/ptr=8), sizeof is N*width, and &buf[i]-&buf[0] is i*width, so an i8 buf[64] is a genuine 64-byte buffer a read() syscall can fill. this fixed two real bugs the change exposed: jtype3's type_initlist copied the element list and dropped its casts (so i8 elements stayed i32), and the array base/direction were wrong (downward from slot0, which only worked for word-spaced structs). structs are unchanged (fields stay word-spaced downward). +t47; 143 tests.
2026-09-12 82d0f8c Druid520 MOD: global arrays never parsed (the [N] suffix was local-decl only) -- now global i32 a[3] = {...} and global const i32 a[3] work; array parameters, const struct fields, and arrays of structs now give clear errors instead of bare parse stops or a cryptic 'expected a field type'. +t46, +3 neg tests; 141 tests.
2026-09-12 3fbbb8a Druid520 MOD: const parameters never parsed -- parse_params rejected CONST before its const handling (tok_starts_type) -- now const ptr p / const i32 n are legal params, and assigning to one is still a const error.
2026-09-12 9907b88 Druid520 MOD: signed<->unsigned is never an implicit conversion in a binding or compound assign either -- i8 x; u8 y = x; now errors (cast explicitly), matching the arithmetic/comparison rule; literals stay exempt (u8 x = 200; fine), and explicit casts do the reinterpretation. +t45, +2 neg tests; 136 tests.