self-host TCS compiler GIR and add portable host runtime
This commit is contained in:
parent
3959ae4270
commit
ff29e52a32
33 changed files with 3848 additions and 831 deletions
|
|
@ -6,7 +6,7 @@ COMPILER TCS-COMPILER-STAGE1-0001 {
|
|||
name_zh = "TCS 第一代自举编译器";
|
||||
version = "0.1.0";
|
||||
profile = "HLDP-NP/1";
|
||||
lifecycle = "SOURCE_DEFINED_NOT_YET_EXECUTABLE";
|
||||
lifecycle = "EXECUTABLE_SEMANTIC_FIXED_POINT_PROVEN_HOST_ACCEPTANCE_IN_PROGRESS";
|
||||
bootstrap_seed = "TCS-STAGE0-IGNITION-0001";
|
||||
output = "GIR/1";
|
||||
}
|
||||
|
|
@ -96,7 +96,6 @@ COMPILER TCS-COMPILER-STAGE1-0001 {
|
|||
standard_library_test = "REQUIRED";
|
||||
negative_corpus_test = "REQUIRED";
|
||||
minimum_runnable_module_test = "REQUIRED";
|
||||
current_state = "NOT_PROVEN";
|
||||
current_state = "SH01_TO_SH06_LOCAL_PASS_SH07_TARGET_READBACK_IN_PROGRESS";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -254,10 +254,10 @@ Stage-0 可以由现有宿主语言实现,但只能叫“点火引导”。正
|
|||
```yaml
|
||||
language_tree_unified: DEFINED
|
||||
syntax_and_field_standard: DRAFT_V0_1
|
||||
stage0_parser_compiler: IMPLEMENTATION_ACTIVE
|
||||
gir_module_loader: IMPLEMENTATION_ACTIVE
|
||||
tcs_stage1_compiler: NOT_IMPLEMENTED
|
||||
self_compile_fixed_point: NOT_PROVEN
|
||||
jd_final_native_master: NOT_PROVEN
|
||||
hololake_tcs_runtime_integration: NOT_IMPLEMENTED
|
||||
stage0_parser_compiler: REPLACEABLE_BOOTSTRAP_SEED_PASS
|
||||
gir_module_loader: PORTABLE_MINIMUM_RUNTIME_PASS
|
||||
tcs_stage1_compiler: EXECUTABLE_COMPILER_GIR_PASS
|
||||
self_compile_fixed_point: LOCAL_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS
|
||||
jd_final_native_master: LIVE_READBACK_PASS_100
|
||||
hololake_tcs_runtime_integration: MACOS_STANDALONE_RUNTIME_PASS_SHELL_INTEGRATION_PENDING
|
||||
```
|
||||
|
|
|
|||
33
language/standards/TCS-HOST-ABI-v0.1.hldp
Normal file
33
language/standards/TCS-HOST-ABI-v0.1.hldp
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
schema: tcs.host-abi/v1
|
||||
id: TCS-HOST-ABI-0001
|
||||
version: 0.1.0
|
||||
language_frontend: ONE_TCS_COMPILER
|
||||
machine_ir: GIR_1
|
||||
rule: HOST_BACKENDS_MUST_NOT_CHANGE_TCS_SEMANTICS_AUTHORITY_OR_RECEIPTS
|
||||
targets:
|
||||
- target_id: TCS-HOST-MACOS-AARCH64-0001
|
||||
triple: aarch64-apple-darwin
|
||||
role: HOLOLAKE_HUMAN_AND_PERSONA_LOCAL_NODE
|
||||
- target_id: TCS-HOST-LINUX-X86_64-0001
|
||||
triple: x86_64-unknown-linux-musl
|
||||
role: GUANGHU_OS_LINUX_COMPATIBILITY_SUBSTRATE
|
||||
- target_id: TCS-HOST-WINDOWS-X86_64-0001
|
||||
triple: x86_64-pc-windows-msvc
|
||||
role: HOLOLAKE_WINDOWS_LOCAL_NODE
|
||||
required_host_operations:
|
||||
- EXACT_ROOT_FILE_READ
|
||||
- EXACT_ROOT_ATOMIC_WRITE
|
||||
- SHA256
|
||||
- MONOTONIC_TIMEOUT
|
||||
- TARGET_READBACK
|
||||
forbidden_host_expansion:
|
||||
- INFER_TARGET_FROM_CURRENT_DIRECTORY
|
||||
- INFER_AUTHORITY_FROM_OS_USER
|
||||
- SUBSTITUTE_SHELL_FOR_UNREGISTERED_OPERATION
|
||||
- CHANGE_GIR_SEMANTICS_BY_PLATFORM
|
||||
acceptance:
|
||||
compile_same_tcs_source_to_same_semantic_gir: REQUIRED
|
||||
execute_same_gir_with_equivalent_receipt_state: REQUIRED
|
||||
host_specific_receipt_fields: [target_triple, host_runtime_sha256]
|
||||
cross_target_evidence_required: true
|
||||
current_state: CONTRACT_DEFINED_IMPLEMENTATION_IN_PROGRESS
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
schema: tcs.self-host-standard/v1
|
||||
id: TCS-SELF-HOST-STANDARD-0001
|
||||
version: 0.1.0
|
||||
state: DEFINED_NOT_YET_PASSED
|
||||
state: LOCAL_SELF_HOST_PASS_CROSS_HOST_FINAL_GATE_IN_PROGRESS
|
||||
compiler_source: language/compiler/TCS-COMPILER-STAGE1.tcs
|
||||
gates:
|
||||
- id: SH-01
|
||||
|
|
@ -22,12 +22,19 @@ decision:
|
|||
allowed: [FAIL_0, PASS_100]
|
||||
partial_pass: false
|
||||
current:
|
||||
SH-01: FAIL_0
|
||||
SH-02: FAIL_0
|
||||
SH-03: FAIL_0
|
||||
SH-04: FAIL_0
|
||||
SH-05: FAIL_0
|
||||
SH-06: FAIL_0
|
||||
SH-01: PASS_100
|
||||
SH-02: PASS_100
|
||||
SH-03: PASS_100
|
||||
SH-04: PASS_100
|
||||
SH-05: PASS_100
|
||||
SH-06: PASS_100
|
||||
SH-07: FAIL_0
|
||||
aggregate: FAIL_0
|
||||
|
||||
evidence:
|
||||
compiler_a: build/self-host/compiler-A.gir.json
|
||||
compiler_b: build/self-host/compiler-B.gir.json
|
||||
semantic_fixed_point_field: identity.definition_sha256
|
||||
standard_library: build/self-host/TCS-STDLIB-CORE.module.gir.json
|
||||
runnable_module: build/self-host/ECHO-PACKAGE.module.gir.json
|
||||
stage0_disabled_test: native-runtime/tcs-gir-runtime/tests/stage1_runtime.rs
|
||||
negative_corpus: language/tests/negative/UNREGISTERED-OPERATION.tcs
|
||||
|
|
|
|||
17
language/stdlib/TCS-STDLIB-CORE.tcs
Normal file
17
language/stdlib/TCS-STDLIB-CORE.tcs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
TCS 0.1;
|
||||
|
||||
MODULE TCS-STDLIB-CORE-0001 {
|
||||
header { schema = "tcs.module/v1"; name_zh = "TCS 核心标准库"; name_en = "TCS Core Standard Library"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["TCS-MODULE-ABI-0001", "TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/stdlib/TCS-STDLIB-CORE.tcs"; compatibility = ["GIR/1", "TCS-COMPILER-STAGE1-0001"]; }
|
||||
source { source_id = "HLP-PART-TCS-LANG-0001"; source_uri = "language/stdlib/TCS-STDLIB-CORE.tcs"; source_sha256 = "SELF_AT_COMPILE_TIME"; source_role = "STANDARD_LIBRARY"; }
|
||||
manifest { module_id = "TCS-STDLIB-CORE-0001"; display_name_zh = "TCS 核心标准库"; entry_program_id = "HLP-PROGRAM-ECHO-0001"; entry_source = "language/examples/ECHO-MODULE.tcs"; abi = "GIR/1"; }
|
||||
entry { kind = "REGISTERED_OPERATION_LIBRARY"; id = "TCS-STDLIB-CORE-0001"; }
|
||||
capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256"]; provided = ["CORE.ECHO"]; }
|
||||
authority_ceiling { maximum = "LOCAL_EXACT_RECEIPT_PATH"; network = false; process = false; }
|
||||
resource_ceiling { concurrency = 1; timeout_ms = 1000; memory_limit_bytes = 1048576; }
|
||||
data_scope { read = ["PROGRAM_LITERAL"]; write = ["CALLER_SCOPED_RECEIPT_ROOT"]; }
|
||||
network_scope { allowed = false; domains = []; }
|
||||
install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; }
|
||||
self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; }
|
||||
rollback { action = "RESTORE_PREVIOUS_STANDARD_LIBRARY"; preserve_receipts = true; }
|
||||
projection { display_name_zh = "TCS 核心标准库"; technical_detail_default = false; }
|
||||
}
|
||||
17
language/targets/TCS-HOST-LINUX-X86_64.tcs
Normal file
17
language/targets/TCS-HOST-LINUX-X86_64.tcs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
TCS 0.1;
|
||||
|
||||
MODULE TCS-HOST-LINUX-X86_64-0001 {
|
||||
header { schema = "tcs.module/v1"; name_zh = "TCS Linux 宿主运行核"; name_en = "TCS Linux Host Runtime"; version = "0.1.0"; language = "TCS/0.1"; profile = "TCS-HOST-ABI/0.1"; protocols = ["TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/targets/TCS-HOST-LINUX-X86_64.tcs"; compatibility = ["GIR/1", "x86_64-unknown-linux-musl"]; }
|
||||
source { source_id = "HLP-PART-TCS-HOST-0001"; source_uri = "native-runtime/tcs-gir-runtime"; source_sha256 = "BOUND_AT_BUILD"; source_role = "PORTABLE_HOST_RUNTIME"; }
|
||||
manifest { module_id = "TCS-HOST-LINUX-X86_64-0001"; display_name_zh = "TCS Linux 宿主运行核"; entry_program_id = "TCS-COMPILER-STAGE1-0001"; entry_source = "build/self-host/compiler-B.gir.json"; target_triple = "x86_64-unknown-linux-musl"; }
|
||||
entry { kind = "COMPILER_GIR_RUNTIME"; id = "TCS-COMPILER-STAGE1-0001"; }
|
||||
capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256", "HOST.MONOTONIC_TIME"]; provided = ["TCS.COMPILE", "GIR.RUN"]; }
|
||||
authority_ceiling { maximum = "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE"; network = false; process = false; }
|
||||
resource_ceiling { concurrency = 1; timeout_ms = 30000; memory_limit_bytes = 268435456; }
|
||||
data_scope { read = ["TCS_SOURCE", "COMPILER_GIR", "GIR_INPUT"]; write = ["CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT"]; }
|
||||
network_scope { allowed = false; domains = []; }
|
||||
install { account_scoped = false; registration_is_installation = false; activation_requires_self_test = true; }
|
||||
self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; }
|
||||
rollback { action = "RESTORE_PREVIOUS_HOST_RUNTIME"; preserve_receipts = true; }
|
||||
projection { display_name_zh = "TCS Linux 宿主运行核"; technical_detail_default = false; }
|
||||
}
|
||||
17
language/targets/TCS-HOST-MACOS-AARCH64.tcs
Normal file
17
language/targets/TCS-HOST-MACOS-AARCH64.tcs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
TCS 0.1;
|
||||
|
||||
MODULE TCS-HOST-MACOS-AARCH64-0001 {
|
||||
header { schema = "tcs.module/v1"; name_zh = "TCS macOS 宿主运行核"; name_en = "TCS macOS Host Runtime"; version = "0.1.0"; language = "TCS/0.1"; profile = "TCS-HOST-ABI/0.1"; protocols = ["TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/targets/TCS-HOST-MACOS-AARCH64.tcs"; compatibility = ["GIR/1", "aarch64-apple-darwin"]; }
|
||||
source { source_id = "HLP-PART-TCS-HOST-0001"; source_uri = "native-runtime/tcs-gir-runtime"; source_sha256 = "BOUND_AT_BUILD"; source_role = "PORTABLE_HOST_RUNTIME"; }
|
||||
manifest { module_id = "TCS-HOST-MACOS-AARCH64-0001"; display_name_zh = "TCS macOS 宿主运行核"; entry_program_id = "TCS-COMPILER-STAGE1-0001"; entry_source = "build/self-host/compiler-B.gir.json"; target_triple = "aarch64-apple-darwin"; }
|
||||
entry { kind = "COMPILER_GIR_RUNTIME"; id = "TCS-COMPILER-STAGE1-0001"; }
|
||||
capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256", "HOST.MONOTONIC_TIME"]; provided = ["TCS.COMPILE", "GIR.RUN"]; }
|
||||
authority_ceiling { maximum = "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE"; network = false; process = false; }
|
||||
resource_ceiling { concurrency = 1; timeout_ms = 30000; memory_limit_bytes = 268435456; }
|
||||
data_scope { read = ["TCS_SOURCE", "COMPILER_GIR", "GIR_INPUT"]; write = ["CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT"]; }
|
||||
network_scope { allowed = false; domains = []; }
|
||||
install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; }
|
||||
self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; }
|
||||
rollback { action = "RESTORE_PREVIOUS_HOST_RUNTIME"; preserve_receipts = true; }
|
||||
projection { display_name_zh = "TCS macOS 宿主运行核"; technical_detail_default = false; }
|
||||
}
|
||||
17
language/targets/TCS-HOST-WINDOWS-X86_64.tcs
Normal file
17
language/targets/TCS-HOST-WINDOWS-X86_64.tcs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
TCS 0.1;
|
||||
|
||||
MODULE TCS-HOST-WINDOWS-X86_64-0001 {
|
||||
header { schema = "tcs.module/v1"; name_zh = "TCS Windows 宿主运行核"; name_en = "TCS Windows Host Runtime"; version = "0.1.0"; language = "TCS/0.1"; profile = "TCS-HOST-ABI/0.1"; protocols = ["TCS-HOST-ABI-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "language/targets/TCS-HOST-WINDOWS-X86_64.tcs"; compatibility = ["GIR/1", "x86_64-pc-windows-msvc"]; }
|
||||
source { source_id = "HLP-PART-TCS-HOST-0001"; source_uri = "native-runtime/tcs-gir-runtime"; source_sha256 = "BOUND_AT_BUILD"; source_role = "PORTABLE_HOST_RUNTIME"; }
|
||||
manifest { module_id = "TCS-HOST-WINDOWS-X86_64-0001"; display_name_zh = "TCS Windows 宿主运行核"; entry_program_id = "TCS-COMPILER-STAGE1-0001"; entry_source = "build/self-host/compiler-B.gir.json"; target_triple = "x86_64-pc-windows-msvc"; }
|
||||
entry { kind = "COMPILER_GIR_RUNTIME"; id = "TCS-COMPILER-STAGE1-0001"; }
|
||||
capabilities { required = ["HOST.EXACT_ROOT_IO", "HOST.SHA256", "HOST.MONOTONIC_TIME"]; provided = ["TCS.COMPILE", "GIR.RUN"]; }
|
||||
authority_ceiling { maximum = "CALLER_PROVIDED_EXACT_ROOT_AND_VALID_LEASE"; network = false; process = false; }
|
||||
resource_ceiling { concurrency = 1; timeout_ms = 30000; memory_limit_bytes = 268435456; }
|
||||
data_scope { read = ["TCS_SOURCE", "COMPILER_GIR", "GIR_INPUT"]; write = ["CALLER_SCOPED_BUILD_AND_RECEIPT_ROOT"]; }
|
||||
network_scope { allowed = false; domains = []; }
|
||||
install { account_scoped = true; registration_is_installation = false; activation_requires_self_test = true; }
|
||||
self_test { program_id = "HLP-PROGRAM-ECHO-0001"; expect = "EXECUTED_TARGET_READBACK_VERIFIED"; }
|
||||
rollback { action = "RESTORE_PREVIOUS_HOST_RUNTIME"; preserve_receipts = true; }
|
||||
projection { display_name_zh = "TCS Windows 宿主运行核"; technical_detail_default = false; }
|
||||
}
|
||||
19
language/tests/negative/UNREGISTERED-OPERATION.tcs
Normal file
19
language/tests/negative/UNREGISTERED-OPERATION.tcs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
TCS 0.1;
|
||||
|
||||
PROGRAM TCS-NEGATIVE-UNREGISTERED-0001 {
|
||||
header { schema = "tcs.program/v1"; name_zh = "未注册操作拒绝样例"; name_en = "Unregistered Operation Rejection"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-NP/1"; protocols = ["GLS-0101"]; lifecycle = "NEGATIVE_TEST"; canonical_uri = "language/tests/negative/UNREGISTERED-OPERATION.tcs"; compatibility = ["TCS-COMPILER-STAGE1-0001"]; }
|
||||
source { source_id = "TCS-NEGATIVE-CORPUS-0001"; source_uri = "language/tests/negative/UNREGISTERED-OPERATION.tcs"; source_sha256 = "SELF_AT_COMPILE_TIME"; source_role = "NEGATIVE_TEST"; }
|
||||
subject { subject_id = "TCS-TEST-RUNNER-0001"; subject_kind = "TEST_RUNTIME"; verification = "LOCAL_TEST_BOUND"; }
|
||||
target { target_id = "TCS-NEGATIVE-TARGET-0001"; target_kind = "TEST_RECEIPT"; exact_path = "./build/negative-should-not-exist.hldp"; expected_state = "ABSENT"; }
|
||||
inputs { MESSAGE { type = "Text"; value = "必须拒绝"; } }
|
||||
outputs { ECHOED { type = "Text"; required = true; } }
|
||||
conditions { C1 { expression = "TARGET_EXACT_AND_WITHIN_ALLOWED_ROOT"; on_false = "FAIL_CLOSED"; } }
|
||||
actions { A1 { operation = "ABSORB"; input_refs = ["MESSAGE"]; output_refs = ["ECHOED"]; on_success = "COMPLETE"; on_failure = "FAIL_CLOSED"; } }
|
||||
authority { mode = "TEST_ONLY"; issuer = "TCS-TEST-RUNNER-0001"; scope = ["WRITE_EXACT_RECEIPT_ONLY"]; one_shot = true; }
|
||||
resources { timeout_ms = 1000; max_actions = 1; memory_limit_bytes = 1048576; }
|
||||
failure { default = "FAIL_CLOSED"; emit_error = true; write_receipt = true; }
|
||||
stop { on_timeout = "STOPPED"; on_authority_loss = "STOPPED"; }
|
||||
cleanup { remove_temporary = true; preserve_receipts = true; }
|
||||
rollback { required = false; actions = []; verification = "NOT_APPLICABLE"; }
|
||||
receipt { schema = "tcs.execution-receipt/v1"; machine_path = "./build/negative-should-not-exist.hldp"; human_projection = "不得生成"; integrity = "SHA256_AND_READBACK"; }
|
||||
}
|
||||
Loading…
Reference in a new issue