Commit graph

86 commits

Author SHA1 Message Date
Brendan Hansknecht
457725e87f
fix end offset of fromUtf8Range 2023-03-28 18:53:47 -07:00
Brendan Hansknecht
ce29c7e92f
fix bugs from recent changes and additions 2023-03-16 12:12:27 -07:00
Brendan Hansknecht
48f17a8e2c
add Str.releaseExcessCapacity 2023-03-15 15:24:59 -07:00
Brendan Hansknecht
b8e42b05a2
misc cleanup 2023-03-15 13:25:45 -07:00
Brendan Hansknecht
19039ea5bd
fix edge cases 2023-03-15 13:25:44 -07:00
Brendan Hansknecht
70eef9141f
port string functions to seamless slices 2023-03-15 13:25:40 -07:00
Brendan Hansknecht
3978059aa2
add seamless slices for str 2023-03-15 13:23:34 -07:00
Brendan Hansknecht
0f708d7577
fix accessing bug 2023-03-15 10:06:31 -07:00
Brendan Hansknecht
88a69a23a8
fix type to work on 32bit platforms 2023-03-15 10:06:31 -07:00
Brendan Hansknecht
7f3c67ade9
use isValidUnicode in fromUtf8 to make it faster. Also fix off by one bug. 2023-03-15 10:06:31 -07:00
Brendan Hansknecht
f6677f3c1f
Add a fast path for validating ASCII charcters
From my quick testing using the code for testing this function in zig standard lib:

small ascii:     2.2x
small unicode:   0.9x
medium ascii:    15x
medium unicode:  1.01x
medium mix:      3.25x
large ascii:     32.8x
large unicode:   1.03x
large mixed:     3.35x

