Implementation Notes

Some notes about the implementation of the Fly Compiler and the runtime libraries.

Compiler internals

The core compiler is self-contained and depends only on the C++ standard library.

Runtime libraries

The runtime libraries will be implemented as normal Fly classes. However, these will sometimes depend on external libraries. An example is libcurl for supporting http, ftp, sftp and other protocols.

There is a number of principles for choosing an external library in the Fly library implementation:

  • The external library must be licensed under MIT, BSD or an equivalent (liberal) license.
  • The external library must be actively developed, have an extensive user base and a provide sufficient documentation.
  • In no way must the internals of the library "leak" into the Fly library. It should always be possible to replace an external library with another (possibly internally developed) library.
  • Bug fixes, documentation updates and other improvements to an external library must be (attempted) submitted to the upstream developer. This prevents internal branching of the library and is good value exchange.

Internationalization

Comprehensive support for i18n is a complex undertaking and covers areas like locale detection/configuration, collation, time computations, formatting and parsing. Fly will utilize the ICU framework to achieve this goal.

Options: