Commit graph

905 commits

Author SHA1 Message Date
Marko Mikulicic
5240918cac Implement load_from_bytes
Also helps in some cases with #142, when the BOM is at the beginning of
the file (common), but not in corner case where the BOM is at the start
of a document which is not the first one.

Closes: #155
2024-03-19 15:26:16 +01:00
Jim Turner
c962741719 Add byte a offset to the error message 2024-03-19 15:26:16 +01:00
Jim Turner
03e3047937 Add byte a offset to the error message 2024-03-19 15:26:16 +01:00
larkbyte
e1119bb3bf Replace linked_hash_map with hashlink 2024-03-19 15:26:16 +01:00
larkbyte
54ca9294fa Replace linked_hash_map with hashlink 2024-03-19 15:26:16 +01:00
David Aguilar
ef1a2d1d5c ci: replace travis with github actions 2024-03-19 15:26:16 +01:00
David Aguilar
5951a33317 ci: replace travis with github actions 2024-03-19 15:26:16 +01:00
David Aguilar
07113c6e1c Cargo.toml: enable the Rust 2021 Edition 2024-03-19 15:26:16 +01:00
David Aguilar
77574b4f30 Cargo.toml: enable the Rust 2021 Edition 2024-03-19 15:26:16 +01:00
David Aguilar
99fb843550 Cargo.toml: add myself to the authors list 2024-03-19 15:26:16 +01:00
David Aguilar
5c9350e824 Cargo.toml: add myself to the authors list 2024-03-19 15:26:16 +01:00
David Aguilar
a6c8dfe5b8 Emit multi-line string values as block scalars 2024-03-19 15:26:16 +01:00
David Aguilar
5369a002ba Emit multi-line string values as block scalars 2024-03-19 15:26:16 +01:00
Ethiraric
04e407df91 Update to v0.6. 2024-03-15 20:14:26 +01:00
Ethiraric
e4ae1d0546 Update to v0.6. 2024-03-15 20:14:26 +01:00
Ethiraric
a33d0ffe68 Update to v0.6. 2024-03-15 20:14:26 +01:00
Ethiraric
006cc66b59 Add bench_compare tool. 2024-03-15 18:29:54 +01:00
Ethiraric
dc88910c23 Add bench_compare tool. 2024-03-15 18:29:54 +01:00
Ethiraric
f99a81c3e6 Add bench_compare tool. 2024-03-15 18:29:54 +01:00
Ethiraric
7d824ef88f Prepare for benchmarks. 2024-03-15 17:34:39 +01:00
Ethiraric
6b27316586 Prepare for benchmarks. 2024-03-15 17:34:39 +01:00
Ethiraric
289d16ab4a Prepare for benchmarks. 2024-03-15 17:34:39 +01:00
Ethiraric
f44cb1dd22 Create a deeper YAML in nested.yaml.
This requires heavily reducing the number of nodes since they are on
average more indented. Leaving 5M nodes results in files larger than
1GB.
2024-03-15 12:48:04 +01:00
Ethiraric
98374de883 Create a deeper YAML in nested.yaml.
This requires heavily reducing the number of nodes since they are on
average more indented. Leaving 5M nodes results in files larger than
1GB.
2024-03-15 12:48:04 +01:00
Ethiraric
3db16ce517 Create a deeper YAML in nested.yaml.
This requires heavily reducing the number of nodes since they are on
average more indented. Leaving 5M nodes results in files larger than
1GB.
2024-03-15 12:47:40 +01:00
Ethiraric
0a05d3c0ed Add gen_large_yaml to justfile's before_commit. 2024-03-15 12:42:10 +01:00
Ethiraric
704d30c7a6 Add gen_large_yaml to justfile's before_commit. 2024-03-15 12:42:10 +01:00
Ethiraric
13923cd270 Add gen_large_yaml to justfile's before_commit. 2024-03-15 12:42:10 +01:00
Ethiraric
b7755e119c Remove tools from examples.
Add documentation for those tools, and make it so that `gen_large_yaml`
generates a predetermined set of files instead of outputting to its
standard output.
2024-03-14 19:20:56 +01:00
Ethiraric
e390c88077 Remove tools from examples.
Add documentation for those tools, and make it so that `gen_large_yaml`
generates a predetermined set of files instead of outputting to its
standard output.
2024-03-14 19:20:56 +01:00
Ethiraric
861dfb6497 Remove tools from examples.
Add documentation for those tools, and make it so that `gen_large_yaml`
generates a predetermined set of files instead of outputting to its
standard output.
2024-03-14 19:20:56 +01:00
Ethiraric
3d8a54d384 Add a generator for nested objects. 2024-02-14 00:35:41 +01:00
Ethiraric
6919d6fd02 Add a generator for nested objects. 2024-02-14 00:35:41 +01:00
Ethiraric
765f2bb672 Replace VecDeque with ArrayDeque.
This removes all allocations in the `Scanner` code. The downside is that
the buffer is now stored in the `Scanner` structure, making it 48 bytes
larger. This however makes the code much more performant.
2024-02-13 23:10:32 +01:00
Ethiraric
e7a4f30627 Replace VecDeque with ArrayDeque.
This removes all allocations in the `Scanner` code. The downside is that
the buffer is now stored in the `Scanner` structure, making it 48 bytes
larger. This however makes the code much more performant.
2024-02-13 23:10:32 +01:00
Ethiraric
8a80e547c6 Fix some clippy lints. 2024-02-13 23:10:17 +01:00
Ethiraric
603c3c546f Fix some clippy lints. 2024-02-13 23:10:17 +01:00
Ethiraric
7b431c77d4 Improve comments. 2024-02-08 07:04:38 +01:00
Ethiraric
96b012a021 Improve comments. 2024-02-08 07:04:38 +01:00
Ethiraric
671a498bf4 Minor improvements. 2024-01-31 22:02:53 +01:00
Ethiraric
e93947bcfe Minor improvements. 2024-01-31 22:02:53 +01:00
Ethiraric
5d94b8174d Add big string array bench generation. 2024-01-30 23:11:00 +01:00
Ethiraric
a1285f107a Add big string array bench generation. 2024-01-30 23:11:00 +01:00
Ethiraric
1dcb1eee34 Rename generator tool. 2024-01-30 22:37:32 +01:00
Ethiraric
b3dd1af018 Rename generator tool. 2024-01-30 22:37:32 +01:00
Ethiraric
99fb05c937 Improve scan_plain_scalar readability.
Take whitespace checking out of the innermost loop for performance.
2024-01-25 03:06:18 +01:00
Ethiraric
4fee65f27a Improve scan_plain_scalar readability.
Take whitespace checking out of the innermost loop for performance.
2024-01-25 03:06:18 +01:00
Ethiraric
f535e505a7 Avoid a trip to self.buffer.
`self.buffer` is a `VecDeque<char>`, meaning that characters are stored
on 4B. When reading as we used to do, this means that every 1 byte
character we read was turned into 4 bytes, which was turned into 1 byte
in `String::extend`.

Instead of going through `self.buffer`, use a local `String` to store
the characters before pushing them to `string`.
2024-01-24 23:02:02 +01:00
Ethiraric
28893c4567 Avoid a trip to self.buffer.
`self.buffer` is a `VecDeque<char>`, meaning that characters are stored
on 4B. When reading as we used to do, this means that every 1 byte
character we read was turned into 4 bytes, which was turned into 1 byte
in `String::extend`.

Instead of going through `self.buffer`, use a local `String` to store
the characters before pushing them to `string`.
2024-01-24 23:02:02 +01:00
Ethiraric
cfbf287b3d Buffer block scalar lines.
Instead of doing a loop that goes:
  * fetch from input stream
  * push char into string

Make a loop that fetches characters while they're not a breakz and
_then_ extend the string. This avoids a bunch of reallocations.
2024-01-24 21:45:18 +01:00