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

Implement zerocopy writes for the encrypted protocol #476

Merged
merged 4 commits into from
Nov 3, 2024

Conversation

bdraco
Copy link
Contributor

@bdraco bdraco commented Nov 1, 2024

With Python 3.12+ and later transport.writelines is implemented as sendmsg(..., IOV_MAX) which allows us to avoid joining the bytes and sending them in one go.

Older Python will effectively do the same thing we do now b"".join(...)

With Python 3.12+ and later `transport.writelines` is implemented as [`sendmsg(..., IOV_MAX)`](python/cpython#91166) which allows us to avoid joining the bytes and sending them in one go.

Older Python will effectively do the same thing we do now `b"".join(...)`
@bdraco bdraco marked this pull request as ready for review November 1, 2024 14:25
@bdraco
Copy link
Contributor Author

bdraco commented Nov 1, 2024

@ikalchev When you get a chance, I have a few PRs in the queue

@ikalchev
Copy link
Owner

ikalchev commented Nov 3, 2024

Awesome stuff! 🙏

@ikalchev ikalchev merged commit 20f5151 into ikalchev:dev Nov 3, 2024
1 of 8 checks passed
@bdraco bdraco deleted the zerocopy_writes branch November 3, 2024 07:47
ikalchev added a commit that referenced this pull request Nov 3, 2024
* Late-import base36 and QR code libraries; remove SUPPORT_QR_CODE flag

* Increase idle connection check interval to 300s (#475)

This check was creating a lot of TimerHandles when the user
had multiple bridges. We do not need to check very often
as connections usually stay around for 24+hours

* Implement zerocopy writes for the encrypted protocol (#476)

* Implement zerocopy writes for the encrypted protocol

With Python 3.12+ and later `transport.writelines` is implemented as [`sendmsg(..., IOV_MAX)`](python/cpython#91166) which allows us to avoid joining the bytes and sending them in one go.

Older Python will effectively do the same thing we do now `b"".join(...)`

* update tests

* Revert "Late-import base36 and QR code libraries; remove SUPPORT_QR_CODE flag" (#477)

* Avoid os.chmod failing on Windows if file non-existant (#471)

* Avoid os.chmod failing on Windows if file non-existant

* Update accessory_driver.py

---------

Co-authored-by: Ivan Kalchev <[email protected]>

* Fix mdns tests (#478)

* Fix pylint complaints (#480)

* Address remaining pylint complaints (#481)

* Address remaining pylint complaints

* Address remaining pylint complaints

* v4.9.2

---------

Co-authored-by: Aarni Koskela <[email protected]>
Co-authored-by: J. Nick Koston <[email protected]>
Co-authored-by: Perry Kundert <[email protected]>
Co-authored-by: Ivan Kalchev <[email protected]>
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.

2 participants