| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
- Implicit unsigned <-> signed integer conversions removed. | 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> | 5 个月前 | |
- `$typeof` => `$Typeof`, `$typefrom` => `$Typefrom`. | 4 个月前 | |
- Implicit unsigned <-> signed integer conversions removed. | 4 个月前 | |
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 个月前 | |
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> | 5 个月前 | |
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> | 5 个月前 | |
Benchmark Runner QoL Improvements (#3004) * Benchmark Runner QoL Improvements Fixed merge conflicts of https://github.com/c3lang/c3c/pull/2672 ``` From @NotsoanoNimus: I work with `compile-benchmark` quite often - only fair I help with its upkeep. Slapped this together in a couple hours, because I really need more consistent results and a way to visualize them, and the benchmark runner is a bit of a rat's nest. Changes, in no particular order: * Add a MEDIAN metric to the results * The _mean_ gives us throughput information, but it's too heavily skewed by a set's outliers. * The _median_ gives us an idea of performance expectations with a 50% probability. Put another way, the tested function has performed at or better than the median in 50% of samples taken. * Caveat: a sorted set is required. For high-volume iterations, this can get expensive. * Improve the output units and refactor that into `NanoDuration`, so it can be used elsewhere as desired * Provide some pretty colors, oooooo * Added CSV reporting option to get a resultant data-set * Not the most useful thing, but makes it easy to plug benchmark outputs into other software. Could probably be improved upon. and yeah I'm a boomer who likes CSV, sue me * Restructure the benchmark runtime to be more like the tester runtime * Fixed a divide-by-zero crash when the benchmark iteration count was <100 * Rudimentary command-line options to adjust benchmark options ``` * print standard deviation by default differentiate measure units by color (us, ms, s) * clean leftovers * tweak all benchmarks so each takes ~300ms | 6 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 5 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 6 个月前 |