@cella-lang/c 0.1.202610121721 → 0.1.202610130811

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGES.md CHANGED
@@ -4,6 +4,13 @@
4
4
 
5
5
  ## 未發佈
6
6
 
7
+ - 模型比標準嚴的前置條件改由帶 `@[conservative]` 的定義表達:只卡在它們時判決是 **unknown**(`model_stricter`),不是 reject——讀不確定的值(`c.initElemB`、`c.initAtB`、`c.initNB`、`c.memberInitB`)、union 非作用中的成員(`c.uActiveB`)、`qsort` 比較相等的值相同(`c.qsortEqSameB`)、`bsearch` 至多一個相符(`c.bsearchUniqueB`)、對 `"r"` 開的檔案輸出(`c.notReadOnlyB`)、經 `void*` 用對應的有號/無號型別存取(`c.signVariantAccessB`)。翻譯器寫的證明照舊是 `refl`;以下前置條件的形狀改了(定義上相等,雜湊會變):
8
+ - `c.derefOk` 收 `c.readOkB m q = true`(活著且在界內 `cpp.liveB`,而且已初始化);`c.readableB`、`c.readableNB` 拆成「界內」與「已初始化」的 and;`c.scalar`/`c.ptrScalar` 收 `c.memberInitB x = true`;`c.uget` 收 `c.uActiveB ms u k = true`;`c.UncastOk` 收 `c.uncastOkB …`;`c.canWriteB` 是 `isOpenB` 與 `notReadOnlyB` 的 and;`c.qsortOkB`、`c.bsearchOkB` 併入比標準嚴的那一部分。
9
+ - 標準庫的 Int 名字改進 `Int` namespace(`add_int` → `Int.add`、`ltInt` → `Int.blt`、`addIntF` → `Int.addFast`…),套件的原始碼與產生的項都寫完整名稱。對照表見 cella-lang 的變更紀錄。
10
+ - 穩定定義(`docs/stable-defs.json`)的內容雜湊因此改變(引用的名字變了,內容不變):`c.addV`、`c.divV`、`c.mulV`、`c.negV`、`c.remV`、`c.subV`。
11
+ - **不相容**:cpp 的記憶體換成 GArr 表示(見 cpp 的 CHANGES)。`fullPtr m0 k` 的配置編號是 `cpp.gSize (cpp.memArr m0)`;`fullDerefB`、`mallocWritable`、`mallocFreeable` 直接述說 `cpp.derefB`/`cpp.deleteB`。拿掉只在證明裡用的 `derefAfter`、`nthUpd`、`derefAt`、`storeCell`、`writableThenReadable`、`storeCellKeeps`、`blockSame`、`deleteAt`(改用 cpp 的 `storeDerefB`、`storeKeepsWritableB`、`derefNew`、`addAllocBlock`)。
12
+ - **不相容**:cpp 的 `GArr` 換成 trie 表示(見 cpp 的 CHANGES):`c.setAtToCpp` 改述元素的等式(`cpp.elems (…) = cpp.elems (…)`,原本是整個陣列相等);`arrToCpp` 經 `cpp.gFrom` 建。
13
+ - **不相容**:`c.Jump R`(原本 `c.Jump S R`):`goto` 只帶標籤,狀態由 `cpp.ret 值 狀態` 帶(cpp 的 `Flow` 的 `ret` 改成帶狀態)。寫出 `cpp.ret` 期望值的程式要補上狀態。
7
14
  - **不相容**:定理與前置條件改證 `a = b`(原本是路徑 `≡`),同 cpp。名字不變;前置條件照舊寫 `refl` 或具名的洞。`stable-defs.json` 裡雜湊改變的 4 個:`c.ShlOk`、`c.divV`、`c.litV`、`c.remV`。
8
15
  - 標準庫 `int` 的定理改證 `a = b`(cpp 跟著改):用到的定義雜湊可能改變,意思不變。
9
16
  - 標準庫定理名字裡的舊運算名跟著改(`ltNat_refl` → `blt_refl`、`modNatLt` → `modLt`……;規則見 cella-lang 的 CHANGES):套件內的使用處一起改。
package/README.md CHANGED
@@ -88,7 +88,7 @@ def t : c.Mem C := c.store (c.amem r) (c.aptr r) (c.litV C (pos 72) refl) (c.sto
88
88
  Structs are described by their members, `c.mCons "x" (c.ctInt t) (c.mCons "next" c.ctPtr c.mNil)`, and a struct value has type
89
89
  `c.Struct ms`; every scalar member may be uninitialized on its own. `c.initS ms [c.iInt x, …] refl` is an initializer list (missing members
90
90
  are zero), `c.member ms "x" s` / `c.setMember ms "x" v s` access by name, and `c.scalar … refl` reads a member that has been initialized.
91
- In memory, a struct type gets its own `cpp.GMem (c.Struct ms)`: `c.malloc` and `c.free` work for any element type, `c.arrow ms "v" m q` is
91
+ In memory, a struct type gets its own `cpp.GMem (c.Struct ms)`: `c.malloc` and `c.free` work for any element type, `c.arrow ms "v" m q` refl is
92
92
  `q->v`, and `c.arrowSet ms "v" x m q (cpp.storeOk refl)` is `q->v = x` — a `malloc`ed struct is initialized member by member, so this
93
93
  needs no other member to be initialized. Arrays of structs: `c.structArr`; member arrays and strings are handled as values (`c.setElem`,
94
94
  `c.strcpyArr`, `c.strcmpArr`, `c.strcatArr`, `c.strcpyArrMem` / `c.strcpyMemArr` to and from memory, `c.argSArr` for `%s`). A linked list whose every `malloc` may fail is in `tests/t_linked_list.cella`.
package/c.cell CHANGED
Binary file