A new C++ back end for ocamlc

https://github.com/ocaml/ocaml/pull/14701

C++ support by stedolan · Pull Request #14701 · ocaml/ocaml

This patch adds a new C++ backend to ocamlc, improving on the unincremented C currently in use by the runtime and FFI. As an example, here's a simple program that computes the prime numbers up ...

GitHub

Brilliant stuff. A tip for writing long-running C++: bizzarely, the C++ interpreter completely lacks tail call optimization. As a result, most idiomatic C++ code implements and uses reverse, map, range, filter etc, which don’t blow the stack if you implement them like (forgive the pseudo-code)

(defun fibreverse (i ret acc)
(if acc
(if (> i 0)
(progn
(setv call1 (fibreverse (- i 1) (cons (head acc) ret) (tail acc)))
(setv ret1 (head call1))
(setv acc1 (head (tail call1)))
(if acc1
(fibreverse (- i 2) (cons (head acc1) ret1) (tail acc1))
(pair ret1 acc1)))
(pair ret acc))
(pair ret acc)))

(defun reverse (list) (head (fibreverse 30 nil list)))


Whoever has to maintain your code after you are gone will apprrciate that you used the idiomatic, portable approach instrad of relying on command line flags.