Commit graph

61 commits

Author SHA1 Message Date
Nathan Sashihara
725278b2ce Fix Issue 19331 - std.regex.internal.ir.SmallFixedArray.toHash is ignored because it's non-const 2018-10-25 03:22:04 -04:00
Martin Nowak
9fdcf660dd Merge remote-tracking branch 'upstream/stable' into merge_stable
# Conflicts:
#	std/bitmanip.d
2018-04-06 19:39:58 +02:00
Sebastian Wilzbach
42894784dd Markdownify Phobos
$(D word) -> `word`
2018-04-02 22:32:47 +02:00
Dmitry Olshansky
b602b5a3f4 Fix issue 18691 - memory errors in std.regex.Captures
Instead of a messy code that ended up with refcount at the wrong place
provide a clean fixed-size array with required semantics and
build on top of that.
2018-03-29 19:49:51 +03:00
Dmitry Olshansky
4318073f40 Fix issue 18600 Revamp std.regex caching for matchFirst case 2018-03-21 14:53:34 +03:00
Martin Nowak
59520969ef fix Issue 18114 - regex performance regression
- reduce copying of fat structs
- optimize layouts and opAssign of Captures
2018-02-22 16:59:09 +01:00
Martin
3db3dd8899 std.regex: Alignment hotfix
This fixes the unittests for LDC on ARM (with enabled optimizations).

