Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Opcode facts in one X-macro table; retire the three opcode-comment gates (#1275)

Đang mở
#1,320 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
28/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
c, shell
Lĩnh vực
compilers, testing-qa

Hướng nghiên cứu

Start by reading src/vm.h, src/chunk.c, and the three gate scripts: tools/obs_marker_check.sh, tools/obs_reader_sync_check.sh, and tools/vm_operand_width_check.sh. Trace the opcode enum, observer lookup, and verifier role table before assessing the X-macro design. Done means the generated facts replace the duplicated checks, bytecode remains identical, and the full suite, ASan, JIT checks, and calibration plant pass.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:gates area:runtime-vm kind:gate-defect

Split out of #1275 (item 7, "the rest"), as its definition of done requires for rows that need a product-code change.

Problem

Three gate scripts check hand-written opcode comments against the C (1,277 lines together at 94c4c5b). None has a recorded catch of a product bug:

  • tools/obs_marker_check.sh (550): every opcode in src/vm.h has an /*obs:READS|NONE|…*/ marker (#972).
  • tools/obs_reader_sync_check.sh (448): those markers agree with the case OP_…: arms of opcode_is_observer_reader() in src/chunk.c (#915/#972).
  • tools/vm_operand_width_check.sh (279): the [kind:N] operand-width comments in src/vm.h agree with the VM's decoder sites and chunk.c's VR_* verifier table (#958).

Each property lives in two or three homes: a comment, a switch and a table. The scripts only exist to keep those homes in step.

Proposal (structural, principle 5)

One X-macro opcode table, for example src/opcodes.def, with one row per opcode carrying NAME, observer-class, operand roles/widths. The rest is generated from it by the preprocessor:

  • the enum in vm.h;
  • opcode_is_observer_reader() (a lookup of the observer-class column);
  • the verifier's role table.

The per-opcode facts then have one home. The compiler enforces the agreement that the three scripts check today, and they are deleted. What remains is at most a small check that the decoder's read_uN widths match the table's widths (the one fact the preprocessor cannot tie). Measure whether it is needed before keeping it.

Touches the opcode ABI (see the eigenscript-extend-vm skill and the operand-width-is-ABI note): the bytecode and the JIT must be byte-identical before and after.

Done when

  • Opcode name, observer class and operand roles/widths are declared in exactly one table; enum, opcode_is_observer_reader() and the verifier roles are generated from it.
  • tools/obs_marker_check.sh, tools/obs_reader_sync_check.sh and tools/vm_operand_width_check.sh are deleted along with their suite sections and tools/selftests.txt rows, or one survivor is ≤ 150 lines and the PR shows why it is needed.
  • The compiled bytecode is byte-identical before and after on the corpus: --dump, or a hash of every compiled tests/*.eigs chunk, compared old against new.
  • Full suite, ASan-with-leaks and tools/jit_diff.sh are green; make jit-smoke passes.
  • One calibration plant: flipping one opcode's observer class in the table changes opcode_is_observer_reader() and makes the suite's observer section fail. The result is recorded in the PR.
Ngôn ngữ chính
C
Star
3
Fork
7
Merge trung bình
4 giờ 15 phút
Pull request đã merge (30 ngày)
106

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của InauguralSystems/EigenScript

Tất cả issue của InauguralSystems/EigenScript

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.