docs/polyglot/README.md
Enso supports robust interoperability with other programming languages - e.g. Enso is a polyglot programming languge.
Unlike many other programming languages the system language of Enso (e.g. the language that is used to do low-level operating system tasks) is Java. As such a lot of attention has been dedicated to make interoperability with Java as smooth as possible:
Many Standard libraries are using these polyglot java import statements.
Custom projects and libraries are encouraged to do the same. Interoperability
with Java is a first class citizen in the Enso programming language.
Enso greatly benefits from the polyglot ecosystem of GraalVM and easily interops with any language from that ecosystem. Including JavaScript, Python, R, etc.
Interop with these dynamic languages is primarily supported via
foreign function definitions. When
accessing Python, as well as other dynamic languages, the same pattern is used.
Enough include the language support in the
distribution and the language gets
automatically exposed via foreign directive to Enso programs.
Additional overview is provided in following documents:
Implementation details are described in EpbLanguage javadoc.