Actually I think I've never seen a ẞ in use, ever. Not once.
Now I'm running around testing 'Try $programmingLanguage' services on the net. Try Clojure for example:
> (.toUpperCase "ß") "SS"
Java (as in Try Clojure) seems to do the 'expected' SS thing. Trying the golang playground I get even worse:
fmt.Println(strings.ToUpper("ßẞ"))
returns
ßẞ
(yeah, unchanged?)
So, while I agree that you're technically correct (ẞ exists!) I do stick to my ~7 letters list for now.. It seems that's both realistic and usable.
Python3 got a lot of flac for the decision to break away from it's byte sequences, to it's a unicode string. But I think that was the right choice. I still understand why people writing software that only cared about network, on-the-wire, pretend-to-be-text type strings.
Then again, based on some other comments here, apparently there are still some dark corners:
Python 3.2.3 (default, Feb 20 2013, 14:44:27)
[GCC 4.7.2] on linux2
>>> s="Åßẞ"
>>> s == s.upper().lower()
False
>>> s.lower()
'åßß'
However, to complicate things: Python 3.4.2 (default, Dec 27 2014, 13:16:08)
[GCC 4.9.2] on linux
>>> s="Åßẞ"
>>> s.lower()
'åßß'
>>> s.lower().upper()
'ÅSSSS'
>>> s == s.lower().upper()
False
>>> s.lower().upper() == 'ÅSSSS'
True
>>> 'SS'.lower()
'ss'
>>> 'ß'.lower()
'ß'
>>> 'ß'.lower().upper()
'SS'
>>> 'ß'.lower().upper().lower()
'ss'
So that's fun.For the record, .casefold():
#Python 3.4:
>>> 'Åßẞ'.casefold() == 'åßß'.casefold() == 'åssss'
True
[ed: Also, wrt upper/lower being for display purposes -- I thought it was nice to point out that they are not symmetric, as one might expect them to (although that expectation is probably wrong in the first place...]