1# utf8proc release history # 2 3## Version 2.1 ## 4 52016-12-16: 6 7- New functions `utf8proc_map_custom` and `utf8proc_decompose_custom` 8 to allow user-supplied transformations of codepoints, in conjunction 9 with other transformations ([#89]). 10 11- New function `utf8proc_normalize_utf32` to apply normalizations 12 directly to UTF-32 data (not just UTF-8) ([#88]). 13 14- Fixed stack overflow that could occur due to incorrect definition 15 of `UINT16_MAX` with some compilers ([#84]). 16 17- Fixed conflict with `stdbool.h` in Visual Studio ([#90]). 18 19- Updated font metrics to use Unifont 9.0.04. 20 21## Version 2.0.2 ## 22 232016-07-27: 24 25- Move `-Wmissing-prototypes` warning flag from `Makefile` to `.travis.yml` 26 since MSVC does not understand this flag and it is occasionally useful to 27 build using MSVC through the `Makefile` ([#79]). 28 29- Use a different variable name for a nested loop in `bench/bench.c`, and 30 declare it in a C89 way rather than inside the `for` to avoid "error: 31 'for' loop initial declarations are only allowed in C99 mode" ([#80]). 32 33## Version 2.0.1 ## 34 352016-07-13: 36 37- Bug fix in `utf8proc_grapheme_break_stateful` ([#77]). 38 39- Tests now use versioned Unicode files, so they will no longer 40 break when a new version of Unicode is released ([#78]). 41 42## Version 2.0 ## 43 442016-07-13: 45 46- Updated for Unicode 9.0 ([#70]). 47 48- New `utf8proc_grapheme_break_stateful` to handle the complicated 49 grapheme-breaking rules in Unicode 9. The old `utf8proc_grapheme_break` 50 is still provided, but may incorrectly identify grapheme breaks 51 in some Unicode-9 sequences. 52 53- Smaller Unicode tables ([#62], [#68]). This required changes 54 in the `utf8proc_property_t` structure, which breaks backward 55 compatibility if you access this `struct` directly. The 56 functions in the API remain backward-compatible, however. 57 58- Buffer overrun fix ([#66]). 59 60## Version 1.3.1 ## 61 622015-11-02: 63 64- Do not export symbol for internal function `unsafe_encode_char()` ([#55]). 65 66- Install relative symbolic links for shared libraries ([#58]). 67 68- Enable and fix compiler warnings ([#55], [#58]). 69 70- Add missing files to `make clean` ([#58]). 71 72## Version 1.3 ## 73 742015-07-06: 75 76- Updated for Unicode 8.0 ([#45]). 77 78- New `utf8proc_tolower` and `utf8proc_toupper` functions, portable 79 replacements for `towlower` and `towupper` in the C library ([#40]). 80 81- Don't treat Unicode "non-characters" as invalid, and improved 82 validity checking in general ([#35]). 83 84- Prefix all typedefs with `utf8proc_`, e.g. `utf8proc_int32_t`, 85 to avoid collisions with other libraries ([#32]). 86 87- Rename `DLLEXPORT` to `UTF8PROC_DLLEXPORT` to prevent collisions. 88 89- Fix build breakage in the benchmark routines. 90 91- More fine-grained Makefile variables (`PICFLAG` etcetera), so that 92 compilation flags can be selectively overridden, and in particular 93 so that `CFLAGS` can be changed without accidentally eliminating 94 necessary flags like `-fPIC` and `-std=c99` ([#43]). 95 96- Updated character-width tables based on Unifont 8.0.01 ([#51]) and 97 the Unicode 8 character categories ([#47]). 98 99## Version 1.2 ## 100 1012015-03-28: 102 103- Updated for Unicode 7.0 ([#6]). 104 105- New function `utf8proc_grapheme_break(c1,c2)` that returns whether 106 there is a grapheme break between `c1` and `c2` ([#20]). 107 108- New function `utf8proc_charwidth(c)` that returns the number of 109 column-positions that should be required for `c`; essentially a 110 portable replacment for `wcwidth(c)` ([#27]). 111 112- New function `utf8proc_category(c)` that returns the Unicode 113 category of `c` (as one of the constants `UTF8PROC_CATEGORY_xx`). 114 Also, a function `utf8proc_category_string(c)` that returns the Unicode 115 category of `c` as a two-character string. 116 117- `cmake` script `CMakeLists.txt`, in addition to `Makefile`, for 118 easier compilation on Windows ([#28]). 119 120- Various `Makefile` improvements: a `make check` target to perform 121 tests ([#13]), `make install`, a rule to automate updating the Unicode 122 tables, etcetera. 123 124- The shared library is now versioned (e.g. has a soname on GNU/Linux) ([#24]). 125 126- C++/MSVC compatibility ([#17]). 127 128- Most `#defined` constants are now `enums` ([#29]). 129 130- New preprocessor constants `UTF8PROC_VERSION_MAJOR`, 131 `UTF8PROC_VERSION_MINOR`, and `UTF8PROC_VERSION_PATCH` for compile-time 132 detection of the API version. 133 134- Doxygen-formatted documentation ([#29]). 135 136- The Ruby and PostgreSQL plugins have been removed due to lack of testing ([#22]). 137 138## Version 1.1.6 ## 139 1402013-11-27: 141 142- PostgreSQL 9.2 and 9.3 compatibility (lowercase `c` language name) 143 144## Version 1.1.5 ## 145 1462009-08-20: 147 148- Use `RSTRING_PTR()` and `RSTRING_LEN()` instead of `RSTRING()->ptr` and 149 `RSTRING()->len` for ruby1.9 compatibility (and `#define` them, if not 150 existent) 151 1522009-10-02: 153 154- Patches for compatibility with Microsoft Visual Studio 155 1562009-10-08: 157 158- Fixes to make utf8proc usable in C++ programs 159 1602009-10-16: 161 162## Version 1.1.4 ## 163 1642009-06-14: 165 166- replaced C++ style comments for compatibility reasons 167- added typecasts to suppress compiler warnings 168- removed redundant source files for ruby-gemfile generation 169 1702009-08-19: 171 172- Changed copyright notice for Public Software Group e. V. 173- Minor changes in the `README` file 174 175## Version 1.1.3 ## 176 1772008-10-04: 178 179- Added a function `utf8proc_version` returning a string containing the version 180 number of the library. 181- Included a target `libutf8proc.dylib` for MacOSX. 182 1832009-05-01: 184- PostgreSQL 8.3 compatibility (use of `SET_VARSIZE` macro) 185 186## Version 1.1.2 ## 187 1882007-07-25: 189 190- Fixed a serious bug in the data file generator, which caused characters 191 being treated incorrectly, when stripping default ignorable characters or 192 calculating grapheme cluster boundaries. 193 194## Version 1.1.1 ## 195 1962007-06-25: 197 198- Added a new PostgreSQL function `unistrip`, which behaves like `unifold`, 199 but also removes all character marks (e.g. accents). 200 2012007-07-22: 202 203- Changed license from BSD to MIT style. 204- Added a new function `utf8proc_codepoint_valid` to the C library. 205- Changed compiler flags in `Makefile` from `-g -O0` to `-O2` 206- The ruby script, which was used to build the `utf8proc_data.c` file, is now 207 included in the distribution. 208 209## Version 1.0.3 ## 210 2112007-03-16: 212 213- Fixed a bug in the ruby library, which caused an error, when splitting an 214 empty string at grapheme cluster boundaries (method `String#utf8chars`). 215 216## Version 1.0.2 ## 217 2182006-09-21: 219 220- included a check in `Integer#utf8`, which raises an exception, if the given 221 code-point is invalid because of being too high (this was missing yet) 222 2232006-12-26: 224 225- added support for PostgreSQL version 8.2 226 227## Version 1.0.1 ## 228 2292006-09-20: 230 231- included a gem file for the ruby version of the library 232 233Release of version 1.0.1 234 235## Version 1.0 ## 236 2372006-09-17: 238 239- added the `LUMP` option, which lumps certain characters together (see `lump.md`) (also used for the PostgreSQL `unifold` function) 240- added the `STRIPMARK` option, which strips marking characters (or marks of composed characters) 241- deprecated ruby method `String#char_ary` in favour of `String#utf8chars` 242 243## Version 0.3 ## 244 2452006-07-18: 246 247- changed normalization from NFC to NFKC for postgresql unifold function 248 2492006-08-04: 250 251- added support to mark the beginning of a grapheme cluster with 0xFF (option: `CHARBOUND`) 252- added the ruby method `String#chars`, which is returning an array of UTF-8 encoded grapheme clusters 253- added `NLF2LF` transformation in postgresql `unifold` function 254- added the `DECOMPOSE` option, if you neither use `COMPOSE` or `DECOMPOSE`, no normalization will be performed (different from previous versions) 255- using integer constants rather than C-strings for character properties 256- fixed (hopefully) a problem with the ruby library on Mac OS X, which occurred when compiler optimization was switched on 257 258## Version 0.2 ## 259 2602006-06-05: 261 262- changed behaviour of PostgreSQL function to return NULL in case of invalid input, rather than raising an exceptional condition 263- improved efficiency of PostgreSQL function (no transformation to C string is done) 264 2652006-06-20: 266 267- added -fpic compiler flag in Makefile 268- fixed bug in the C code for the ruby library (usage of non-existent function) 269 270## Version 0.1 ## 271 2722006-06-02: initial release of version 0.1 273 274[#6]: https://github.com/JuliaLang/utf8proc/issues/6 275[#13]: https://github.com/JuliaLang/utf8proc/issues/13 276[#17]: https://github.com/JuliaLang/utf8proc/issues/17 277[#20]: https://github.com/JuliaLang/utf8proc/issues/20 278[#22]: https://github.com/JuliaLang/utf8proc/issues/22 279[#24]: https://github.com/JuliaLang/utf8proc/issues/24 280[#27]: https://github.com/JuliaLang/utf8proc/issues/27 281[#28]: https://github.com/JuliaLang/utf8proc/issues/28 282[#29]: https://github.com/JuliaLang/utf8proc/issues/29 283[#32]: https://github.com/JuliaLang/utf8proc/issues/32 284[#35]: https://github.com/JuliaLang/utf8proc/issues/35 285[#40]: https://github.com/JuliaLang/utf8proc/issues/40 286[#43]: https://github.com/JuliaLang/utf8proc/issues/43 287[#45]: https://github.com/JuliaLang/utf8proc/issues/45 288[#47]: https://github.com/JuliaLang/utf8proc/issues/47 289[#51]: https://github.com/JuliaLang/utf8proc/issues/51 290[#55]: https://github.com/JuliaLang/utf8proc/issues/55 291[#58]: https://github.com/JuliaLang/utf8proc/issues/58 292[#62]: https://github.com/JuliaLang/utf8proc/issues/62 293[#66]: https://github.com/JuliaLang/utf8proc/issues/66 294[#68]: https://github.com/JuliaLang/utf8proc/issues/68 295[#70]: https://github.com/JuliaLang/utf8proc/issues/70 296[#77]: https://github.com/JuliaLang/utf8proc/issues/77 297[#78]: https://github.com/JuliaLang/utf8proc/issues/78 298[#79]: https://github.com/JuliaLang/utf8proc/issues/79 299[#80]: https://github.com/JuliaLang/utf8proc/issues/80 300[#84]: https://github.com/JuliaLang/utf8proc/pull/84 301[#88]: https://github.com/JuliaLang/utf8proc/pull/88 302[#89]: https://github.com/JuliaLang/utf8proc/pull/89 303[#90]: https://github.com/JuliaLang/utf8proc/issues/90 304