Fcitx changes the behavior of Candidate Words handling in 4.1.0. Input method should provide complete candidate words, instead of only a single page of candidate words. The paging function is implemented by Fcitx, not by every single input method anymore.
For most CJK input methods, they don't need to implement a separate punctuation function, since there is already a shared punctuation implementation. If there is similar function needed for input method, it should not be implemented in input method, but in a separate module.
Currently fcitx only supports shared library input method, some people might think it's better to implement input method in a separate process, DBus can be used in this case, but there is no easy way to do this currently.