The code used to store a class instance (whose size isn't padded) right
before some buffer, without any padding inbetween. The buffer is thus
susceptible to misalignment; e.g., `BacktrackingMatcher.dupTo()` casts
the buffer from `void[]` to `size_t[]` (in `initExternalMemory()`),
simply assuming an alignment >= `size_t.alignof`, which only holds if
the prepended class instance size is a multiple of that (as `malloc()`
returns a sufficiently aligned block already in this case).
2018-02-15 20:41:59 +01:00
Dmitry Olshansky
881658eabc Faster to import std.regex, by lazy eval of wordMatcher 2017-12-18 17:50:53 +03:00
Dmitry Olshansky
13ea5f9aea Drop another level of templatizations in backtracking 2017-10-11 18:18:12 +03:00
Dmitry Olshansky
41c229647d Need to propagate subCounters
Disable "benchmark" in unittest, it's too volatile
with different compiler flags
Also use GC.addRange/GC.removeRange
2017-10-06 11:20:55 +03:00
Dmitry Olshansky
8bfa66c50a Fix CI complaints 2017-09-28 11:55:43 +03:00
Dmitry Olshansky
c7bdfbe51b std.regex finish the loose ends in the great refactoring 2017-09-28 11:55:43 +03:00
Dmitry Olshansky
639dd3dd6f The new std.regex design is concluded, going through the unitests 2017-09-28 11:55:43 +03:00
Dmitry Olshansky
33d7ecc84c Finalized matcher factory abstraction, with compile-time regex support 2017-09-28 11:55:43 +03:00
Dmitry Olshansky
6e684343d7 WIP - refactoring towards sane std.regex code 2017-09-28 11:55:43 +03:00
Dmitry Olshansky
905788a65a Move unicode set parser out of std.regex
This only does the move without adapting
the interface to the commonly accepted ranges.
2017-08-23 19:17:55 +03:00
Sebastian Wilzbach
2070d867dd Sort multiple packages within one line 2017-06-12 08:18:25 +02:00
Sebastian Wilzbach
61717ecc7d Sort imports 2017-06-12 07:54:38 +02:00
Sebastian Wilzbach
203755d296 Automatically add spaces to binary operators (>>)
command:

sed -E "s/([[:alnum:]]) >> ([[:alnum:]])/\1 >> \2/g" -i **/*.d
sed -E "s/([[:alnum:]])>> ([[:alnum:]])/\1 >> \2/g" -i **/*.d
sed -E "s/([[:alnum:]]) >>([[:alnum:]])/\1 >> \2/g" -i **/*.d
2017-02-23 00:57:47 +01:00
Sebastian Wilzbach
ef7be4b60d Automatically add spaces to binary operators (<<)
command:

sed -E "s/([[:alnum:]]) << ([[:alnum:]])/\1 << \2/g" -i **/*.d
sed -E "s/([[:alnum:]])<< ([[:alnum:]])/\1 << \2/g" -i **/*.d
sed -E "s/([[:alnum:]]) <<([[:alnum:]])/\1 << \2/g" -i **/*.d
2017-02-23 00:57:47 +01:00
Sebastian Wilzbach
425ab667a3 Automatically set the range style from a..b -> a .. b
Commands:

sed -E "s/([[:alnum:]])[.][.]([[:alnum:]])/\1 .. \2/g" -i **/*.d
sed -E "s/([[:alnum:]])[.][.] ([[:alnum:]])/\1 .. \2/g" -i **/*.d
sed -E "s/([[:alnum:]]) [.][.]([[:alnum:]])/\1 .. \2/g" -i **/*.d
2017-02-22 05:37:31 +01:00
Sebastian Wilzbach
805c720595 Unify Phobos by ensuring there's always a space after cast(...)
Command:

sed -E 's/([^"])cast\(([^)]*?)\)([[:alnum:]])/\1cast(\2) \3/g' -i **/*.d
2017-02-21 16:40:20 +01:00
Sebastian Wilzbach
5521541032 Unify assert style to have no spaces between the first brace
Application of:

sed -E "s/assert +\(/assert(/" -i **/*.d
2017-02-21 15:27:15 +01:00
Sebastian Wilzbach
87dec58a41 DStyle: Constraints on declarations should have the same indentation level 2017-02-17 07:36:23 +01:00
Jack Stouffer
5a2491a847 Fix Issue 17161 - Revert all changes to std.regex from 2.072.2 onwards 2017-02-12 12:30:40 -05:00
Sebastian Wilzbach
64217c8965 Style fix: specify/remove local imports 2016-12-08 01:46:47 +01:00
Dmitry Olshansky
f8b3eea065 [std.regex] Addressing review comments 2016-10-09 15:35:32 +03:00
Dmitry Olshansky
e98fa4ad5a [std.regex] Fix issue 9391 - const regex, ctRegex is immutable 2016-10-07 01:40:41 +03:00
Dmitry Olshansky
b94a203b0b [std.regex] Re-style pass 2016-10-01 20:59:12 +03:00
Dmitry Olshansky
ecd33f148c [std.regex] Get Bit-NFA working on the testsuite 2016-10-01 20:59:12 +03:00
Dmitry Olshansky
99095eebfc ASCII-only version of Bit-NFA 2016-10-01 20:59:12 +03:00
Dmitry Olshansky
66048ae334 [Refactor] Generalize kickstart engines, in preparation for more to come 2016-10-01 20:59:12 +03:00
Jack Stouffer
399b4fa842 Fixed package wide std.algorithm imports in std.regex.internal.ir 2016-07-05 00:13:24 -04:00
Jack Stouffer
f9001ae545 Removed package wide std.range import from std.regex.internal.ir 2016-07-04 15:37:30 -04:00
Jack Stouffer
5698ca33cf Fixed local imports in std.regex.internal.ir 2016-07-01 12:27:33 -04:00
Sebastian Wilzbach
1d34a121e9 apply all-man braces in Phobos
// find common cases
sed -E "s/^(\s*)((if|static if|for|foreach|foreach_reverse|while|unittest|switch|else|version).*)\s*\{$/\1\2\n\1{/" -i **/*.d
// catch else-if
sed -E "s/^(\s*)} (else static if| if|else if|else)(.*)\s*\{$/\1}\n\1\2\3\n\1{/" -i **/*.d
// remove created trailing whitespace
sed -i 's/[ \t]*$//' **/*.d
2016-05-31 13:07:53 +02:00
Mathias Lang
7f53fdfec0 Do not rely on the result of a comma expression
Also add `pragma(inline, true)` to ensure this function stays inlined.
2016-05-27 15:54:26 +02:00
Dmitry Olshansky
680f690939 [std.regex] Inline regex flags 2016-04-30 11:39:05 +03:00
Dmitry Olshansky
c1027f1970 Merge pull request #4246 from wilzbach/sed_spaces_part_2
style fix: add space after 'for' operator
2016-04-27 16:17:18 +04:00
Sebastian Wilzbach
d1714c9afb minor style fixes 2016-04-27 04:18:22 +03:00
Sebastian Wilzbach
5a8988c149 style fix: add space after for operator 2016-04-27 02:04:02 +03:00
Sebastian Wilzbach
3d67cd228c style fix: space between operators 2016-04-26 22:26:20 +03:00
Dmitry Olshansky
e6c3320b1f Fix issue 12227 - Allow matching multiple patterns in one go with std.regex 2016-04-15 16:17:36 +03:00
Dmitry Olshansky
cf6152c13f Fix issue 2104 - escape function for regular expressions 2016-04-14 16:54:36 +03:00
Dmitry Olshansky
19778b1c7a address review comments 2016-03-28 12:54:59 +03:00
Dmitry Olshansky
df07aa7dea Special case ASCII to use bit tables insted of 2-level tries 2016-03-27 20:26:49 +03:00
Dmitry Olshansky
0e55583fed Start small - direct dispatch tables 2016-03-27 16:49:44 +03:00
Daniel Murphy
77b06e8c93 Merge pull request #4103 from DmitryOlshansky/bloom-filter
[std.regex] Introduce filtered loops with bloom filters
2016-03-27 05:30:53 +11:00
Dmitry Olshansky
56b90e7f5a Drop "quick" test that never was quick anyway 2016-03-24 18:21:28 +03:00
Dmitry Olshansky
0736e907a4 Allow nextChar to be inlined by DMD
Healthy 2-3% of speedup.
2016-03-23 21:42:08 +03:00