The following MWE is from calligraphy's manual (p.9) with Joseph Wright's workaround for the library's use of obsolete functions:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{expl3}
\ExplSyntaxOn
\int_zero_new:N \g__prg_map_int
\ExplSyntaxOff
\usetikzlibrary{decorations,calligraphy}
\begin{document}
\tikz \calligraphy [copperplate] (0,0) .. controls
+(1,−1) and +(−1,1) .. ++(3,0) [this stroke
style={light,taper=start}] +(0,0) .. controls
+(1,−1) and +(−1,1) .. ++(3,0) [this stroke
style={heavy}] +(0,0) .. controls +(1,−1) and
+(−1,1) .. ++(3,0) [this stroke
style={light,taper=end}] ;
\end{document}
However, I get the following compilation error:
! Undefined control sequence.
\GenericError ...
#4 \errhelp \@err@ ...
l.20 style={light,taper=end}] ;
?
What's the best workaround or fix? I realise that \GenericError is defined, as latexdef says so. Indeed, it gives a definition which uses \@err@, too. So, presumably, \@err@ should be defined before \GenericError is called, but isn't. But none of this really explains why I get an error with the manual's code at all.
The library also relies on \__prop_split:cnTF which is defined as a variant of \__prop_split:NnTF. However, I can't find this in interface3,pdf. On the other hand, it is in l3kernel/expl3-code.tex, so I guess it should work?

calligraphyyou also need to load librarydecorations.pathreplacing. – Zarko Jul 18 '18 at 02:43decorations. Making itdecorations.pathreplacingdoesn't help. You only need that, I think, for calligraphic brackets and such. That code is conditionalised on the decorations stuff being defined. – cfr Jul 18 '18 at 03:02\__prop_split:NnTFsee page 148 ofinterface3.pdf(version dated 2018/03/05) – Jul 18 '18 at 03:10