small being less than 8 bytes.
large being roughly greater than 512 bytes.
2023-03-15 10:06:31 -07:00
Brendan Hansknecht
dfb748fb03
misc cleanup + change refcount pointer to avoid branching 2023-03-13 14:08:24 -07:00
Brendan Hansknecht
216fd3f9f6
Update typo in comment
Co-authored-by: Richard Feldman <oss@rtfeldman.com>
Signed-off-by: Brendan Hansknecht <Brendan.Hansknecht@gmail.com>
2023-03-13 14:08:24 -07:00
Brendan Hansknecht
f96a63c1d4
correct case for zig naming 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
146dff5446
add llvm refcounting and fix memory leak 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
7a927b6192
Port fromUtf8 to fromUtf8Range
All roc file calls already use fromUtf8Range.
Removed the duplicate function for simplicity.
Inlining should lead to generating the same code.
2023-03-13 14:08:23 -07:00
Brendan Hansknecht
4ced1bcfdd
add baseline of seamless slices 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
e32c5f6514
standardize on decref instead of deinit for name 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
440c0518f1
Change list.deinit to take alignment directly
In doing so remove the many class directly to utils.decref
2023-03-13 14:08:22 -07:00
Brendan Hansknecht
0aa932d014
fix mem leak in Str.trim and make all Str.trim* functions consistent 2023-03-02 22:18:26 -08:00
Richard Feldman
b5caddcb77
Merge pull request #4973 from roc-lang/fix-string-split
fix string split on overlapping delimiters
2023-01-27 19:34:07 -05:00
Folkert
d52c037cba
fix string split on overlapping delimiters 2023-01-27 17:35:10 +01:00
Folkert
a77f137a9d
fix bug in Str.trim 2023-01-26 22:52:14 +01:00
Folkert
4e5b106f98
use capacity instead of length in list deinit 2023-01-20 21:44:41 +01:00
Folkert
165d4b3450
fix memory leak in string trimming 2023-01-19 14:35:38 +01:00
Folkert
148d24662e
use capacity instead of length in decref 2023-01-08 22:01:35 +01:00
Folkert de Vries
3682e7db6c
Merge pull request #4796 from roc-lang/str-rc-fixes
fix missing decref in split and concat
2022-12-22 12:00:53 +01:00
Folkert
1481aea40c
fix missing decref in split and concat 2022-12-22 01:08:31 +01:00
Folkert
6c7d434f81
fix lifetime issue in RocStr.asU8Ptr 2022-12-21 01:43:38 +01:00
Travis Staloch
c2dbed2ff5
str-graphemes: rework and add some zig tests
- rework strGraphemes() to use a mutable slice and keep track of just
`last_codepoint_len`.
- add zig tests for empty string, ascii, utf8, ascii+utf8+emoji
2022-10-22 19:29:49 -07:00
Prajwal S N
df7e4eea7e
builtin(str): implement Str.graphemes
Signed-off-by: Prajwal S N <prajwalnadig21@gmail.com>
2022-10-22 19:29:49 -07:00
Brendan Hansknecht
e551e59c1c
refactor string reallocation 2022-10-11 07:56:34 -07:00
Brendan Hansknecht
96b5d365b2
Add capacity growth to RocStr
Also, cleans up the alloc and realloc api for both list and str.
Updates Str.reserve to match List.reserve
2022-10-10 22:24:55 -07:00
Prajwal S N
9013e4ce11
builtin(str): implement withCapacity
Signed-off-by: Prajwal S N <prajwalnadig21@gmail.com>
2022-10-08 00:24:46 +05:30
Folkert
9106479d07
access out of bounds in string split 2022-09-28 15:17:07 +02:00
Brian Carroll
0423e5650f
builtins: remove some redundant small string checks in strToBytes 2022-09-04 14:37:42 +01:00
Brian Carroll
32b815847e
builtins: Remove old incorrect comment about isSmallStr and add a test to make sure 2022-09-04 14:37:42 +01:00
Folkert
1bfac155ca
implement expect struct reporting 2022-07-28 16:47:02 +02:00
Folkert de Vries
66365fba6e
Merge pull request #3649 from rtfeldman/3640-str-split-edge-case
Fix `Str.split` edge case when string and delimiter are equal
2022-07-28 11:30:40 +02:00
raleng
c7997c7c38
Fix formatting 2022-07-28 01:57:01 +02:00
raleng
17fc1a297c
Fix Str.split when string equals delimiter
countSegments and strSplitHelp check whether the length of the string is
strictly greater-than the length of the delimiter, skipping most of the
logic when this is not the case.

Changing the check to a greater-than-or-equal allows for the case when
the string and the delimiter are equal, giving the expected result of
["", ""].
2022-07-28 01:36:02 +02:00
raleng
71e83746cc
add countSegments test case
The test ensures countSegments returns a count of two when the string
and the delimiter are equal. The expected result of Str.split in that
case is ["", ""].
2022-07-28 01:35:08 +02:00
raleng
261ff3224d
Add strSplitHelp test cases
Add a test for the case when the string starts with the delimiter, and
when the string and the delimiter are equal.
2022-07-28 01:34:20 +02:00
Folkert
8e5b0daa94
figured out how to serialize nested structures 2022-07-27 23:52:11 +02:00
Folkert
e62a0ee39a
make string clone return where next extra bytes should be written 2022-07-27 22:48:41 +02:00
Folkert
6d0e751999
fix bug in expect handling on the cli side 2022-07-25 22:37:36 +02:00
Folkert
012c6a75d1
simplify RocStr to array in zig 2022-07-24 11:50:28 +02:00
Folkert
ab3a431db7
add string cloning helper 2022-07-23 00:08:01 +02:00
Richard Feldman
7e446d1b0d
Eliminate @memcpy from Str.trim functions 2022-07-18 10:28:53 -04:00
Richard Feldman
da7c7ac5f2
Merge pull request #3525 from rtfeldman/3522
Num.toStr for f32, f64, Dec
2022-07-13 21:30:05 -04:00