Skip to content

Commit 89ef391

Browse files
committed
fix 1 bug, auto unreachable noreturn attribute placed post function declarator missed
1 parent d0b7f55 commit 89ef391

File tree

5 files changed

+1288
-4
lines changed

5 files changed

+1288
-4
lines changed

.github/SPEC.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Prism Transpiler Specification
22

33
**Version:** 1.1.0
4-
**Status:** Implemented — every item in this document corresponds to behavior that exists in the codebase and is exercised by the test suite (4929+ tests + self-host stage1==stage2).
4+
**Status:** Implemented — every item in this document corresponds to behavior that exists in the codebase and is exercised by the test suite (5216+ tests + self-host stage1==stage2).
55

66
This document describes what the transpiler **does**, not what it aspires to do. It is organized in two parts: **Part I** covers the transpiler's architecture, internal processing model, and implementation details. **Part II** provides a formal language specification for Prism's extensions to C, described in terms of the C abstract machine independently of any implementation strategy.
77

@@ -15,7 +15,7 @@ Prism is a source-to-source C transpiler. It reads preprocessed C, transforms it
1515

1616
**Standards compatibility:** Prism accepts C99, C11, and C23 input and emits standard C compatible with GCC, Clang, and MSVC. All standard C type specifiers, qualifiers, storage classes, attributes, and control-flow constructs are recognized and passed through correctly. C23 features including `typeof_unqual`, `constexpr`, `auto` type inference, `_BitInt(N)`, `[[...]]` attributes, `alignas`/`alignof`, `static_assert`, fixed-underlying-type enums (`enum E : int { ... }`), labeled declarations, and if/switch initializers are supported. GCC extensions `__typeof_unqual__` and `__typeof_unqual` are recognized as `TT_TYPE | TT_TYPEOF` and handled identically to C23 `typeof_unqual`. C23 TS 18661 extended float types (`_Float16`, `_Float32`, `_Float64`, `_Float128`, `_Float32x`, `_Float64x`, `_Float128x`) and decimal float types (`_Decimal32`, `_Decimal64`, `_Decimal128`) are registered as `TT_TYPE` keywords, ensuring zero-initialization and declaration detection work correctly. GCC-specific float types (`__float128`, `__float80`, `__fp16`, `__bf16`) are similarly registered. Do note Prism IS NOT officially certified in any way.
1717

18-
Note: Prism is thoroughly empirically tested (self-hosting and 4929+ test cases) but **is not formally verified.** It is designed to compile standard-compliant code, but **may not catch every obscure constraint violation** defined by the ISO C standard.
18+
Note: Prism is thoroughly empirically tested (self-hosting and 5216+ test cases) but **is not formally verified.** It is designed to compile standard-compliant code, but **may not catch every obscure constraint violation** defined by the ISO C standard.
1919

2020
The transpiler operates in two passes:
2121

0 commit comments

Comments
 (0)