-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ergo: Replacement #35
Comments
ERGO->WASM and then allow other target languages to use a wasmer or equivalent to invoke the compiled code. |
TSC Notes:
|
As discussed in TSC meeting Thursday 27 October, the next step is to schedule a workshop / technical deep dive to determine the technical steps / strategy for replacing Ergo. For anyone interested in being involved, the it is highly recommended that they watch (or read) the excellent presentation given by @dselman during a recent Tech WG call, where Dan explains some of the issues and challenges with replacing Ergo. Video - AP Future of Ergo If anyone is interested in being involved in this project, please leave a message in the Accord Project #technology-wg channel, or message me directly on Discord (@martinhalford#4706) or leave a comment below in this issue. |
If I'm not late to the discussion: I want to access to this system with Python so option 3. If it has design advantages there is no point in discarding the whole language. |
I would like to add that being able to compile to a memory-safe language/runtime can be a strong value proposition. Looking forward into the future (years, decades), we may find that applications and stacks vulnerable to things like buffer overflows are deprioritized by either legislation or industry best practice. |
TSC MinutesErgo has been removed from Cicero ("template-archive" repo). Some small house-keeping to do. Need documentation and exemplars for BYO runtime. @martinhalford prototyping with Rust. Need to update documentation and marketing website. @martinhalford to lead. Ergo repo archived. |
TSC MinutesPriority is to update public docs and the marketing website to reflect reality. @dselman is willing to match investment from others, but needs to be driven by someone with demand for capabilities. Next week's TechWG call is dedicated to APAP. |
Discussion 🗣
Currently all logic within a Accord Project (Cicero) template is executed as Ergo.
Given the niche nature of this language and the difficulty in finding OCaml/Coq Developers, there may be some benefit in allowing other languages (e.g. NodeJS, C#, Python, Rust, etc.) being used as target languages instead of or in addition to Ergo.
Context
Ergo is a domain specific language developed specifically for the Accord Project. Ergo was developed using OCaml, Coq and Cert by @jeromesimeon.
Detailed Description
Although there are many design advantages in having a custom language dedicated to the Accord Project, the maintenance, support and ongoing development of the Ergo language is dependent on niche skills which are not readily available at scale within the developer community.
This restricts who can maintain and/or contribute to the Ergo codebase and slows the ongoing development of this language.
In addition, Ergo has a custom syntax that, although similar to other languages, is distinct and requires some effort for template authors to learn. This introduces a barrier to entry for template authors wanting to create AP templates but are unfamiliar with the Ergo syntax.
The current Ergo implementation is incomplete and requires additional language constructs to be added in order for it to be fully useable by template authors.
However... there are some downsides to introducing generic target languages.
Due to their very nature, general purpose languages may provide too much flexibility w.r.t. language features which could produce undesirable effects during execution of template logic.
For example, Ergo is a functional language where every expression evaluates, and the code is restricted to executing only within the AP template. General purposes languages can, potentially, execute or invoke executions beyond the template boundaries, if allowed to do so. Other general purpose languages (e.g. NodeJS) may pull in external libraries that could contain vulnerabilities.
In addition, some AP template functionality (e.g. Parse) is tightly coupled to Ergo/OCaml/Coq and would not be easily replicated using a general purpose language.
Ergo touches many different areas of the AP code base. Therefore, replacing Ergo or allowing other languages to be targeted alongside Ergo is a non-trivial process which could require many person months of effort.
In summary....
We have the following options:
The text was updated successfully, but these errors were encountered: