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
Ethiraric
2471c5793a
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
Ethiraric
26ef839cd3
Split skip
into more specific variants.
...
This function is a hotpath and sometimes removing the conditional jump
to detect line breaks saves a bunch of instructions.
2024-01-24 20:20:52 +01:00
Ethiraric
7a51c3dfca
Split skip
into more specific variants.
...
This function is a hotpath and sometimes removing the conditional jump
to detect line breaks saves a bunch of instructions.
2024-01-24 20:20:52 +01:00
Ethiraric
6babe8de60
Doing this leads to worse performance.
2024-01-24 19:42:18 +01:00
Ethiraric
666965ef4f
Doing this leads to worse performance.
2024-01-24 19:42:18 +01:00
Ethiraric
aaa9288842
Pre-load chars in skip_block_scalar_indent
.
2024-01-24 19:31:45 +01:00
Ethiraric
4153a98973
Pre-load chars in skip_block_scalar_indent
.
2024-01-24 19:31:45 +01:00
Ethiraric
2cebf0af1d
Help the compiler inline read_break
.
2024-01-24 17:14:52 +01:00
Ethiraric
980d5b0335
Help the compiler inline read_break
.
2024-01-24 17:14:52 +01:00
Ethiraric
5789169ceb
Remove debug prints code from release builds.
...
If building release mode, remove debug code. Now, the `debug_print!`
macro resolves to nothing in release build.
In debug build, don't check the environment for each print. This has a
huge overhead. The environment is only checked once and next checks are
made against a simple boolean value.
2024-01-24 02:22:02 +01:00
Ethiraric
bcdd725049
Remove debug prints code from release builds.
...
If building release mode, remove debug code. Now, the `debug_print!`
macro resolves to nothing in release build.
In debug build, don't check the environment for each print. This has a
huge overhead. The environment is only checked once and next checks are
made against a simple boolean value.
2024-01-24 02:22:02 +01:00
Ethiraric
1c36ffbc4d
Add justfile
for my pre-commit todo-list.
2024-01-24 01:11:53 +01:00
Ethiraric
3e1ffedb8a
Add license.
2024-04-03 20:06:11 +02:00
Ethiraric
e6fae1c679
Add justfile
for my pre-commit todo-list.
2024-01-24 01:11:53 +01:00
Ethiraric
25644ffa93
Add justfile
for my pre-commit todo-list.
2024-01-24 01:11:53 +01:00
Ethiraric
b4f66c457a
Move char is_xxx
fn to their own file.
2024-01-24 01:02:20 +01:00
Ethiraric
36e8b06e82
Add benchmarking tools.
2024-02-08 08:15:36 +01:00
Ethiraric
06936742f2
Move char is_xxx
fn to their own file.
2024-01-24 01:02:20 +01:00
Ethiraric
ed591e86ca
Add benchmarking tools.
2024-02-08 08:15:36 +01:00
Ethiraric
6e5286c2e1
Use OR for dual licensing.
...
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#adding-metadata-to-a-new-crate
2024-01-23 15:20:12 +01:00
Ethiraric
eed3433841
Update licence, readme, doc.
2024-02-08 07:12:14 +01:00
Ethiraric
ac2d02f65e
Use OR for dual licensing.
...
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#adding-metadata-to-a-new-crate
2024-01-23 15:20:12 +01:00
Ethiraric
2481df7f9d
Update licence, readme, doc.
2024-02-08 07:12:14 +01:00
Ethiraric
68c7afcb4c
Fix null nodes with tags in flow constructs.
2024-01-23 00:19:04 +01:00
Ethiraric
f2d0968a89
Fix null nodes with tags in flow constructs.
2024-01-23 00:19:04 +01:00
Ethiraric
7f7919748a
Fix tag scanning.
2024-01-23 00:19:04 +01:00
Ethiraric
4b37abf2b7
Fix tag scanning.
2024-01-23 00:19:04 +01:00
Ethiraric
76b3773ffd
Fix indent in block scalars.
2024-01-23 00:19:04 +01:00
Ethiraric
84a7d2a0ab
Fix indent in block scalars.
2024-01-23 00:19:04 +01:00
Ethiraric
9f4b1480df
Fix dquote indentation.
2024-01-23 00:19:04 +01:00
Ethiraric
3868b83756
Fix dquote indentation.
2024-01-23 00:19:04 +01:00
Ethiraric
2e94a4217b
Fix dquote string escape sequences.
2024-01-23 00:19:04 +01:00
Ethiraric
36c4f8951e
Fix dquote string escape sequences.
2024-01-23 00:19:04 +01:00
Ethiraric
7145ee8282
Fix tests related to anchor/alias indentation.
...
I have no idea what I'm doing.
2024-01-23 00:19:04 +01:00
Ethiraric
71c54f318f
Fix tests related to anchor/alias indentation.
...
I have no idea what I'm doing.
2024-01-23 00:19:04 +01:00
Ethiraric
9281e35bbb
Fix flow adjacent value with complex key.
2024-01-23 00:19:04 +01:00
Ethiraric
ca7579a3c9
Fix flow adjacent value with complex key.
2024-01-23 00:19:04 +01:00
Ethiraric
7c3e8ed7c4
Lint and improve formatting.
2024-01-23 00:19:04 +01:00
Ethiraric
a34fcac152
Lint and improve formatting.
2024-01-23 00:19:04 +01:00
Ethiraric
5dbd6f9a55
Fix use of dashes in flow contexts.
2024-01-23 00:19:04 +01:00
Ethiraric
ef799af5eb
Fix use of dashes in flow contexts.
2024-01-23 00:19:04 +01:00
Ethiraric
628549085c
Fix block scalar / eof interactions.
2024-01-23 00:19:04 +01:00
Ethiraric
c60099af9b
Fix block scalar / eof interactions.
2024-01-23 00:19:04 +01:00
Ethiraric
c0caeb84e9
Fix block scalars and document end interaction.
2024-01-23 00:19:04 +01:00
Ethiraric
9b653e607b
Fix block scalars and document end interaction.
2024-01-23 00:19:04 +01:00
Ethiraric
ff28b55d22
Fix duplicate version directive.
2024-01-23 00:19:04 +01:00
Ethiraric
308b07bad2
Fix duplicate version directive.
2024-01-23 00:19:04 +01:00
Ethiraric
7b744d092e
Fixes towards implicit document end.
2024-01-23 00:19:04 +01:00