Hello one and all on this merry of all days!
Today unfortunately I bring all but joy. For std.uni has had a bout of work!
- Unicode tables have been updated to 15 from 6.2 (and with that the generator is now in Phobos!).
- Unicode categories C aka Other have been brought in line with TR44 specification. E.g.
unicode.C
.
In both cases if you use std.uni directly or indirectly (say std.regex), you may find yourself with code breakage on next release.
If you do find yourself with problems, first check that you are not referencing the C category, if you are, here is some code to mitigate your circumstance however it would be better to prevent such need.
@property auto loadPropertyOriginal(string name)() pure
{
import std.uni : unicode;
static if (name == "C" || name == "c" || name == "other" || name == "Other")
{
auto target = unicode.Co;
target |= unicode.Lo;
target |= unicode.No;
target |= unicode.So;
target |= unicode.Po;
return target;
}
else
return unicode.opDispatch!name;
}
Lastly, the tables updating have already brought much joy to MIR, with a broken test. A character that was being tested wasn't allocated in 6.2 but was in 7 therefore results were different. If your test suite is not part of the Phobos runners, please be aware that once you update you may experience failed tests. These are not avoidable due to external specification its based upon. However in even worse news the table generator was not kept in a working condition in the last 10 years, so there is a chance that something may have been missed.
In all cases, please do contact me if you need assistance. I'm available on Discord, OFTC #d and of course N.G. or even email if you really need it (firstname@lastname.co.nz).
--- Happy holidays to those that are currently enjoying them or about to!