Skip to content
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

Bump esp-idf 5.3 CI to rc1 #1227

Closed
wants to merge 44 commits into from
Closed

Conversation

petermm
Copy link
Contributor

@petermm petermm commented Jul 10, 2024

Bump esp-idf 5.3 CI to rc1.

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

bettio and others added 30 commits February 10, 2024 11:57
Signed-off-by: Davide Bettio <[email protected]>
Prepare v0.7.0-dev dev cycle

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
Merge release-0.6 branch into main.

This merges also i2c driver acquire / release bugfix and release CI.

Signed-off-by: Davide Bettio <[email protected]>
Merge release-0.6 branch into main.

This merges a number of fixes and cleanups about docs, CI, and
build/release scripts.
Merge v0.6.0-beta.1 into main.

This merges a number of fixes and changes, most importants:
- Fixes to UTF-8 and latin1 atom support
- UTF-8 is used as default for atom serialization in term to binary
- Support to functions with more than 9 parameters
- Support for code that makes use of more than 16 x registers, such as
  when doing complex pattern matching, etc...

See also v0.6.0-beta.1 CHANGELOG.md section for more information
Merge v0.6.0 into main.

This merges a number of fixes and some important additions:
- API for sending messages from other threads (useful on FreeRTOS on
  single core devices with SMP disabled)
- Fixes to the socket driver
- All ESP32-* images are working now

See also v0.6.0 CHANGELOG.md section for more information
Add optional I2C Nif-based resource driver

This PR adds an optional Nif-based resource for use with the I2C interface.
Using a Nif-based resource has several advantages, including:

* More predictable (and less) latency between the I2C client and IDF calls,
since Nifs are not as beholden to the whims of the scheduler as ports/processes;
* One less process needed (as opposed to the port-based implementation), so has
less memory overhead;
* Automated resource reclamation when resource is GC’d (after ref count goes
to 0), so users can call close, but in cases where they do not, the i2c driver
will be removed (eventually).

This implementation is currently opt-in.  Set `use_nif` to true in the
initialization parameter when creating an I2C instance, to use it.
Otherwise, the port-based implementation will be used.

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
Added a limited implementation of the OTP ets interface

***
Few opening words, Fred recently passed away and this is the last time I
will merge a PR from him.

It was an honor to work with you on this project, thanks for your precious help
and for taking part to this journey.

Fred, will miss you.
***

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 atomvm#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
Merge fixes to ref, pid to list, to binary and display, and few other
changes.

Signed-off-by: Davide Bettio <[email protected]>
Just use Unreleased for unreleased version.

Signed-off-by: Davide Bettio <[email protected]>
Merge all changes included in v0.6.1, such as mbedtls and TLS 1.3
bugfix, etc... Also merge valgrind warning fix and support to DragonFly BSD,
that have been added after v0.6.1 release.
Mentioned in atomvm#887, required to port gleam/mist.
Implementation is in C as initially designed by @fadushin, which saves a
little bit memory as we don't need to copy the whole entry.

Signed-off-by: Paul Guyot <[email protected]>
…lement_3

Implement ets:lookup_element/3

Mentioned in atomvm#887, required to port gleam/mist.
Implementation is in C as initially designed by @fadushin, which saves a little
bit memory as we don't need to copy the whole entry.

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
Merge changes from release-0.6 branch, such as stacktraces on pico2040
defaulting to on, is_even and is_odd guards for Elixir Integer module and CI
fixes.
Merge changes such as ssl fixes and new proplists functions.
Merge type fixes for `gen_tcp` and `ssl`, scheduling of trapped process
and new and improved API for GPIO wakup on ESP32.
Merge fix to race condition in whereis_dead_process test, and ssl
fix/workaround.
Merge fix for C++ with newer esp-idf and new `network:sta_rssi/0`.
esp32, rp2040 and stm32 all use the same logic to use .ctor runtime to
register drivers and nifs collections.

