AtomVM icon indicating copy to clipboard operation
AtomVM copied to clipboard

Added a limited implementation of the OTP ets interface

Open fadushin opened this issue 1 year ago • 0 comments

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 | public access 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

fadushin avatar Feb 18 '24 14:02 fadushin