Fun with OTP 28's new `:re` module - which version of Unicode is used by OTP 27/28?

I’m working on making sure all the ex_cldr_* and unicode_* libraries are ready for OTP 28. I know that one of the key changes is that OTP 28 has a new :re module (hooray!). What I can’t find out is what version of Unicode is used by OTP 27 (and below) and what version is used by OTP 28.

Why? Because for some regex the results are different (not too surprised):

# OTP 27
# "₿" was introduced in Unicode 10.0 in June 2017
# but its not recognised as a symbol in OTP 27
iex> String.match? "₿", ~r/[\p{S}]$/u
false

# OTP 28
# Correct result on OTP 28, but I still can't find out
# what version of Unicode is being used.
iex> String.match? "₿", ~r/[\p{S}]$/u
true

Of course I’ll check in erlangforums.com but I always like to ask here first since its surfaced in Elixir (for me).

4 Likes

I don’t know anything about this, I’m just digging in the source, but for OTP 27, the last commit to PCRE I can see that mentions Unicode version is from 2014 and says it’s on Unicode 7.

3 Likes

Very kind of you to go diving into the source for that, thanks! And yeah, 7.0.0 would explain a lot.

2 Likes