Also use the smaller constructor name for nifs of RP2040 on other platforms to
maintain compatibility as RP2040 builds have to explicitely list nifs so they
are not gc'd. EPS32 is unaffected as enabling of nifs is done through menuconfig.

Signed-off-by: Paul Guyot <[email protected]>
Fix C++ compilation for ets headers

This PR depends on atomvm#1158.

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
Factorize REGISTER_* macros and logic for ports and nifs

esp32, rp2040 and stm32 all use the same logic to use .ctor runtime to register
drivers and nifs collections.

Also use the smaller constructor name for nifs of RP2040 on other platforms to
maintain compatibility as RP2040 builds have to explicitely list nifs so they
are not gc'd. EPS32 is unaffected as enabling of nifs is done through
menuconfig.

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
term.h wasn't using stdbool so predicate functions were returning int
instead of bool.
So change them to use instead bool.

Signed-off-by: Davide Bettio <[email protected]>
Use bool instead of int for predicates.

Signed-off-by: Davide Bettio <[email protected]>
Use bool for predicates instead of int.

Signed-off-by: Davide Bettio <[email protected]>
Use bool for predicates instead of int.

Signed-off-by: Davide Bettio <[email protected]>
Use bool for predicates

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
Merge new http client module, updates to ESP32 CI, support for
ESP32-C2 and ESP32-H2, new Elixir Keyword functions, fix to
bs_context_to_binary opcode (OTP-21) and misc improvements to READMEs.
bettio and others added 14 commits June 15, 2024 15:39
CI: switch arm64 to Debian bookworm

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
Factorize sys_load_module function

The same function was duplicated across platforms.

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
…ailable

Add code:all_loaded/0 and code:all_available/0

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
Merge several changes into main, including:
- undef function error
- Map string representation, ordered iterator and io:format support for maps
- erlang:apply/2,3
- CI improvements, including OTP-27 and testing with newver gcc/clang versions
- Allow configuring wifi AP channel
- ESP32 conditional build of GPIO module on ESP32
- Fix issue with multiple link creation
- byte/bit_size with OTP-27 code
- Fix race condition of logger_manager
- Fix some missing exported types
- Documentation fixes and removed obsolete readmes
…de-all-available

Fix buffer overflow in code:all_available/0 implementation

Crash was triggered with eunit tests and gcc-13 on ubuntu-24.04.

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
Merge several changes into main, including:
- Fixes to CI and tests
- Fix a bug where x0 and x1 were corrupted by failing guards
- Export missing types in gen_server module
- Fix a crash caused by `memory_estimate_usage` failing with some funcs
Add a simplified implementation of eunit interface, with an output compatible
with unity test as parsed by Python dut module for qemu-based eunit testing.

Eunit can be used on rebar3 projects on generic_unix on both BEAM and AtomVM
with:

rebar3 eunit
rebar3 as test atomvm packbeam
atomvm ${ATOMVMDIR}/build/libs/etest/src/beams/eunit.beam \
    ${ATOMVMDIR}/build/libs/atomvmlib.avm \
    _build/test/lib/*.avm

Signed-off-by: Paul Guyot <[email protected]>
Add support for eunit module

Add a simplified implementation of eunit interface, with an output compatible
with unity test as parsed by Python dut module for qemu-based eunit testing.

Eunit can be used on rebar3 projects on generic_unix on both BEAM and AtomVM
with:

```shell
rebar3 eunit
rebar3 as test atomvm packbeam
atomvm ${ATOMVMDIR}/build/libs/etest/src/beams/eunit.beam \
    ${ATOMVMDIR}/build/libs/atomvmlib.avm \
    _build/test/lib/*.avm
```

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
Merge several changes into main, including:
- Add support for `erlang:size/1` bif
- Add missing DEBUG_FAIL_NULL for gcbifs
- CI adjustments
Bump esp-idf 5.3 CI to rc1.

Signed-off-by: Peter M <[email protected]>
@petermm petermm closed this Jul 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants