Commit Graph

7744 Commits

Author SHA1 Message Date
gingerBill
b7f585f448 Merge branch 'bill/rexcode' of https://github.com/odin-lang/Odin into bill/rexcode 2026-06-15 13:35:28 +01:00
Flāvius
a4f08f8307 Load rexcode encode/decode tables from committed binary blobs
Each ISA's hand-written ENCODING_TABLE (the single source of truth) now lives
in a per-arch tablegen/ metaprogram that flattens it and serializes committed
binary blobs; the library #loads those into @(rodata) at compile time rather
than compiling a table body. No arch keeps encoding_table.odin or
decoding_tables.odin -- only a generated tables.odin loader and tables/*.bin.

* Two-stage, type-checked pipeline: tablegen Stage A emits human-readable
  generated Odin, which compiles and serializes the blobs in Stage B.
* encode() goes through encoding_forms(m); decoders are unchanged apart from
  x86's flattened 2-D index. Decode tables are byte-identical to the old ones.
* build.lua: a LuaJIT driver for the metaprograms, validations, and tests,
  with cross-platform gating and a clear report.
* Docs refreshed; the obsolete forward-looking plan in cross_arch_design.md
  trimmed to what was actually built.
* Attribution headers added to all rexcode source files; the generators emit
  them so generated files keep them.
2026-06-15 07:43:29 -04:00
gingerBill
75a8639426 Make @(rodata) 2026-06-15 12:22:37 +01:00
gingerBill
ecf9a305ee Add @(require_results) to register procedures 2026-06-14 22:00:37 +01:00
gingerBill
5c9cd0146d Add @(require_results) to operand procedures 2026-06-14 21:57:27 +01:00
gingerBill
611cc807cd Add @(require_results) to instruction procedures 2026-06-14 21:54:24 +01:00
gingerBill
ced500fc94 Add fmt formatting to the Instruction.operands 2026-06-14 21:52:14 +01:00
gingerBill
c8ed0d89ed Alignment fields in the decode entry type for ppc 2026-06-14 21:23:07 +01:00
gingerBill
695dd62b58 Align instruction helpers 2026-06-14 21:01:51 +01:00
gingerBill
15a426c6b3 Minor code style changes 2026-06-14 21:00:38 +01:00
gingerBill
2f0c1457e5 Make x86 decoding tables very uniform and orderly 2026-06-14 20:46:27 +01:00
gingerBill
19bc584a0d Manually format the x86 encoding table 2026-06-14 20:05:10 +01:00
gingerBill
ce3ff285b6 Minor style improvement 2026-06-14 19:50:32 +01:00
gingerBill
efa535eec2 Minor clean up of the mnemonics code 2026-06-14 19:48:02 +01:00
gingerBill
d75624ccbd Add @(require_results) where appropriate to isa 2026-06-14 19:41:05 +01:00
gingerBill
340fb4f697 Clean up x86 decoding tables 2026-06-14 19:39:34 +01:00
gingerBill
2f5d548471 Minimize rsp decoding tables 2026-06-14 19:35:30 +01:00
gingerBill
253c1570d8 Minimize riscv decoding tables 2026-06-14 19:34:16 +01:00
gingerBill
d74693eb0f Minimize ppc_vle decoding tables 2026-06-14 19:32:53 +01:00
gingerBill
dacb5e3a17 Minimize PPC decoding tables 2026-06-14 19:30:42 +01:00
gingerBill
cd4b4e1f36 Minimize mos65816 decoding tables 2026-06-14 19:24:16 +01:00
gingerBill
70e92d2a4d Minimize mos6502 decoder table 2026-06-14 19:23:21 +01:00
gingerBill
c8de23f678 Minimize arm64 decoding table 2026-06-14 19:22:31 +01:00
gingerBill
67dfa25696 Minimize MIPS decode table 2026-06-14 19:22:17 +01:00
gingerBill
176ee8c68d Minimize arm32 decode table size 2026-06-14 19:19:11 +01:00
gingerBill
1adbd0dcb4 Improve formatting for x86 tables and minimize outputting "zero" entries 2026-06-14 19:16:53 +01:00
gingerBill
c49e296f5e Update doc files 2026-06-14 18:24:59 +01:00
gingerBill
a116f69b7e Use core:mem/virtual instead of the posix specific calls 2026-06-14 17:14:14 +01:00
gingerBill
2e58cc51d9 Improve mnemonic_builders for x86 2026-06-14 17:03:19 +01:00
gingerBill
a8d7aedf1e Add rodata where appropriate 2026-06-14 16:50:21 +01:00
gingerBill
d6ae77b67e core:rexcode 2026-06-14 16:30:18 +01:00
Jeroen van Rijn
7d19f3b735 Merge pull request #6463 from ngortheone/bufio_reader_read_doc
doc: use punctuation to disambiguate buifio.reader_read_slice doc
2026-06-13 21:52:11 +02:00
gingerBill
a0e29fca80 Merge pull request #6822 from RainerXE/pool-free-list-aba
core/container/pool: fix ABA race in the free list
2026-06-13 14:03:19 +01:00
TheRadischen
f41b57f1cc fixed type in slice.rotate
sry bll,
i swear im never programming tired again
2026-06-12 21:48:41 +02:00
RainerXE
baf85d78a3 core/container/pool: fix ABA race in the free list 2026-06-12 09:28:14 +02:00
RainerXE
b029cf08aa core/nbio: fix use-after-free of op.l in cross-thread exec 2026-06-11 23:34:20 +02:00
bluziDev
83702108a4 Add control sequences for Alternate Screen Buffer
Adds constants DECASB_ENTER and DECASB_EXIT to ansi.odin. ASB stands for Alternate Screen Buffer. DECASB_ENTER ( ?1049h ) saves the cursor position, clears the alternate buffer, and switches the view to said buffer. DECASB_EXIT ( ?1049l ) restores the main buffer's contents and the cursor position.
Commonly used by editors, games, and TUIs in general to avoid polluting the main buffer.
2026-06-10 23:48:33 -06:00
WP. Yingamphol
d3b7251757 Fix error message: 'do' not on the same line as 'for' 2026-06-07 20:22:12 +07:00
gco
77af26b5c8 fix buffer overflow when running a test which shrinks a dynamic array that was not the last allocation 2026-06-07 11:23:05 +10:00
Laytan Laats
23f57a4328 nbio(posix): fix wake_up error when the event loop hasn't ticked yet 2026-06-05 21:07:36 +02:00
Jeroen van Rijn
213b5e779b Merge pull request #6732 from adihodos/fix-backtrace
Link against libstdc++exp for backtrace support
2026-06-05 16:42:04 +02:00
gingerBill
1c9fa5d0b7 Merge pull request #6731 from odin-lang/bill/expand-values-operator
Support `**` as `expand_values` operator: `**x` == `expand_values(x)`
2026-06-05 11:42:08 +01:00
Jeroen van Rijn
d6f6c476fc Merge pull request #6765 from MightyChubz/fix/linux-inaccurate-meminfo
fix: Get meminfo from `/proc/meminfo` over `sysinfo()`
2026-06-05 09:39:30 +02:00
Alexander Cusaac (MightyChubz)
05f0539960 refactor: Move mem_unit before loop and apply it in switch statement 2026-06-04 13:21:27 -04:00
Alexander Cusaac (MightyChubz)
9942625c63 refactor: Use default_context() over removing "contextless" 2026-06-04 13:17:42 -04:00
Alexander Cusaac (MightyChubz)
c9621748a4 typo
oops
2026-06-03 16:55:51 -04:00
Alexander Cusaac (MightyChubz)
26f824eb8e docs: Updated comment to explain approach more accurately 2026-06-03 16:52:58 -04:00
Alexander Cusaac (MightyChubz)
962f8dfd1b refactor: Add fallback to sysinfo() if /proc/meminfo can't be read
This is likely to never _actually_ execute, and the possibility of this
failing is extremely slim, but if this _does_ fail, then this fallback
should catch it, as long as I'm understanding things correctly. If the
fallback fails, we just go back to the original assert that existed
before.
2026-06-03 16:47:37 -04:00
Alexander Cusaac (MightyChubz)
3d3aa45e02 refactor: Update fallback to just return MemFree 2026-06-03 16:45:06 -04:00
Alexander Cusaac (MightyChubz)
32de482025 docs: Add small comment to explain purpose of approach 2026-06-03 16:44:31 -04:00