| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
macOS: a second C3 dylib loaded into a non-C3 host would crash (#3312) * - macOS: a second C3 dylib loaded into a non-C3 host would crash. #3298 A process-global dyld add-image hook walked every loaded image and mutated each one's __c3ctor/__c3dtor/__c3_dynamic tables, assuming a single C3 runtime per process; with two C3 dylibs in one host the second hook walked the first's image and segfaulted. Section pointers were also derived from the file offset instead of vmaddr + slide. Initialise only our own image via __dso_handle (as ELF does with .init_array) and address sections by section.addr + vmaddr_slide. * - Removed unreachable dylib-ctor code in the macOS Mach-O runtime. * - Expanded the dynlib regression test to cover @init, @finalizer and @dynamic. * Add additional printout for the test. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 2 个月前 | |
- `$typeof` => `$Typeof`, `$typefrom` => `$Typefrom`. | 3 个月前 | |
WIP: Add `--target emscripten` (#3052) * initial `--target emscripten` support * stdlib emscripten * linker * emscripten stdlib * add debug info for zip.c3 TODO: clean this * fix tests * emscripten: add standard linker arguments add atomics for wasm * waefawe * more stdlib fixes for emscripten * disable panic for emscripten * fix threads/mutex.c3 test * 4 hours :( * blake3 fix for emscripten * socketpair not supported on emscripten also bypass the unreachable of longjmp for easier testing * use actual date * add an example to `resources/examples/emscripten` bouncing ball * add `entropy` support for EMSCRIPTEN * default emcc linker flags for compiler test and benchmark fix hashmap benchmark * clean debug stuff * update Emscripten ABI mappings and compiler targets * add emscripten node tests * fix Error: Implicitly casting 'int' to 'AIFamily' * hashset/linked_hashset/ripemd/countingsort work on 32bit systems * disable process test because emscripten doesn't support posix_spawnp I see the headers, but i get a symbol not defined :( * stdlib and tests: emscripten 32bit fixes * CI: make emscripten test its own thing * fix raylib6 tests * forgot it's UBUNTU_VERSION=24.04 now * Remove some debug additions and changes. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 4 个月前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
- `set_cursor` is renamed `seek`, and the old `seek` is removed. - `std::math` name changes: `HALF_PI` => `HALF_PI`, `QUARTER_PI` => `QUARTER_PI`, `DIV_PI` => `INV_PI` etc, `cosec` => `csc`, `cotan` => `cot`, `muladd` => `mad` - `std::time` name changes: `diff_hour` => `diff_hours`. `DateTime.set_date` => `DateTime.set`, `datetime::from_date_*` => `datetime::at_*` - `std::hash` method name convention changes: `updatec` / `update_char` => `update_byte`. - `std::string` name changes: `strip` => `strip_prefix`, `strip_end` => `strip_suffix`. | 4 个月前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
chore: codespell + cleanup NSIS Installer CI (#3206) * codespell `codespell -L ArchType,fpr,inout,Synopsys,Fo src/` codespell: lib/std/ `codespell -i3 -L ArchType,Synopsys,nd,inout,re-uses,re-used,re-use,alse,GOST,ans,pendin,numer,indexs,pres lib/` codespell: releasenotes.md codespell: resources/examples/raylib * fix tests * cleanup Windows NSIS Installer build * fix path --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 3 个月前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
std::encoding::xml - XML 1.0 parser and writer based on Yxml (#3154) * std::encoding::xml - XML 1.0 parser and writer based on Yxml based on Yxml <https://dev.yorhel.nl/yxml> Native port of the Yxml C library. Provides a low-level streaming parser and a high-level DOM API. What it DOES NOT do (Limitations): - No DTD/Schema validation. - No custom entity references (only standard &, <, etc.). - No namespace assistance (prefixes are kept in the name). - No XPath or XSLT. - No verification of Unicode ranges (assumes valid input). - No attribute uniqueness checks. API & Implementation: - XmlReader: Low-level streaming parser that works with any InStream. - XmlWriter: XML serializer that integrates with any OutStream. - XmlDocument: High-level DOM API for loading, searching, and modifying XML. - Internal: The `internal::Parser` contains the core ported state-machine from Yxml. Usage Examples: https://github.com/c3lang/c3c/tree/master/resources/examples/xml/ * stdlib styling * `inline int` the constdef `constdef State` now `constdef State : inline int` * constdef to enum and finish allman style * styling * use allocator for parser stack and add stack_size parameter DEFAULT_STACK_SIZE = 4096 per yxml recommendation * changed `Ret` to be a standard c3 enum * cache the Stream function pointers aprox ~15% boost some more refactoring add a little io buffer and inline the state machine * take the type directly from the interface method * Refactorings, fix benchmarks, add releasenotes. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 4 个月前 | |
Implement passing arguments to program via `compile-run` (#1296) | 2 年前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
Deprecate old `void!` @benchmark and @test functions. | 1 年前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
Dev (#859) * Fix bug where analysing subexpr relied on them not being analysed. Fix issue where converting a const initializer bool to integer failed. Fix of issue where the case check assumed other cases were const values. * Fix bug where analysing subexpr relied on them not being analysed. Fix issue where converting a const initializer bool to integer failed. Fix of issue where the case check assumed other cases were const values. Remove PTHREAD for windows. * Fix bug where analysing subexpr relied on them not being analysed. Fix issue where converting a const initializer bool to integer failed. Fix of issue where the case check assumed other cases were const values. Remove PTHREAD for windows. | 3 年前 | |
WIP: Add `--target emscripten` (#3052) * initial `--target emscripten` support * stdlib emscripten * linker * emscripten stdlib * add debug info for zip.c3 TODO: clean this * fix tests * emscripten: add standard linker arguments add atomics for wasm * waefawe * more stdlib fixes for emscripten * disable panic for emscripten * fix threads/mutex.c3 test * 4 hours :( * blake3 fix for emscripten * socketpair not supported on emscripten also bypass the unreachable of longjmp for easier testing * use actual date * add an example to `resources/examples/emscripten` bouncing ball * add `entropy` support for EMSCRIPTEN * default emcc linker flags for compiler test and benchmark fix hashmap benchmark * clean debug stuff * update Emscripten ABI mappings and compiler targets * add emscripten node tests * fix Error: Implicitly casting 'int' to 'AIFamily' * hashset/linked_hashset/ripemd/countingsort work on 32bit systems * disable process test because emscripten doesn't support posix_spawnp I see the headers, but i get a symbol not defined :( * stdlib and tests: emscripten 32bit fixes * CI: make emscripten test its own thing * fix raylib6 tests * forgot it's UBUNTU_VERSION=24.04 now * Remove some debug additions and changes. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 4 个月前 | |
0.5.4: Hash variables accept designated initializers. @safemacro overrides the need for `@` in macro names. Fixes to macro context evaluation. Updated allocator api. Removed install_win_reqs.bat. Deterministic @init for MacOS. Fixed temp memory issue with formatter. Support LLVM 19. Add support to compare bitstructs using == and !=. Support Windows `.def` files. Removed invalid grammar from grammar.y. Support compile time folding of &|^~ for bitstructs. `output` project setting now respected. Fix issue where constants were not properly constant folded. Add temp_push/pop. Aliased declarations caused errors when used in initializers. Fix export output. Fix of const ternary #1118. Fix of $$MODULE in nested macros #1117. Fix debug info on globals. `out` now correctly detects subscript[] use #1116. Lateral implicit imports removed. Default to '.' if no libdir is specified. Improved error messages for `--lib`. Fix raylib snake example. Overzealous local escape check corrected #1127. Improved yacc grammar #1128. `--linker` argument #1067. Fixes to the matrix operations #1130. Added GenericList. | 2 年前 | |
Deprecate `fn void! main() type main functions. | 1 年前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
Updated fopen. ZString.len does not output number of Char32. Add example. | 3 年前 | |
Fix hello world. | 1 年前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
json: add unmarshaling support, clean up DOM parsing, and add benchmarks (#3384) * json: add unmarshaling support, clean up DOM parsing, and add benchmarks - Added `unmarshal` (JSON string to struct) and `@unmarshal_to` (Object* to struct). - Simplified DOM parsing. - Sped up serialization. - Added benchmarks for marshaling, unmarshaling, and DOM parsing. - Updated unit tests. * add serialize_object() and an example on `resources/examples/json_pretty_print.c3` * complete the benchmarks * fixes: fix array bounds, add vector support, and clean up redundancies * Some refactoring. * Rename Indent. Add tests. * continuing work * Some formatting. * Update releasenotes * Refactoring, moving unmarshaling partly to object. Object .is_empty is also .is_map. Improve backwards compatibility. Release memory on failure. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 1 个月前 | |
0.6.0: init_new/init_temp removed. LinkedList API rewritten. List "pop" and "remove" function now return Optionals. RingBuffer API rewritten. Allocator interface changed. Deprecated Allocator, DString and mem functions removed. "identity" functions are now constants for Matrix and Complex numbers. `@default` implementations for interfaces removed. `any*` => `any`, same for interfaces. Emit local/private globals as "private" in LLVM, following C "static". Updated enum syntax. Add support [rgba] properties in vectors. Improved checks of aliased "void". Subarray -> slice. Fix of llvm codegen enum check. Improved alignment handling. Add --output-dir #1155. Removed List/Object append. `GenericList` renamed `AnyList`. Remove unused "unwrap". Fixes to cond. Optimize output in dead branches. Better checking of operator methods. Disallow `any` from implementing dynamic methods. Check for operator mismatch. Remove unnecessary bitfield. Remove numbering in --list* commands Old style enum declaration for params/type, but now the type is optional. Add note on #1086. Allow making distinct types out of "void", "typeid", "anyfault" and faults. Remove system linker build options. "Try" expressions must be simple expressions. Add optimized build to Mac tests. Register int. `assert(false)` only allowed in unused branches or in tests. Compile time failed asserts is a compile time error. Remove current_block_is_target. Bug when assigning an optional from an optional. Remove unused emit_zstring. Simplify phi code. Remove unnecessary unreachable blocks and remove unnecessary current_block NULL assignments. Proper handling of '.' and Win32 '//server' paths. Add "no discard" to expression blocks with a return value. Detect "unsigned >= 0" as errors. Fix issue with distinct void as a member #1147. Improve callstack debug information #1184. Fix issue with absolute output-dir paths. Lambdas were not type checked thoroughly #1185. Fix compilation warning #1187. Request jump table using @jump for switches. Path normalization - fix possible null terminator out of bounds. Improved error messages on inlined macros. Upgrade of mingw in CI. Fix problems using reflection on interface types #1203. Improved debug information on defer. $foreach doesn't create an implicit syntactic scope. Error if `@if` depends on `@if`. Updated Linux stacktrace. Fix of default argument stacktrace. Allow linking libraries directly by file path. Improve inlining warning messages. Added `index_of_char_from`. Compiler crash using enum nameof from different module #1205. Removed unused fields in find_msvc. Use vswhere to find msvc. Update tests for LLVM 19 | 2 年前 | |
Deprecate `fn void! main() type main functions. | 1 年前 | |
Fixes of the Path refactoring | 3 个月前 | |
WIP: Add `--target emscripten` (#3052) * initial `--target emscripten` support * stdlib emscripten * linker * emscripten stdlib * add debug info for zip.c3 TODO: clean this * fix tests * emscripten: add standard linker arguments add atomics for wasm * waefawe * more stdlib fixes for emscripten * disable panic for emscripten * fix threads/mutex.c3 test * 4 hours :( * blake3 fix for emscripten * socketpair not supported on emscripten also bypass the unreachable of longjmp for easier testing * use actual date * add an example to `resources/examples/emscripten` bouncing ball * add `entropy` support for EMSCRIPTEN * default emcc linker flags for compiler test and benchmark fix hashmap benchmark * clean debug stuff * update Emscripten ABI mappings and compiler targets * add emscripten node tests * fix Error: Implicitly casting 'int' to 'AIFamily' * hashset/linked_hashset/ripemd/countingsort work on 32bit systems * disable process test because emscripten doesn't support posix_spawnp I see the headers, but i get a symbol not defined :( * stdlib and tests: emscripten 32bit fixes * CI: make emscripten test its own thing * fix raylib6 tests * forgot it's UBUNTU_VERSION=24.04 now * Remove some debug additions and changes. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com> | 4 个月前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
Tweaks and fixes to Process implementation. | 5 个月前 | |
Add `c-include-dirs` project/manifest setting. (#1338) Set the include directories to be used when compiling C sources. | 2 年前 | |
Separate panic code to builtin_panic. Change to excuse from faultdef from constdef to constset. | 15 天前 | |
Updated contracts. RingBuffer->RingList new implementation `List.remove_unordered_at`. Rename isz -> sz Require explicit uint<->int casts. - PanicFn now takes an `int` for row. - Align literal types with C semantics. - Use value promotion instead of signedness promotion to int. So that small unsigned types promote to int, not uint. Fix longjmp OpenBSD | 4 个月前 | |
0.6.0: init_new/init_temp removed. LinkedList API rewritten. List "pop" and "remove" function now return Optionals. RingBuffer API rewritten. Allocator interface changed. Deprecated Allocator, DString and mem functions removed. "identity" functions are now constants for Matrix and Complex numbers. `@default` implementations for interfaces removed. `any*` => `any`, same for interfaces. Emit local/private globals as "private" in LLVM, following C "static". Updated enum syntax. Add support [rgba] properties in vectors. Improved checks of aliased "void". Subarray -> slice. Fix of llvm codegen enum check. Improved alignment handling. Add --output-dir #1155. Removed List/Object append. `GenericList` renamed `AnyList`. Remove unused "unwrap". Fixes to cond. Optimize output in dead branches. Better checking of operator methods. Disallow `any` from implementing dynamic methods. Check for operator mismatch. Remove unnecessary bitfield. Remove numbering in --list* commands Old style enum declaration for params/type, but now the type is optional. Add note on #1086. Allow making distinct types out of "void", "typeid", "anyfault" and faults. Remove system linker build options. "Try" expressions must be simple expressions. Add optimized build to Mac tests. Register int. `assert(false)` only allowed in unused branches or in tests. Compile time failed asserts is a compile time error. Remove current_block_is_target. Bug when assigning an optional from an optional. Remove unused emit_zstring. Simplify phi code. Remove unnecessary unreachable blocks and remove unnecessary current_block NULL assignments. Proper handling of '.' and Win32 '//server' paths. Add "no discard" to expression blocks with a return value. Detect "unsigned >= 0" as errors. Fix issue with distinct void as a member #1147. Improve callstack debug information #1184. Fix issue with absolute output-dir paths. Lambdas were not type checked thoroughly #1185. Fix compilation warning #1187. Request jump table using @jump for switches. Path normalization - fix possible null terminator out of bounds. Improved error messages on inlined macros. Upgrade of mingw in CI. Fix problems using reflection on interface types #1203. Improved debug information on defer. $foreach doesn't create an implicit syntactic scope. Error if `@if` depends on `@if`. Updated Linux stacktrace. Fix of default argument stacktrace. Allow linking libraries directly by file path. Improve inlining warning messages. Added `index_of_char_from`. Compiler crash using enum nameof from different module #1205. Removed unused fields in find_msvc. Use vswhere to find msvc. Update tests for LLVM 19 | 2 年前 | |
Deprecated '&' macro arguments. | 1 年前 | |
Updated grammar. Removal of elif. Removal of ':' ';' in some ct statements. Empty faults is now an error. Remove "define" for types. Remove "private". Better errors on incorrect bitstruct syntax. Introduction of wildcard type rather than optional wildcard. Removal of scaled vector type. mkdir and rmdir. Disallow define @Foo() = { @inline }. Add handling for @optreturn and change it to @return!. Restrict interface style functions. Updated x64 ABI. stdlib updates to string. Removed deprecated functions. Update how variadics are implemented. Extended error messages. x86 ABI fixes. Shift check fixes. '!' and '?' are flipped. No trailing ',' allowed in functions. Fix to string parsing. Allow `l` suffix. Simplifying flatpath. `any` replaces `variant`, `anyfault` replaces `anyerr`. Allow getting the underlying type of anyfault. De-duplicate string constants. Fix of readme. Extended list. Fix of "(MyEnum)x + 1". Clock and DateTime types. Fixes to array concat. | 3 年前 | |
Rename `def` to `alias`. | 1 年前 | |
Added Wumpus | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 15 天前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 15 天前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 15 天前 | ||
| 1 年前 | ||
| 4 个月前 | ||
| 15 天前 | ||
| 3 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 15 天前 | ||
| 4 个月前 | ||
| 15 天前 | ||
| 5 个月前 | ||
| 2 年前 | ||
| 15 天前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 1 年前 |