In this fourth part of the series on Fennel's implementation of Clojure, the author discusses significant changes to the parser and compiler, rooted in lessons learned from previous attempts. The original parser failed to handle metadata and special forms adequately, necessitating a complete redesign to better accommodate Clojure's syntax and functionalities. The new parser promises to manage namespaces and conditional reading more effectively while simplifying the interaction with macros, ultimately simplifying the overall compiler design process. Upcoming articles will focus on further compiler developments.