janestreet / base

Standard library for OCaml
MIT License
848 stars 124 forks source link

Difference between `base`, and `core_kernel`? #143

Closed Montana closed 1 year ago

Montana commented 1 year ago

Hi, all at Jane Street,

While writing some of the software, I'm going to use with base; I'm also developing a highly dependable, safety-oriented kernel for real-time applications. It is designed explicitly as an execution facility for a deterministic semi-formal model. What's the most important to me is the interaction between the kernel and the compilation tools and how performance is optimized within these constraints.

When using Oasis, from what I've read about base, it's also feasible to have timeliness verified if and only if all the processing of agents is always executed with a coherent real-time behavior. This feature includes the satisfaction of three properties: each processing is executed during its allocated formal duration; no processing starts before its earliest activity date; each processing respects its deadline. By construction, Oasis is a complete solution for the two first points.

For example, when I finished the compilation on Oasis, I deduced criteria like correct processing chaining or deadline checks are performed by the Oasis run-time environment, thus enabling me to accurately ensure that all agent's behaviors are nominal and that any faulting activity can not have any incidence on the other, e.g., below:

Screenshot 2022-12-07 at 3 43 36 PM

The two things I'm looking for are a complete compilation of the agents and the agents' interface with the system layer (parameters of calls to the system layer, communication buffers, and, moreover, relays.) The last thing is, looking for the function where you can deploy process operator inputs such as setpoints or other parameters.

image

I understand that for some modules in base that are both in the OCaml standard library and Base, such as String, we define a module String0 for common functions that cannot be defined directly in Base. The documentation says that "String to avoid creating a circular dependency."

Except for String itself, other modules are not allowed to use Caml. String and must use either String or String0 instead.

So why base? three obvious three things come to mind:

I upgraded my local install to v0.9.1 of the Core in the OCaml libraries, but when trying to recompile a project against it, I get the error: Cannot locate driver sexp.

I think the configured script for that project (generated by Oasis) seems to locate px_tools and ppx_sexp_conv just fine. So a little puzzled as to why that would be at this stage of the compilation process.

Thank you, Montana

bcc32 commented 1 year ago

This appears to be an AI-generated spam issue. Closing.

Montana commented 1 year ago

Hi sorry @bcc32

Very sorry you felt that way,

I was hoping someone could tell me a bit more in an in-depth answer. Is it just a minimal Standard Library replacement and more lightweight?