Upcomming release 0.0.11 #10
sjlongland
announced in
Announcements
Replies: 1 comment
-
If you see |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi all,
I'll probably be making a new release shortly but would appreciate some feedback before I do so. In the previous release, we gained support for TCP-connected TNCs thanks to @hemna submitting PR #7. There's also been interest in supporting serial devices on the Microsoft Windows platform as evidenced by PR #5.
Re-worked asynchronous I/O
I had a moment to have a close look at the
asyncio
streaming frameworks, and so have re-jigged things in thekiss-protocol
branch, which should better accommodate these needs:KISSProtocol
andKISSSubprocessProtocol
have been implemented to pass the serial data received from a connection stream back to theBaseKISSDevice
class. This should allow us to support many more varieties of connection in the future.SerialKISSDevice
is now based onpyserial_asyncio
. Older versions of this are still limited to POSIX platforms, but apparently newer versions do work on the Microsoft Windows platform, testing and feedback on this would be appreciated.TCPKISSDevice
has been re-worked to useasyncio.create_connection
rather than usingsocket
directly, which again should perform better cross-platform.SubprocKISSDevice
which can pass KISS frames viastdin
/stdout
to a subprocess.I've tested these on Linux,
SerialKISSDevice
using a NULL-modem cable to a PocketBeagle running an olderaioax25
-based application, and also bothTCPKISSDevice
andSubprocKISSDevice
usingsocat
. This seemed to be working as expected.Python 3.4 support dropped
One downside is that with the upcoming removal of
asyncio.coroutine
, we have to say goodbye to Python 3.4.I was reluctant to do this at first as it seemed I could largely avoid using coroutines in the code if I was careful about how I wrote it, but after a few attempts, I realised it was going to be a bigger burden than I wanted to carry for a hobby side project. Reviewing the minimum requirements for Python 3.5, it looks as if we don't lose many platforms: older Linux installs and Windows XP being the two notable platforms that use Python 3.4.
I was under the impression that Mac may have been affected, but it seems OS X 10.6 and later can still run the latest versions. I wasn't sure what other platforms also relied on this release… it would appear not many. Python 3.3 (which we never supported) culled a lot of legacy platforms.
Most versions of BSD are shipping recent Python versions (OpenBSD 6.9 ships with Python 3.8), and while the latest Python has dropped support for Windows 7 & 8, users of those platforms can still run Python 3.8 (which is at least getting security fixes).
Future plans
Connected-mode AX.25 is still something I wish to pursue, following that is to maybe implement Net/ROM. We can either clean-room implement it from specifications (which seem to be scarce these days), or one other option may be to port the Linux kernel's AX.25 stack to Python, since it, like
aioax25
, is GPLv2 licensed.There are some long-standing bugs in the Linux kernel stack though, and so doing such a port may provide some insight as to what might be causing the bugs there with a view to fixing the kernel issues in the process.
As always, if people have ideas or feedback, feel free to share here.
Beta Was this translation helpful? Give feedback.
All reactions