mittens 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/ext/mittens/ext.c +68 -30
- data/ext/mittens/extconf.rb +2 -0
- data/lib/mittens/version.rb +1 -1
- data/vendor/snowball/.github/workflows/ci.yml +43 -3
- data/vendor/snowball/.github/workflows/coverage.yml +8 -5
- data/vendor/snowball/GNUmakefile +46 -16
- data/vendor/snowball/NEWS +437 -13
- data/vendor/snowball/README.rst +4 -4
- data/vendor/snowball/algorithms/earlymodernenglish.sbl +301 -0
- data/vendor/snowball/algorithms/french.sbl +1 -1
- data/vendor/snowball/algorithms/ukrainian.sbl +1251 -0
- data/vendor/snowball/compiler/analyser.c +460 -156
- data/vendor/snowball/compiler/driver.c +41 -36
- data/vendor/snowball/compiler/generator.c +24 -1
- data/vendor/snowball/compiler/generator_ada.c +46 -45
- data/vendor/snowball/compiler/generator_c.c +1094 -187
- data/vendor/snowball/compiler/generator_csharp.c +34 -11
- data/vendor/snowball/compiler/generator_dart.c +39 -11
- data/vendor/snowball/compiler/generator_go.c +6 -6
- data/vendor/snowball/compiler/generator_java.c +29 -8
- data/vendor/snowball/compiler/generator_js.c +65 -38
- data/vendor/snowball/compiler/generator_pascal.c +69 -26
- data/vendor/snowball/compiler/generator_php.c +33 -12
- data/vendor/snowball/compiler/generator_python.c +23 -4
- data/vendor/snowball/compiler/generator_rust.c +37 -13
- data/vendor/snowball/compiler/generator_zig.c +6 -6
- data/vendor/snowball/compiler/header.h +85 -14
- data/vendor/snowball/compiler/space.c +67 -38
- data/vendor/snowball/compiler/tokeniser.c +28 -16
- data/vendor/snowball/csharp/Snowball/AssemblyInfo.cs +2 -2
- data/vendor/snowball/csharp/Snowball/Stemmer.cs +1 -4
- data/vendor/snowball/cxx/generate_algorithms.pl +5 -4
- data/vendor/snowball/cxx/{utilities.cxx → snowball_runtime.cxx} +1 -1
- data/vendor/snowball/cxx/stemmer.h +4 -0
- data/vendor/snowball/cxx/stemwords.cxx +36 -6
- data/vendor/snowball/dart/lib/src/snowball.dart +2 -2
- data/vendor/snowball/dart/pubspec.yaml +1 -1
- data/vendor/snowball/doc/libstemmer_c_README +3 -0
- data/vendor/snowball/doc/libstemmer_php_README +1 -1
- data/vendor/snowball/doc/libstemmer_python_README +8 -6
- data/vendor/snowball/examples/stemwords.c +4 -14
- data/vendor/snowball/go/env.go +16 -4
- data/vendor/snowball/include/libstemmer.h +0 -3
- data/vendor/snowball/java/org/tartarus/snowball/SnowballProgram.java +4 -4
- data/vendor/snowball/javascript/base-stemmer.js +27 -40
- data/vendor/snowball/javascript/stemwords.js +34 -10
- data/vendor/snowball/libstemmer/libstemmer_c.in +5 -5
- data/vendor/snowball/libstemmer/mkmodules.pl +5 -3
- data/vendor/snowball/libstemmer/modules.txt +4 -2
- data/vendor/snowball/pascal/SnowballProgram.pas +2 -2
- data/vendor/snowball/php/base-stemmer.php +2 -2
- data/vendor/snowball/python/setup.py +5 -1
- data/vendor/snowball/python/snowballstemmer/basestemmer.py +1 -2
- data/vendor/snowball/runtime/api.c +14 -3
- data/vendor/snowball/runtime/api.h +13 -9
- data/vendor/snowball/runtime/{utilities.c → snowball_runtime.c} +115 -181
- data/vendor/snowball/runtime/snowball_runtime.h +35 -24
- data/vendor/snowball/rust/src/snowball/snowball_env.rs +1 -1
- data/vendor/snowball/tests/compilertest +3 -3
- data/vendor/snowball/tests/runtime/among.sbl +96 -2
- data/vendor/snowball/tests/runtime/attachinsert.sbl +4 -0
- data/vendor/snowball/tests/runtime/debug.out +7 -0
- data/vendor/snowball/tests/runtime/debug.sbl +9 -0
- data/vendor/snowball/tests/runtime/integertests.sbl +22 -0
- data/vendor/snowball/tests/runtime/marklimit.sbl +30 -0
- data/vendor/snowball/tests/runtime/naming.sbl +20 -0
- data/vendor/snowball/tests/runtime/reverse.sbl +11 -0
- data/vendor/snowball/tests/stemtest.c +2 -5
- data/vendor/snowball/tests/syntax/aeslicefrom.sbl +7 -0
- data/vendor/snowball/tests/syntax/canon.sbl +14 -0
- data/vendor/snowball/tests/syntax/canon.syntax +36 -0
- data/vendor/snowball/tests/syntax/inline.syntax +4 -4
- data/vendor/snowball/tests/syntax/localvar.sbl +38 -0
- data/vendor/snowball/tests/syntax/localvar.stderr +3 -0
- data/vendor/snowball/tests/syntax/localvar.syntax +76 -0
- data/vendor/snowball/tests/syntax/unused.sbl +5 -1
- data/vendor/snowball/tests/syntax/unused.stderr +3 -1
- data/vendor/snowball/zig/env.zig +24 -4
- metadata +14 -4
data/vendor/snowball/NEWS
CHANGED
|
@@ -1,3 +1,429 @@
|
|
|
1
|
+
Snowball 3.2.0 (2026-10-17)
|
|
2
|
+
===========================
|
|
3
|
+
|
|
4
|
+
Compiler changes
|
|
5
|
+
----------------
|
|
6
|
+
|
|
7
|
+
* Bug fixes:
|
|
8
|
+
|
|
9
|
+
- Stop rejecting `->` and `=>` inside `reverse`. These operations are
|
|
10
|
+
both safe as they modify a string variable not the working string.
|
|
11
|
+
|
|
12
|
+
- Fix detection of read errors for piped input which were effectively being
|
|
13
|
+
ignored. Bug introduced in 3.1.0.
|
|
14
|
+
|
|
15
|
+
- The coverage counts for among functions were one too low.
|
|
16
|
+
|
|
17
|
+
- Drop use of `restrict` in compiler source as it seems it isn't supported by
|
|
18
|
+
MSVC 2019 and earlier.
|
|
19
|
+
|
|
20
|
+
* Compiler command-line options:
|
|
21
|
+
|
|
22
|
+
- Change how `-coverage` reports among functions. If the string matched we
|
|
23
|
+
used to always report a string match, and additionally either "func-f" or
|
|
24
|
+
"func-t" depending what the function signalled. Now we only report one
|
|
25
|
+
thing - if the string matches but the function signals f we report
|
|
26
|
+
"func-f"; if the string matches and the function signals t we report a
|
|
27
|
+
string match. This gives a report that seems clearer, and requires logging
|
|
28
|
+
and collating less data.
|
|
29
|
+
|
|
30
|
+
* Diagnostics:
|
|
31
|
+
|
|
32
|
+
- Report an "info" diagnostic when we don't localise a variable into a
|
|
33
|
+
recursive routine.
|
|
34
|
+
|
|
35
|
+
- Fix spurious extra output of variable name on a line by itself after
|
|
36
|
+
an "info" diagnostic saying we couldn't localise it.
|
|
37
|
+
|
|
38
|
+
- Routine "not reachable" warnings are now reported at the definition which
|
|
39
|
+
seems a better location than the declaration.
|
|
40
|
+
|
|
41
|
+
* Optimisations:
|
|
42
|
+
|
|
43
|
+
- Grow large symbol strings exponentially, like we already do for byte
|
|
44
|
+
strings.
|
|
45
|
+
|
|
46
|
+
- Eliminate some unnecessary copying when growing strings during compilation.
|
|
47
|
+
|
|
48
|
+
* Code quality:
|
|
49
|
+
|
|
50
|
+
- Fix compiler memory leak when an unreachable routine contains an `among`.
|
|
51
|
+
|
|
52
|
+
Generic code generation changes
|
|
53
|
+
-------------------------------
|
|
54
|
+
|
|
55
|
+
* Optimisations:
|
|
56
|
+
|
|
57
|
+
- Improve variable localisation machinery, and fix some contrived cases
|
|
58
|
+
it was getting wrong. All variables which are only used in one function
|
|
59
|
+
after inlining in the shipped stemmers are now successfully localised.
|
|
60
|
+
|
|
61
|
+
- Extend inlining to all calls to routines which consists of a single
|
|
62
|
+
non-compound Snowball command. The target language code generated for
|
|
63
|
+
such commands should be comparable in size to the target language code
|
|
64
|
+
to call a routine, and inlining may enable other optimisations (variable
|
|
65
|
+
localisation and folding `not` into integer tests, for example).
|
|
66
|
+
|
|
67
|
+
- Inline any non-recursive routine which is only used once (where that use is
|
|
68
|
+
not as an among function). When there's only one use this should if
|
|
69
|
+
anything reduce the code size, and for target languages which don't
|
|
70
|
+
inline themselves it eliminates the overhead of a call. It may also enable
|
|
71
|
+
more variables to be localised.
|
|
72
|
+
|
|
73
|
+
- Normalise comparison with an integer literal so we merge equivalent among
|
|
74
|
+
actions such as this example from arabic.sbl:
|
|
75
|
+
|
|
76
|
+
[substring] among (
|
|
77
|
+
// [...]
|
|
78
|
+
'{a}{n}' '{w}{n}' '{y}{n}' ($(len > 5) delete) // present
|
|
79
|
+
'{t}{m}{a}' ($(len >= 6) delete)
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
- Check for identical amongs and merge their tables. There are several
|
|
83
|
+
instances of this in tamil.sbl.
|
|
84
|
+
|
|
85
|
+
* Code quality:
|
|
86
|
+
|
|
87
|
+
- The Snowball manual says:
|
|
88
|
+
|
|
89
|
+
For any string, the slice ends should be assumed to be unset until
|
|
90
|
+
they are set with the two commands `[` and `]`.
|
|
91
|
+
|
|
92
|
+
For many target languages, we actually initialise the slice ends
|
|
93
|
+
(either because the target language requires doing so, or because the
|
|
94
|
+
author of that generator thought it cleaner to do so, or perhaps just
|
|
95
|
+
followed an existing target language generator which did this).
|
|
96
|
+
|
|
97
|
+
In these situations, what the slice is set to does not matter since the
|
|
98
|
+
Snowball language doesn't define values, so we now simply set both the
|
|
99
|
+
slice start and end to 0 which is slightly simpler than the previous
|
|
100
|
+
setting of the slice end to the length of the string.
|
|
101
|
+
|
|
102
|
+
Ada
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
* Bug fixes:
|
|
106
|
+
|
|
107
|
+
- Generate valid Ada code for a Snowball routine/variable name which contains
|
|
108
|
+
`__`.
|
|
109
|
+
|
|
110
|
+
- Fix code generated for `=>`. We deprecated `=>` in 3.0.0, but ideally we
|
|
111
|
+
should generate code for it which actually compiles, and it was easy to
|
|
112
|
+
fix.
|
|
113
|
+
|
|
114
|
+
* Code quality:
|
|
115
|
+
|
|
116
|
+
- Use consistent case for `Debug()` helper function name.
|
|
117
|
+
|
|
118
|
+
C
|
|
119
|
+
-
|
|
120
|
+
|
|
121
|
+
See also C/C++ section for changes affecting both C and C++.
|
|
122
|
+
|
|
123
|
+
* Optimisations:
|
|
124
|
+
|
|
125
|
+
- We now statically check if errors from a command are possible, and if not
|
|
126
|
+
avoid generating extra code to propagate errors.
|
|
127
|
+
|
|
128
|
+
- Reduce the work done when creating a stemmer. We now memset() the whole
|
|
129
|
+
allocation to zero which also takes care of initialising non-localised
|
|
130
|
+
integer and boolean variables to 0. If there's only one string variable
|
|
131
|
+
we now skip pre-initialising it to NULL before we try to allocate it (this
|
|
132
|
+
preallocation is done to facilitate cleaning up if we fail after partially
|
|
133
|
+
allocating, but with only one string variable this can't happen). We could
|
|
134
|
+
skip this entirely if we know the implementation uses all-zero-bits in
|
|
135
|
+
memory representation for NULL pointers, which all modern platforms seem to
|
|
136
|
+
but the C standard doesn't guarantee. However none of the current stemmers
|
|
137
|
+
use more than one string variable, so we now always avoid the overhead in
|
|
138
|
+
practice.
|
|
139
|
+
|
|
140
|
+
- If an algorithm doesn't have any non-localised Snowball variables, then
|
|
141
|
+
its create_env() will just be `return SN_new_env(sizeof(struct SN_env));`
|
|
142
|
+
so create a common implementation of that (named SN_new_env_no_vars) which
|
|
143
|
+
we #define create_env to in the header. This reduces code size for 31 of
|
|
144
|
+
the 38 stemmers we currently ship.
|
|
145
|
+
|
|
146
|
+
- If an algorithm doesn't use strings then its close_env() only needs to call
|
|
147
|
+
`SN_delete_env()`. Both take the same parameters and return void, so we
|
|
148
|
+
now `#define` the close_env function to `SN_delete_env` in the header which
|
|
149
|
+
reduces code size and eliminates a small runtime overhead for closing a
|
|
150
|
+
stemmer. 35 of the 38 stemmers we currently ship benefit from this.
|
|
151
|
+
|
|
152
|
+
- Use a more sensible initial string size. We were allocating only enough
|
|
153
|
+
space for a single character which meant we'd have to reallocate as soon
|
|
154
|
+
as we stem a word.
|
|
155
|
+
|
|
156
|
+
- Use putc() in debug() helper to write single characters.
|
|
157
|
+
|
|
158
|
+
* Code quality:
|
|
159
|
+
|
|
160
|
+
- Limit generated internal C identifier lengths. C90 only guarantees 31
|
|
161
|
+
significant initial characters in an internal identifier. C99 raised this
|
|
162
|
+
to 63, and modern implementations are likely to have a high limit or not
|
|
163
|
+
impose one, but it is easy to instead generate a short identifier using a
|
|
164
|
+
number when the Snowball name is long.
|
|
165
|
+
|
|
166
|
+
- The code now compiles cleanly with MSVC with warning level `-W3` (which is
|
|
167
|
+
apparently the default warning level when using the IDE).
|
|
168
|
+
|
|
169
|
+
C++
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
See also C/C++ section for changes affecting both C and C++.
|
|
173
|
+
|
|
174
|
+
* Bug fixes:
|
|
175
|
+
|
|
176
|
+
- Generate valid C++ code for a Snowball routine/variable name which contains
|
|
177
|
+
`__`.
|
|
178
|
+
|
|
179
|
+
* Code quality:
|
|
180
|
+
|
|
181
|
+
- Fix location of comment which should be at the start of the generated C++
|
|
182
|
+
stemmer source but was actually after all the generated header includes.
|
|
183
|
+
|
|
184
|
+
* Documentation:
|
|
185
|
+
|
|
186
|
+
- Remove -c from C++ stemwords help. We don't support specifying the
|
|
187
|
+
character set in the C++ version.
|
|
188
|
+
|
|
189
|
+
* Other changes:
|
|
190
|
+
|
|
191
|
+
- Support generating wide-character stemmers which take and return
|
|
192
|
+
std::wstring and work in wchar_t. To use:
|
|
193
|
+
|
|
194
|
+
make SNOWBALL_WIDE=1 clean
|
|
195
|
+
make SNOWBALL_WIDE=1 cxx
|
|
196
|
+
make SNOWBALL_WIDE=1 check_cxx
|
|
197
|
+
|
|
198
|
+
See #267
|
|
199
|
+
|
|
200
|
+
C/C++
|
|
201
|
+
-----
|
|
202
|
+
|
|
203
|
+
* Optimisations:
|
|
204
|
+
|
|
205
|
+
- Snowball `among` is now implemented as a state-machine. This gives a
|
|
206
|
+
better theoretical performance (the new implementation is O(1) in the
|
|
207
|
+
number of cases instead of O(log(n)), and is also faster for the current
|
|
208
|
+
stemmers in benchmarks.
|
|
209
|
+
|
|
210
|
+
The generated among tables are smaller than those for the existing
|
|
211
|
+
implementation.
|
|
212
|
+
|
|
213
|
+
The generated among tables are now just arrays of unsigned short,
|
|
214
|
+
so require no dynamic load-time relocations if Snowball-generated C/C++
|
|
215
|
+
code is included in a shared library.
|
|
216
|
+
|
|
217
|
+
Among gating functions are now called by generated code, which
|
|
218
|
+
means the C/C++ compiler can inline them and optimise better.
|
|
219
|
+
|
|
220
|
+
The Snowball generated code for non-widechars now needs to know the
|
|
221
|
+
endianness of the platform it is being built on. The runtime code
|
|
222
|
+
includes checks that should automatically detect this for GCC, clang and
|
|
223
|
+
MSVC. If the code can't determine the endianness it will #error at
|
|
224
|
+
C/C++ compile-time. In this case, if your platform has the POSIX
|
|
225
|
+
endian.h header then you can define HAVE_ENDIAN_H. Otherwise you'll
|
|
226
|
+
need to define either SNOWBALL_BIGENDIAN or SNOWBALL_LITTLEENDIAN.
|
|
227
|
+
|
|
228
|
+
- We now combine Snowball string literals which are identical to or a
|
|
229
|
+
substring of another literal, or where the end of one literal can be
|
|
230
|
+
overlapped with the start of another. This reduces the size of the
|
|
231
|
+
string data, which should improve CPU cache utilisation. Fixes #262.
|
|
232
|
+
|
|
233
|
+
* Documentation:
|
|
234
|
+
|
|
235
|
+
- libstemmer_c_README: Document that libstemmer aims to support C90.
|
|
236
|
+
|
|
237
|
+
* Other changes:
|
|
238
|
+
|
|
239
|
+
- Flush stdout after each debug() call. The debug command (`?`) is not
|
|
240
|
+
performance sensitive, and it can be confusing if its output is delayed by
|
|
241
|
+
buffering.
|
|
242
|
+
|
|
243
|
+
C#
|
|
244
|
+
--
|
|
245
|
+
|
|
246
|
+
* Other changes:
|
|
247
|
+
|
|
248
|
+
- Support Snowball debug command (`?`).
|
|
249
|
+
|
|
250
|
+
Dart
|
|
251
|
+
----
|
|
252
|
+
|
|
253
|
+
* Other changes:
|
|
254
|
+
|
|
255
|
+
- Support Snowball debug command (`?`).
|
|
256
|
+
|
|
257
|
+
Go
|
|
258
|
+
--
|
|
259
|
+
|
|
260
|
+
* Other changes:
|
|
261
|
+
|
|
262
|
+
- Properly implement Snowball debug command (`?`).
|
|
263
|
+
|
|
264
|
+
Java
|
|
265
|
+
----
|
|
266
|
+
|
|
267
|
+
* Other changes:
|
|
268
|
+
|
|
269
|
+
- Support Snowball debug command (`?`).
|
|
270
|
+
|
|
271
|
+
Javascript
|
|
272
|
+
----------
|
|
273
|
+
|
|
274
|
+
* Code quality:
|
|
275
|
+
|
|
276
|
+
- Improve JSDoc TypeScript annotations. Closes #300, reported by
|
|
277
|
+
alex-kinokon.
|
|
278
|
+
|
|
279
|
+
- Replace most @ts-expect-error annotations with JSDoc cast annotations. A
|
|
280
|
+
cast is better as it is more targetted, and also more self-documenting.
|
|
281
|
+
|
|
282
|
+
* Other changes:
|
|
283
|
+
|
|
284
|
+
- Support Snowball debug command (`?`).
|
|
285
|
+
|
|
286
|
+
Pascal
|
|
287
|
+
------
|
|
288
|
+
|
|
289
|
+
* Other changes:
|
|
290
|
+
|
|
291
|
+
- Support Snowball debug command (`?`).
|
|
292
|
+
|
|
293
|
+
PHP
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
* Code quality:
|
|
297
|
+
|
|
298
|
+
- Emit minimum length Unicode escapes.
|
|
299
|
+
|
|
300
|
+
* Other changes:
|
|
301
|
+
|
|
302
|
+
- Support Snowball debug command (`?`).
|
|
303
|
+
|
|
304
|
+
Python
|
|
305
|
+
------
|
|
306
|
+
|
|
307
|
+
* Documentation:
|
|
308
|
+
|
|
309
|
+
- libstemmer_python_README: Note that Python 3.8 is the oldest version we CI
|
|
310
|
+
test with.
|
|
311
|
+
|
|
312
|
+
- libstemmer_python_README: Fix typo.
|
|
313
|
+
|
|
314
|
+
* Other changes:
|
|
315
|
+
|
|
316
|
+
- Include classifier for pt_BR since we document that our Portuguese stemmer
|
|
317
|
+
"aims to work with both European Portuguese and Brazilian Portuguese".
|
|
318
|
+
|
|
319
|
+
- Support Snowball debug command (`?`).
|
|
320
|
+
|
|
321
|
+
Rust
|
|
322
|
+
----
|
|
323
|
+
|
|
324
|
+
* Code quality:
|
|
325
|
+
|
|
326
|
+
- Emit minimum length Unicode escapes.
|
|
327
|
+
|
|
328
|
+
* Other changes:
|
|
329
|
+
|
|
330
|
+
- Support Snowball debug command (`?`).
|
|
331
|
+
|
|
332
|
+
Zig
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
* Other changes:
|
|
336
|
+
|
|
337
|
+
- Properly implement Snowball debug command (`?`).
|
|
338
|
+
|
|
339
|
+
Snowball Language Changes
|
|
340
|
+
-------------------------
|
|
341
|
+
|
|
342
|
+
* Handle `<-` in an arithmetic expression more gracefully. In this context,
|
|
343
|
+
the symbol `<-` isn't meaningful, so we now interpret it as `<` followed by
|
|
344
|
+
`-`. Examples such as `$x<-1` now parse the same way as `$x < -1` instead
|
|
345
|
+
of giving a syntax error.
|
|
346
|
+
|
|
347
|
+
New stemming algorithms
|
|
348
|
+
-----------------------
|
|
349
|
+
|
|
350
|
+
* Add stemmer for Early Modern English. This is a variant of the English
|
|
351
|
+
stemmer which was previously only described on the website, but seems
|
|
352
|
+
sufficiently useful to include in the distribution. Fixes #261. The merged
|
|
353
|
+
version includes some additional rules:
|
|
354
|
+
|
|
355
|
+
+ Remove th'-, t'-
|
|
356
|
+
+ Replace o'vr- with over-
|
|
357
|
+
+ Replace -e'er with -ever
|
|
358
|
+
+ Remove -edst (suggested by E. Timothy Uy in 2012!)
|
|
359
|
+
+ Remove -'d, -'dly, -'dst, -'st, -'t
|
|
360
|
+
+ Replace -'n, -'nd with -en
|
|
361
|
+
+ Replace -'r, -'rous with -er
|
|
362
|
+
+ Replace -'ri with -eri
|
|
363
|
+
+ Replace -'li with -ili
|
|
364
|
+
+ Replace -lie with -ly
|
|
365
|
+
+ Normalise `æ` and `œ` and long-s. These ligatures appear in texts from
|
|
366
|
+
this era significantly more than in modern English. (Including `œ` here
|
|
367
|
+
means there's not an iso-8859-1 version of this stemmer.)
|
|
368
|
+
|
|
369
|
+
* Add Ukrainian stemmer from Dmitry Prudnikov (#277).
|
|
370
|
+
|
|
371
|
+
Behavioural changes to existing algorithms
|
|
372
|
+
------------------------------------------
|
|
373
|
+
|
|
374
|
+
* French:
|
|
375
|
+
|
|
376
|
+
- Remove z'- which is a colloquial, non-standard elision (for "vous"), and
|
|
377
|
+
also a prefix used to represent a non-standard liaison within a plural noun
|
|
378
|
+
phrase, or eye dialect for a standard liaison.
|
|
379
|
+
https://en.wiktionary.org/wiki/z%27#French
|
|
380
|
+
|
|
381
|
+
Build system
|
|
382
|
+
------------
|
|
383
|
+
|
|
384
|
+
* `make clean_runtime_tests` now first runs `make clean` for smoother switching
|
|
385
|
+
to runtime test mode.
|
|
386
|
+
|
|
387
|
+
* The build system now supports MSVC better. If CC matches `*cl` then it uses
|
|
388
|
+
Microsoft's `LIB` instead of `ar`, and Microsoft's non-standard `-Fo:` and
|
|
389
|
+
`-Fe:` instead of `-o` (which avoids lots of deprecation warnings).
|
|
390
|
+
Extensions `.o` and `.a` are still used (which triggers warnings from MSVC).
|
|
391
|
+
|
|
392
|
+
* C++: Add missing dependency for runtime code.
|
|
393
|
+
|
|
394
|
+
* C/C++: Rename utilities.{c,cxx} to snowball_runtime.{c,cxx} to matches the
|
|
395
|
+
header snowball_runtime.h which contains the prototypes for the external
|
|
396
|
+
functions here.
|
|
397
|
+
|
|
398
|
+
* modules.txt: Fix alphabetical ordering of entries.
|
|
399
|
+
|
|
400
|
+
libstemmer
|
|
401
|
+
----------
|
|
402
|
+
|
|
403
|
+
* Fix incorrect ISO 639-2/B code "pers" for Persian. This should be "per"
|
|
404
|
+
(these codes are all 3 letters long).
|
|
405
|
+
|
|
406
|
+
* Reduce load time relocations in libstemmer by using a suitably sized char[]
|
|
407
|
+
array in struct stemmer_encoding instead of const char*.
|
|
408
|
+
|
|
409
|
+
* Eliminate sentinel NULL entry at end of encodings array. We know the length
|
|
410
|
+
of the encodings list at compile time, so use that to limit iteration.
|
|
411
|
+
|
|
412
|
+
Testsuite
|
|
413
|
+
---------
|
|
414
|
+
|
|
415
|
+
* Expand runtime test coverage. Partly addresses #301.
|
|
416
|
+
|
|
417
|
+
* Add runtime test coverage for `?` (debug command).
|
|
418
|
+
|
|
419
|
+
* Fix compilation errors in stemtest.c, and actually run stemtest. Regression
|
|
420
|
+
introduced in v3.1.0. Fixes #295, reported by Duncan Bellamy.
|
|
421
|
+
|
|
422
|
+
Documentation
|
|
423
|
+
-------------
|
|
424
|
+
|
|
425
|
+
* NEWS: Removed unused subheading in old entry.
|
|
426
|
+
|
|
1
427
|
Snowball 3.1.1 (2026-06-03)
|
|
2
428
|
===========================
|
|
3
429
|
|
|
@@ -49,14 +475,15 @@ Generic code generation changes
|
|
|
49
475
|
`atlimit` is converted `$(cursor >= limit)` or `$(cursor <= limit)`
|
|
50
476
|
(depending on the current direction).
|
|
51
477
|
|
|
52
|
-
+ Canonicalise `delete` to `<-''
|
|
53
|
-
to `delete`, but if we instead
|
|
54
|
-
then the generators can easily
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
are `delete`. (This case
|
|
59
|
-
|
|
478
|
+
+ Canonicalise `delete` to `<-''` (but report as `delete` with `-comments`).
|
|
479
|
+
3.1.0 added a canonicalisation of `<-''` to `delete`, but if we instead
|
|
480
|
+
make `<-''` the canonical representation then the generators can easily
|
|
481
|
+
handle an empty string here specially (and if they don't then the results
|
|
482
|
+
are still correct), we don't have to handle the delete token after
|
|
483
|
+
tokenisation, and the optimisation of among when all actions are `<-` plus
|
|
484
|
+
a literal string can also fire when some actions are `delete`. (This case
|
|
485
|
+
occurs in the stemmers for arabic, czech, estonian, hungarian, irish,
|
|
486
|
+
italian, polish, porter and tamil.)
|
|
60
487
|
|
|
61
488
|
C++
|
|
62
489
|
---
|
|
@@ -95,7 +522,7 @@ Build system
|
|
|
95
522
|
* The `generate` target added in 3.1.0 now overrides `FPC` and `MCS` to do
|
|
96
523
|
nothing, to avoid compiling Pascal and C# code.
|
|
97
524
|
|
|
98
|
-
* Provide way to run tests under valgrind:
|
|
525
|
+
* Provide a way to run tests under valgrind:
|
|
99
526
|
|
|
100
527
|
make RUN_STEMWORDS='valgrind ./stemwords' check
|
|
101
528
|
|
|
@@ -933,7 +1360,7 @@ Javascript
|
|
|
933
1360
|
express the types fully in some places, but the invariants we require are
|
|
934
1361
|
ensured by the Snowball compiler. Annotating the expected errors allows
|
|
935
1362
|
unexpected type checking errors to be be more easily seen, and they are
|
|
936
|
-
now fatal
|
|
1363
|
+
now fatal in CI.
|
|
937
1364
|
|
|
938
1365
|
+ Use `===` and `!==` in stemwords.js. Patch from Adam Turner.
|
|
939
1366
|
|
|
@@ -2096,9 +2523,6 @@ Build system
|
|
|
2096
2523
|
* Add `WERROR` make variable to provide a way to add `-Werror` to existing
|
|
2097
2524
|
CFLAGS.
|
|
2098
2525
|
|
|
2099
|
-
libstemmer
|
|
2100
|
-
----------
|
|
2101
|
-
|
|
2102
2526
|
Testsuite
|
|
2103
2527
|
---------
|
|
2104
2528
|
|
data/vendor/snowball/README.rst
CHANGED
|
@@ -54,8 +54,8 @@ subdirectory.
|
|
|
54
54
|
To actually build the libstemmer library you then unpack and build the
|
|
55
55
|
distribution tarball, e.g. for C::
|
|
56
56
|
|
|
57
|
-
tar xf dist/libstemmer_c-3.
|
|
58
|
-
cd libstemmer_c-3.
|
|
57
|
+
tar xf dist/libstemmer_c-3.2.0.tar.gz
|
|
58
|
+
cd libstemmer_c-3.2.0
|
|
59
59
|
make
|
|
60
60
|
|
|
61
61
|
Cross-compiling
|
|
@@ -66,8 +66,8 @@ be built with a native compiler then libstemmer with the cross-compiler. For
|
|
|
66
66
|
example::
|
|
67
67
|
|
|
68
68
|
make CC=cc dist_libstemmer_c
|
|
69
|
-
tar xf dist/libstemmer_c-3.
|
|
70
|
-
cd libstemmer_c-3.
|
|
69
|
+
tar xf dist/libstemmer_c-3.2.0.tar.gz
|
|
70
|
+
cd libstemmer_c-3.2.0
|
|
71
71
|
make CC=riscv64-unknown-linux-gnu-gcc
|
|
72
72
|
|
|
73
73
|
If you are cross-compiling to or from Microsoft Windows, you'll need to also
|