Add erlang.schedule_inline() for inline continuations#28
Merged
Conversation
Bypasses Erlang messaging by using enif_schedule_nif() to chain Python calls directly. Works with all py:call() variants.
- Add bench_schedule_inline comparing schedule_inline vs schedule_py - Use explicit context in test_schedule_inline_to_schedule_py for CI
Captures frame globals/locals when erlang.schedule_inline() is called and uses them for function lookup in the continuation. This ensures correct namespace resolution with subinterpreters. Adds test_schedule_inline_captures_globals to verify behavior.
Use py:context() for all tests that pair py:exec with py:eval to ensure consistent namespace across different platforms.
- Document erlang.schedule_inline() in asyncio.md - Add comparison table (schedule_inline vs schedule_py) - Update "When to Use Each Pattern" table - Add v2.3.0 changelog entry
c36c5b8 to
de5f729
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
erlang.schedule_inline()which bypasses Erlang messaging usingenif_schedule_nif()to chain Python calls directlypy:call()variantsUsage