AmpersandTarski / Ampersand

Build database applications faster than anyone else, and keep your data pollution free as a bonus.
http://ampersandtarski.github.io/
GNU General Public License v3.0
40 stars 8 forks source link

Public interfaces #1479

Open stefjoosten opened 2 months ago

stefjoosten commented 2 months ago

An INTERFACE that has no ROLE is available at runtime without ROLE-restrictions. Currently, the PrototypeContext contains a relation isPublic, which must be true iff the interface has no roles. It uses the ExecEngine to fill the interface roles with all roles for all public interfaces.

The problem is that the compiler should do this. It should link every public interface to all roles. This should be changed in the compiler. Besides, this should be changed in FormalAmpersand as well, to ensure that the Atlas has the same behavior.

Describe alternatives you've considered The alternative is that the prototype does this at runtime. However, the role allocation should not change at runtime. Therefore we opt to do this in the initialization that the compiler performs.