592
Hexed by async (fed.dyne.org)
all 15 comments
sorted by: hot top controversial new old
[-] osef897@lemmy.world 51 points 2 months ago

Promise.resolve('haha, good one');

[-] naught@sh.itjust.works 19 points 2 months ago

asyncio.run(easy_peasy())

[-] pimeys@lemmy.nauk.io 46 points 2 months ago

That's why you write your protocol as a sync library, then implement the async IO separately and mapping the data over the protocol modules.

[-] shikogo@pawb.social 36 points 2 months ago

I... Don't know what this means

[-] pimeys@lemmy.nauk.io 45 points 2 months ago

So basically your typical network protocol is something that converts an async stream of bytes into things like Postgres Row objects. What you do then is you write a synchronous library that does the byte conversion, then you write an asynchronous library that talks with the database with async functions, but most of the business logic is sync for converting the data coming from the async pipe.

Now, this can also be done in a higher level application. You do a server that is by nature async in 2024. Write the server part in async, and implement a sync set of mapping functions which take a request coming in and returns a response. This can be sync. If you need a database, this sync set of functions maps a request to a database query, and your async code can then call the database with the query. Another set of sync functions maps the database result into http response. No need to color everything async.

The good part with this approach is that if you want to make a completely sync version of this library or application, you just rewrite the async IO parts and can reuse all the protocol business logic. And you can provide sync and async versions of your library too!

[-] azimir@lemmy.ml 10 points 2 months ago

This approach is so much nicer than the threading/queuing approaches we used to have. One async showed up, a ton of the work go pulled out of protocol handing and distributed subsystem sync efforts.

Long lived the multi threaded C++ server buffer! Today, async beging to rule the roost.

[-] pimeys@lemmy.nauk.io 4 points 2 months ago

It kind of fails with certain protocols. I once wrote an async MSSQL client for Rust, and some data doesn't say its size in the headers. So this kind of forced the business logic to be async too.

[-] azimir@lemmy.ml 3 points 2 months ago

Yeah, those durn data size fields. At first you're like "why would you do this? It's specified in the spec, right?" Then you start consuming the data stream and go "oh, yeah need this".

I was doing some driver work for a real time location tracking board. The serial stream protocol was very well documented and designed. Plenty of byte length count fields, though.

[-] jaybone@lemmy.world 10 points 2 months ago

What is computer science degree?

[-] pimeys@lemmy.nauk.io 13 points 2 months ago

Never had one, just partied in the uni and dropped out :D

[-] jaybone@lemmy.world 7 points 2 months ago
[-] astrsk@fedia.io 6 points 2 months ago

Or just make a bunch of static helpers >:)

[-] bitfucker@programming.dev 6 points 2 months ago

Long live sans io!

this post was submitted on 24 Aug 2024
592 points (100.0% liked)

Programmer Humor

32387 readers
605 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS