Commit Graph

375 Commits

Author SHA1 Message Date
Tony Garnock-Jones 70a305458a Avoid some copying 2020-06-17 11:01:44 +02:00
Tony Garnock-Jones 24afca5d32 Avoid expensive setup 2020-06-17 11:01:31 +02:00
Tony Garnock-Jones b1c7fe8c04 Remove unnecessary Cow 2020-06-17 09:35:09 +02:00
Tony Garnock-Jones 046a2ad999 Better varint reader 2020-06-17 04:11:27 +02:00
Tony Garnock-Jones 6cfb474a6f Avoid running the slow benchmark tests during regular testing 2020-06-17 03:05:32 +02:00
Tony Garnock-Jones 89c3171758 Autodelete benches/testdata.bin 2020-06-17 02:42:44 +02:00
Tony Garnock-Jones fefa2af730 Bump rust version 2020-06-17 02:39:31 +02:00
Tony Garnock-Jones f2910eb8d0 Slim down the common case of no annotations 2020-06-17 02:39:01 +02:00
Tony Garnock-Jones 078e8dd4e8 Benchmark large collection of small items 2020-06-17 02:33:45 +02:00
Tony Garnock-Jones e4e6622074 Switch to iter_with_large_drop 2020-06-17 00:13:56 +02:00
Tony Garnock-Jones 21cc7595ae Benchmark various readers for decoding 2020-06-16 17:57:52 +02:00
Tony Garnock-Jones e01f960ddc Benchmarks and test factorization 2020-06-16 17:46:55 +02:00
Tony Garnock-Jones 275d9e73b1 Bump version 2020-06-15 16:04:41 +02:00
Tony Garnock-Jones bffbeb2f6e Smaller Record; also, use u128/i128 when possible 2020-06-15 16:03:19 +02:00
Tony Garnock-Jones 1f4adc5ba6 Oh cool, is_none() exists 2020-06-15 09:58:49 +02:00
Tony Garnock-Jones 83b7513fae Build all targets 2020-06-15 09:57:56 +02:00
Tony Garnock-Jones b9aba35d39 New release 2020-05-29 11:08:33 +02:00
Tony Garnock-Jones eb088aa491 Experimentation with extensibility, such as it is 2020-05-29 11:08:12 +02:00
Tony Garnock-Jones 22b76cb9b6 Consume all sequence items in direct deserialization, matching deserialization from a Value 2020-05-29 11:07:55 +02:00
Tony Garnock-Jones 65b5399dbe Make CompoundBody consumption past end idempotent 2020-05-29 10:58:40 +02:00
Tony Garnock-Jones d1a5389060 Allow f32 and f64 to deserialize into each other 2020-05-29 10:58:00 +02:00
Tony Garnock-Jones c4f90ef86b Remove placeholders from spec and implementations 5/5
Update Racket implementation: remove placeholders; reject zero-length
streamed binary chunks.
2020-05-28 23:23:19 +02:00
Tony Garnock-Jones 83dce41092 Remove placeholders from spec and implementations 4/5
Update Python implementation: remove placeholders; reject zero-length
streamed binary chunks.
2020-05-28 23:23:19 +02:00
Tony Garnock-Jones 0b0709b615 Remove placeholders from spec and implementations 3/5
Update JS implementation: remove placeholders; reject zero-length
streamed binary chunks.
2020-05-28 23:23:19 +02:00
Tony Garnock-Jones b5f4c3a498 Remove placeholders from spec and implementations 2/5
Enormous refactoring in Rust implementation. Direct deserialization.
Zero-copy deserialization in some cases. Much faster.
2020-05-28 23:23:19 +02:00
Tony Garnock-Jones dfc50fcaee Simplify code (and get back up to speed! ~150kHz) by insisting on IOValue for all codec operations 2020-05-26 11:01:33 +02:00
Tony Garnock-Jones c30154e0c8 Improve (!) safety at the expense of speed: 155kHz -> 115kHz :-/ 2020-05-26 09:08:17 +02:00
Tony Garnock-Jones b122d6e2e0 copy_via able to map domains 2020-05-25 20:11:54 +02:00
Tony Garnock-Jones 2d57d0001b Even more error cleanup 2020-05-25 16:21:18 +02:00
Tony Garnock-Jones 450b73a4d2 More error cleanup 2020-05-25 16:12:41 +02:00
Tony Garnock-Jones 3f5e431717 Clean up error situation 2020-05-25 15:40:01 +02:00
Tony Garnock-Jones 1011818be6 Split out general std::io::Error wrapper 2020-05-25 15:34:17 +02:00
Tony Garnock-Jones 94058b5ec2 Simplify again by moving away from excessive internal buffering 2020-05-25 15:29:54 +02:00
Tony Garnock-Jones f07d2e6a5d Simplify and speed up decoding 2020-05-25 15:00:58 +02:00
Tony Garnock-Jones 6ad1707870 First stab at factoring out Reader trait 2020-05-25 13:42:06 +02:00
Tony Garnock-Jones 92463c37d4 Less ownership in preserves::ser::Serializer 2020-05-24 21:17:41 +02:00
Tony Garnock-Jones fdae09b44c Tweak preserves::ser API 2020-05-24 14:40:36 +02:00
Tony Garnock-Jones 67bf47a5c9 Less safe but drastically more efficient raw-value (de)serialization 2020-05-24 13:47:42 +02:00
Tony Garnock-Jones bddb4331aa Direct serialization 2020-05-23 22:33:02 +02:00
Tony Garnock-Jones d29ec9ffc4 Avoid a few small allocations when decoding 2020-05-22 10:38:34 +02:00
Tony Garnock-Jones 316a772fec Change API: as_record() now takes Option<usize> 2020-05-18 16:42:59 +02:00
Tony Garnock-Jones 2a85e53acc Repair mistaken usage of String instead of Symbol 2020-05-18 16:42:34 +02:00
Tony Garnock-Jones af7c523513 Bump versions 2020-05-13 12:58:47 +02:00
Tony Garnock-Jones 8e0ab95d82 Autodetectability of binary vs text; documented test case schema a little 2020-05-13 12:56:13 +02:00
Tony Garnock-Jones d883ad9a75 Move racket implementation one subdirectory deeper, to allow package name inference to work 2020-04-27 21:07:20 +02:00
Tony Garnock-Jones 340f77cc3c Fix Racket package deps 2020-01-17 14:12:50 +01:00
Tony Garnock-Jones 0832b94ce9 Optionally-canonicalizing binary output. 2019-10-24 14:35:34 +01:00
Tony Garnock-Jones 02c02b641f Bump rust version 2019-10-23 22:59:13 +01:00
Tony Garnock-Jones b1ca95c835 Customizable treatment of Domain during encoding 2019-10-23 22:58:36 +01:00
Tony Garnock-Jones 27fb961653 Allow embedding of domain-specific non-Preserves data within a Preserves Value 2019-10-22 22:36:01 +01:00
Tony Garnock-Jones 826fce6203 Bump rust version 2019-10-20 13:57:40 +01:00
Tony Garnock-Jones 91f48d08f9 Clip clip clip 2019-10-20 13:57:10 +01:00
Tony Garnock-Jones 488bfdc59c Fix clippyisms 2019-10-20 13:57:04 +01:00
Tony Garnock-Jones ccc3b5780b Bump rust version 2019-10-19 23:31:22 +01:00
Tony Garnock-Jones 6f03538956 Clippy told me not to implement Hash when deriving PartialEq. Fair enough 2019-10-19 23:31:00 +01:00
Tony Garnock-Jones 84f99fc471 New tests 2019-10-19 23:30:46 +01:00
Tony Garnock-Jones 4b957d8785 Advance index when reading multiple bytes as well as one at a time 2019-10-19 23:26:44 +01:00
Tony Garnock-Jones a00314d108 Refine error API 2019-10-15 20:44:19 +01:00
Tony Garnock-Jones 96679e8bf5 Bump Rust version to 0.2.0 2019-10-12 22:51:36 +01:00
Tony Garnock-Jones c95b000b7b annotations_mut, value_mut for PlainValue 2019-10-12 22:51:25 +01:00
Tony Garnock-Jones 9611c1f977 Delegate most numeric From implementations to the i128 one 2019-10-12 22:36:46 +01:00
Tony Garnock-Jones 623bbd0a71 annotations() returns slice rather than Vec ref 2019-10-12 22:36:18 +01:00
Tony Garnock-Jones 54d1e349b3 AValue -> PlainValue, RcValue and ArcValue 2019-10-12 21:54:20 +01:00
Tony Garnock-Jones f1b37ac9af First tentative step to allowing reuse of Value with direct containment, Rc and Arc 2019-10-12 15:40:35 +01:00
Tony Garnock-Jones da2a6d44d1 Bump patch version 2019-09-20 21:43:18 +01:00
Tony Garnock-Jones f081470b1e panic -> unreachable 2019-09-20 21:43:08 +01:00
Tony Garnock-Jones 72edd1327a From<value::decoder::Error> for std::io::Error 2019-09-20 21:42:45 +01:00
Tony Garnock-Jones 8cdd67f5ba Mutable Read in Decoder 2019-09-20 21:42:09 +01:00
Tony Garnock-Jones 898a5d680d Expose encoder::Error 2019-09-19 21:49:46 +01:00
Tony Garnock-Jones 63cd853ba1 Rc -> Box 2019-09-19 21:35:00 +01:00
Tony Garnock-Jones 116b37a24f Ahhh 2019-09-19 21:34:40 +01:00
Tony Garnock-Jones 9af8ca8e97 More metadata 2019-09-17 11:42:13 +01:00
Tony Garnock-Jones ef3b88147e Codec; implement Rust tests; samples.txt in quasi-canonical serialized order 2019-09-17 11:27:44 +01:00
Tony Garnock-Jones 199ce1fdba invert_map (for placeholder en/decode conversion) 2019-09-17 09:57:44 +01:00
Tony Garnock-Jones 6775868272 Better errors; Symbol wrapper; proper identifier decoding; Test case struct deserialization works 2019-09-17 09:43:03 +01:00
Tony Garnock-Jones a548485b2e Rust serde glue (wip) 2019-09-17 00:58:44 +01:00
Tony Garnock-Jones 2349e80b30 Rust Encoder 2019-09-15 16:16:17 +01:00
Tony Garnock-Jones bec3a10d64 Annotation skipping; text-syntax-like debug printing (plus pretty printing for free!!) 2019-09-15 12:25:23 +01:00
Tony Garnock-Jones 2fc1d42cd7 Bump versions 2019-09-11 14:31:08 +01:00
Tony Garnock-Jones 1be54a2b8f Beginnings of a Rust Preserves decoder 2019-09-09 22:08:26 +01:00
Tony Garnock-Jones 02e0eae396 New test 2019-09-09 21:08:31 +01:00
Tony Garnock-Jones d5cbe90235 Further steps toward learning enough Rust to produce an implementation 2019-09-09 14:46:53 +01:00
Tony Garnock-Jones 9c6deecb55 Bump nyc version 2019-08-31 21:18:21 +01:00
Tony Garnock-Jones 07312954df Bump versions; update metadata 2019-08-31 21:15:59 +01:00
Tony Garnock-Jones 15d14cdafe Common tests for Python impl 2019-08-31 20:52:32 +01:00
Tony Garnock-Jones b2203b6f5b Remove unwanted code 2019-08-31 20:18:23 +01:00
Tony Garnock-Jones 85804a9e6d More specific check for DecodeError 2019-08-31 14:09:21 +01:00
Tony Garnock-Jones 7efce309f6 Add peel(); tweak strip; adjust tests to use accessors and peel 2019-08-31 08:27:07 +01:00
Tony Garnock-Jones e35c237c34 Update Python codec; first round of Python test updates 2019-08-30 22:53:01 +01:00
Tony Garnock-Jones 942fa30d9d Remove almost-duplicate code 2019-08-30 21:55:45 +01:00
Tony Garnock-Jones 64c7de832e SequenceStream not required in tests 2019-08-30 09:21:34 +01:00
Tony Garnock-Jones 04ecbe03e3 js: Update tests, Immutable.js; implement more tests; all tests pass 2019-08-29 21:07:17 +01:00
Tony Garnock-Jones 738a47ce90 WIP 2019-08-26 21:03:32 +01:00
Tony Garnock-Jones 2b74100b2a Some coverage of read/write text syntax 2019-08-26 21:03:19 +01:00
Tony Garnock-Jones aa59846ee9 --atob, --btoa 2019-08-23 22:14:02 +01:00
Tony Garnock-Jones a34a4cd20e Stop reading symbols at @ 2019-08-23 22:09:30 +01:00
Tony Garnock-Jones a817fed40d preserves-tool 2019-08-23 22:05:30 +01:00
Tony Garnock-Jones f09067d719 Allow use of strip-annotations and peel-annotations as identifiers 2019-08-23 22:00:52 +01:00
Tony Garnock-Jones 6f4e06f6b9 Annotation inappropriate for ExpectedPlaceholderMapping 2019-08-23 09:58:30 +01:00
Tony Garnock-Jones a7147fa123 Remove old commented-out code 2019-08-22 21:14:53 +01:00
Tony Garnock-Jones 54b33f5f13 Heuristics for choosing base64 vs ascii-ish binary display 2019-08-22 20:59:37 +01:00
Tony Garnock-Jones 4d73ab6d69 Fix DecodeError runner 2019-08-22 15:31:58 +01:00
Tony Garnock-Jones aac73efd3a DecodeShort, DecodeError 2019-08-22 11:24:51 +01:00
Tony Garnock-Jones 36c5d92b73 Nondeterministic and Streaming tests; fixes 2019-08-22 11:20:58 +01:00
Tony Garnock-Jones adda505f45 Better record support; more test implementations; fixes 2019-08-22 09:57:57 +01:00
Tony Garnock-Jones e90a790963 First real running tests with the new design, and several concomitant fixes and new tests 2019-08-21 22:18:21 +01:00
Tony Garnock-Jones 27ac21bed1 Actually use current-value->placeholder 2019-08-21 21:20:26 +01:00
Tony Garnock-Jones 79af429b58 Fix annotation encoding 2019-08-20 22:34:29 +01:00
Tony Garnock-Jones 6783daa20d Make strip- and peel-annotations more useful with dictionaries 2019-08-20 22:30:44 +01:00
Tony Garnock-Jones e57fe62a48 peel-annotations 2019-08-20 22:30:30 +01:00
Tony Garnock-Jones fa5eaa6e39 Limited-depth strip-annotations 2019-08-20 22:24:24 +01:00
Tony Garnock-Jones 3f0ec34d49 Uniform annotations in syntax mode; WIP update binary codec 2019-08-20 20:44:07 +01:00
Tony Garnock-Jones fd87f07ec0 Quasi-pretty-printed text output (indentation, basically) 2019-08-19 22:48:12 +01:00
Tony Garnock-Jones 1bb7e1862e Fix byte string output for control characters 2019-08-18 17:40:44 +01:00
Tony Garnock-Jones 467da29c56 WIP: write-preserve, preserve->string 2019-08-18 17:34:42 +01:00
Tony Garnock-Jones 9974002cad Read angle-bracket delimited records in the Racket implementation 2019-08-18 13:40:59 +01:00
Christopher Lemmer Webber c9a624839f
recurd7 -> record7 2019-08-15 13:51:24 -04:00
Tony Garnock-Jones 672ee83be0 Begin factoring out test suite for cross-implementation use; begin updating Racket implementation to match (not finished) 2019-08-11 14:37:08 +01:00
Tony Garnock-Jones 2b1e2f2fba TODO note re testing of NaNs 2019-07-10 21:52:29 -04:00
Tony Garnock-Jones 04868a2309 Be explicit about expected type 2019-07-04 05:47:32 -04:00
Tony Garnock-Jones 2c20de2730 Refine Racket Makefile 2019-07-01 21:47:21 +01:00
Tony Garnock-Jones 97cd007bab Remove comment parsing from Racket implementation 2019-07-01 21:47:12 +01:00
Tony Garnock-Jones eadd83d603 Some tests of IEEE754 totalOrder 2019-06-30 23:43:32 +01:00
Tony Garnock-Jones 52cd074767 Update .gitignores 2019-06-30 19:01:43 +01:00
Tony Garnock-Jones 6960046263 Beginnings of Rust implementation 2019-06-29 23:02:27 +01:00
Tony Garnock-Jones 4d4cd6f417 toString for Single/Double 2019-06-24 10:44:58 +01:00
Tony Garnock-Jones 48f8024056 More webpack problems. Everything is called index.js apparently in webpack land 2019-06-14 15:52:54 +01:00
Tony Garnock-Jones 2bf10030c1 Use __filename instead of module.filename because webpack doesn't offer the latter 2019-06-14 15:46:31 +01:00
Tony Garnock-Jones 0e835bc6f9 Make boilerplate less gratuitous 2019-06-14 15:28:16 +01:00
Tony Garnock-Jones a2755a6c9b singletonmodule.js 2019-06-14 12:47:38 +01:00
Tony Garnock-Jones 48b800a7ce Fix RecordConstructorInfo.equals 2019-06-13 23:04:09 +01:00
Tony Garnock-Jones 5ab78e8281 Global symbols 2019-06-13 21:30:15 +01:00
Tony Garnock-Jones c1898ef73f Friendlier record accessors 2019-06-11 22:31:27 +01:00
Tony Garnock-Jones 5d9b03171d Bytes.toString now offers something reprish; fromUtf8 does what toString used to do 2019-06-07 13:14:07 +01:00
Tony Garnock-Jones 65866b9041 Bump version 2019-05-30 14:07:36 +01:00
Tony Garnock-Jones 320cb894f1 Friendlier accessors 2019-05-30 14:06:40 +01:00
Tony Garnock-Jones 0799fd3293 Support detection of short inputs, for e.g. incremental parsing use 2019-03-17 00:52:05 +00:00
Tony Garnock-Jones 1a2ad3201f Bump version 2018-12-08 14:04:52 +00:00
Tony Garnock-Jones d826aa9116 Repair errors that made Bytes (and Bytes.from) non-idempotent 2018-12-08 14:04:13 +00:00
Tony Garnock-Jones b2a9b53b6c Bump python version 2018-11-26 13:25:47 +00:00
Tony Garnock-Jones 870da87350 Record.__getitem__ 2018-11-20 19:48:23 +00:00
Tony Garnock-Jones 1fd763cf56 Bump versions 2018-11-20 14:48:50 +00:00
Tony Garnock-Jones 87deddc879 RecordConstructorInfo for python 2018-11-19 16:55:22 +00:00
Tony Garnock-Jones 594b379a77 Ability to feed JS Decoder 2018-11-19 16:55:14 +00:00
Tony Garnock-Jones 28cf1d37a8 Makefile tweak 2018-11-18 17:00:20 +00:00
Tony Garnock-Jones ecdf123358 Decoder.try_next 2018-11-18 16:59:27 +00:00
Tony Garnock-Jones 10d8eb1b0a Notes on required packages 2018-11-18 16:35:09 +00:00
Tony Garnock-Jones f654280b88 Bump versions 2018-11-18 16:29:01 +00:00
Tony Garnock-Jones 639241c5a6 Fix error in format C decoding 2018-11-18 16:28:21 +00:00
Tony Garnock-Jones c9484ac9ac Float.unwrap 2018-11-16 00:10:45 +00:00
Tony Garnock-Jones 80c55e4f30 Repair error in Decoder.nextbytes 2018-11-15 23:40:48 +00:00
Tony Garnock-Jones ab8acf2154 Bump package.json 2018-11-15 23:18:42 +00:00
Tony Garnock-Jones f0a63fbb4c Many features and fixes discovered while switching Syndicate/js to Record 2018-11-15 23:18:16 +00:00
Tony Garnock-Jones bd08ede47a Bump javascript package version 2018-11-15 13:55:41 +00:00
Tony Garnock-Jones a8519f6ae3 Refactor to use immutable Bytes wrapper around a Uint8Array 2018-11-15 13:53:24 +00:00
Tony Garnock-Jones 9b4b548896 Packaging 2018-11-15 07:23:45 +00:00
Tony Garnock-Jones da10d47d64 Clean target 2018-11-15 06:55:12 +00:00
Tony Garnock-Jones 8854fbff77 Call it experimental, for now 2018-11-13 14:08:55 +00:00
Tony Garnock-Jones 690b07150d Python coverage; update .gitignores to ignore coverage output 2018-11-13 12:38:26 +00:00
Tony Garnock-Jones 23a52719b9 More tests 2018-11-13 12:37:24 +00:00
Tony Garnock-Jones 41ab0cf4ac Tests and many associated repairs to the JavaScript implementation 2018-11-13 12:15:56 +00:00
Tony Garnock-Jones 22e2934845 Print out encoded samples during python tests 2018-11-13 12:15:23 +00:00
Tony Garnock-Jones eb090bea4b Test for encodestream 2018-11-13 10:48:40 +00:00
Tony Garnock-Jones 9762ad4bfb Bring Record toward the needs of Syndicate/js Struct 2018-11-12 22:19:37 +00:00
Tony Garnock-Jones f30b2ae175 Initial JavaScript (node) implementation 2018-11-12 22:05:47 +00:00
Tony Garnock-Jones 97f6c1291b Missing encodestream method 2018-11-12 22:05:09 +00:00
Tony Garnock-Jones 374ab89cd0 Forbid empty string input to string->preserve 2018-11-05 10:27:03 +00:00
Tony Garnock-Jones 50eec6ba8e Further improve error recovery 2018-10-08 21:35:07 +01:00
Tony Garnock-Jones b25a17b148 Improve error recovery 2018-10-08 20:54:06 +01:00
Tony Garnock-Jones 8dc6346c58 Special cases for label[...] and label{...} 2018-10-08 20:53:53 +01:00
Tony Garnock-Jones c02e790f71 Allow dots to lead/fill raw symbols 2018-10-08 19:54:29 +01:00
Tony Garnock-Jones e0834dd2ba test target 2018-09-30 21:07:40 +01:00
Tony Garnock-Jones db5c890e1c Simplify, repair, and regularise embedded binary values in textual syntax 2018-09-29 17:50:57 +01:00
Tony Garnock-Jones 6feb320aad Racket/python infrastructure 2018-09-29 17:37:26 +01:00
Tony Garnock-Jones 83fa396b56 Rearrange repo 2018-09-29 17:27:59 +01:00