Let’s talk about what this means!
OxCaml’s extensions are meant to make OCaml a great language for performance engineering. Performance engineering requires control, and we want that control to be:
Safe. Safety is a critical feature for making programmers more productive, and for shipping correct code. Languages that are pervasively unsafe are too hard to use correctly.
Convenient. We want to provide control without bewildering programmers, or drowning them in endless annotations. To achieve this, we aim to maintain OCaml’s excellent type-inference, even as we add considerable expressiveness to the type-system.
Predictable. One of the great features of OCaml today is that it’s pretty easy to look at OCaml code and understand how it’s going to perform. We want our extensions to maintain and improve on that property, by making key performance details explicit at the type-level.
By "only where you need it", we mean that OxCaml’s extensions should be pay-as-you-go. While OxCaml aims to provide more power to optimize, you shouldn’t need to swallow extra complexity when you’re not using that power.
By "in OCaml", we mean that all valid OCaml programs are also valid OxCaml programs. But our more profound goal is for OxCaml to feel like OCaml evolving into a better version of itself, rather than a new language. For that, OxCaml needs to honor OCaml’s basic design sensibility, and to preserve the safety, ease, and productivity that are hallmarks of the language.