416 Commits
Author SHA1 Message Date
Guillem L. Jara 4e9ef8405c chore(interpreter): remove Arg/Place duplication 2026-09-06 19:07:56 +02:00
Guillem L. Jara 20d55ab114 chore(tests): add NF-related tests 2026-09-06 19:07:48 +02:00
Guillem L. Jara a9acaf1c12 fix(interpreter): trap NF, FS, ...; refactor field splitting
Removes synchronization of `NF` and brings machinery to trigger side-effects of built-in variables. The `Place`/`Arg` methods have become a bit spaghetti tho.
2026-09-06 18:16:55 +02:00
Guillem L. Jara 6360df6c21 chore(tests): add tests for atom eager typedness set 2026-09-03 20:52:07 +02:00
Guillem L. Jara a1bfc0fd3c fix(interpreter): eagerly set scalar context in atom lowering
Previously, this code would succeed, but gawk rejects it:
```awk
function f(x) { return a }
BEGIN { a[f(a)] = 1; }
```
2026-09-03 20:39:01 +02:00
Guillem L. Jara 97e4fd8f40 perf(interpreter): add variadic concat instr for great good
This applies for `n > 2`. In synthetic benchmarks, this about as performant for `n = 3`, and for all `n > 3`, the time gets literally halved w.r.t. the original for every few elements.
2026-09-03 19:15:32 +02:00
Guillem L. Jara c21c6c4c3f chore(parser): inline SpanExt impl 2026-09-03 17:37:24 +02:00
Guillem L. Jara f123ada9f5 chore(tests): add various FS split tests 2026-09-03 16:31:41 +02:00
Guillem L. Jara 8fdcfcbe38 fix(interpreter): properly coalesce whitespaces in FS=" " 2026-09-03 16:30:43 +02:00
Guillem L. Jara 98c97bff6c fix(interpreter): treat null regex matches like GNU 2026-09-03 15:55:27 +02:00
Guillem L. Jara ace1a9ef31 feat(interpreter): add missing FS split modes, FPAT splitting 2026-09-03 15:55:27 +02:00
renovate[bot] 4b3cfa6fb3 chore(deps): update rust crate smallvec to v1.16.0 2026-09-01 23:07:52 +02:00
Guillem L. Jara 58b38a157f fix(parser): correctly concat on non-juxtaposed unary user call 2026-09-01 19:18:57 +02:00
Guillem L. Jara 832180e6e0 chore(parser): coverage for parser differential in function calls 2026-09-01 19:18:34 +02:00
Guillem L. Jara b69ebf1e11 chore(parser): improve function call tests 2026-09-01 18:07:57 +02:00
Guillem L. Jara 317baa0c50 fix(parser): accept non-juxtaposed built-in calls 2026-09-01 18:04:29 +02:00
Guillem L. Jara fce7f0480f fix(lexer): identify awk-namespaced built-in vars as such 2026-09-01 17:47:57 +02:00
Guillem L. Jara c0b4e807fe feat: add missing magic variables 2026-09-01 17:42:41 +02:00
Guillem L. Jara c6eefcec84 feat(interpreter): resolve muggle built-in variables 2026-09-01 17:21:33 +02:00
Guillem L. Jara 48a10d1bf5 chore(interpreter): add some doc comments 2026-09-01 16:02:54 +02:00
Guillem L. Jara 67c2bdfb46 feat(interpreter): tighten Arg definition, add BuiltInVar
This is in preparation of adding support for built-in var accesses in the VM. Which _should_ be quite trivial now, if not for the magic variables.
2026-09-01 15:51:38 +02:00
renovate[bot] 655a2f2111 chore(deps): update rust crate uutests to 0.11 2026-09-01 15:33:36 +02:00
Guillem L. Jara 51a3ac4fce fix(interpreter): strip terminator from record 2026-08-31 16:56:52 +02:00
Guillem L. Jara f44e3d3711 chore(tests): allow clippy lint 2026-08-31 13:39:58 +02:00
Guillem L. Jara 0a7d18f11f chore(interpreter): more consistent instr naming
Yes, I'm aware it's the bazillionth time I've said this :)
2026-08-31 13:37:44 +02:00