Added a limited implementation of the OTP ets interface
This PR implements a small subset of the OTP ets interface.
The following ets functions are supported:
-
ets:new/2 -
ets:insert/2 -
ets:lookup/2 -
ets:delete/2
The following parameters to ets:new/2 are supported:
-
is_named -
{keypos, I :: non_neg_integer()} -
private|protected|publicaccess types
Only the set table type is supported.
This limited functionality allows users to define ETS tables and share term data between processes in a manner that is more efficient than using message passing with a process. The likely initial users of this feature will be the logging subsystem, as well as parts of the (forthcoming) application support, for storing application environment settings.
This PR provides a partial implementation of issue #887. Subsequent PRs can add additional features from this issue.
For information about the OTP ets interface, see https://www.erlang.org/doc/man/ets. This implementation attempts to be API-compatible with the OTP implementation.
These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license).
SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later