dragonscave.space is one of the many independent Mastodon servers you can use to participate in the fediverse.
A fun, happy little Mastodon/Glitch instance.

Server stats:

240
active users

#csharp

10 posts10 participants1 post today
Ian Badcoe<p><a href="https://peoplemaking.games/tags/GameDev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GameDev</span></a> <a href="https://peoplemaking.games/tags/Godot" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Godot</span></a> <a href="https://peoplemaking.games/tags/CSharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSharp</span></a> <a href="https://peoplemaking.games/tags/Async" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Async</span></a> <a href="https://peoplemaking.games/tags/Promise" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Promise</span></a> </p><p>I used to know how C# Tasks worked, I swear, but I spent half of yesterday trying to chain three simple tasks together with no luck.</p><p>So I Nugetted a Promise library instead and had it working in 10 minutes...</p>
patricus<p><a href="https://mstdn.social/tags/java" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>java</span></a> should be replaced with .net and <a href="https://mstdn.social/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> just because it's slow, and is more bloated than entire 3 games running in parallel.</p>
Jobs for Developers<p>Mobileye is hiring Senior Software Engineer</p><p>🔧 <a href="https://mastodon.world/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> <a href="https://mastodon.world/tags/cplusplus" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cplusplus</span></a> <a href="https://mastodon.world/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> <a href="https://mastodon.world/tags/java" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>java</span></a> <a href="https://mastodon.world/tags/javascript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>javascript</span></a> <a href="https://mastodon.world/tags/python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>python</span></a> <a href="https://mastodon.world/tags/flask" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>flask</span></a> <a href="https://mastodon.world/tags/react" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>react</span></a> <a href="https://mastodon.world/tags/node" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>node</span></a> <a href="https://mastodon.world/tags/express" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>express</span></a> <a href="https://mastodon.world/tags/ansible" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ansible</span></a> <a href="https://mastodon.world/tags/aws" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>aws</span></a> <a href="https://mastodon.world/tags/docker" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>docker</span></a> <a href="https://mastodon.world/tags/awsec2" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>awsec2</span></a> <a href="https://mastodon.world/tags/elasticsearch" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>elasticsearch</span></a> <a href="https://mastodon.world/tags/json" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>json</span></a> <a href="https://mastodon.world/tags/mysql" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mysql</span></a> <a href="https://mastodon.world/tags/nosql" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>nosql</span></a> <a href="https://mastodon.world/tags/postgresql" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>postgresql</span></a> <a href="https://mastodon.world/tags/redis" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>redis</span></a> <a href="https://mastodon.world/tags/terraform" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>terraform</span></a> <a href="https://mastodon.world/tags/seniorengineer" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>seniorengineer</span></a><br>🌎 Jerusalem, Israel<br>⏰ Full-time<br>🏢 Mobileye</p><p>Job details <a href="https://jobsfordevelopers.com/jobs/senior-software-engineer-at-mobileye-com-jan-5-2025-fc860d?utm_source=mastodon.world&amp;utm_medium=social&amp;utm_campaign=posting" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">jobsfordevelopers.com/jobs/sen</span><span class="invisible">ior-software-engineer-at-mobileye-com-jan-5-2025-fc860d?utm_source=mastodon.world&amp;utm_medium=social&amp;utm_campaign=posting</span></a><br><a href="https://mastodon.world/tags/jobalert" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jobalert</span></a> <a href="https://mastodon.world/tags/jobsearch" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jobsearch</span></a> <a href="https://mastodon.world/tags/hiring" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hiring</span></a></p>
Steve Love<p>I'm proud to announce that my book C# Brain Teasers has now been released! </p><p>21 puzzles for C# programmers of all levels of experience joins the <a href="https://mastodon.social/tags/brainteasers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>brainteasers</span></a> collection from <span class="h-card" translate="no"><a href="https://techhub.social/@pragprog" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>pragprog</span></a></span> </p><p><a href="https://pragprog.com/titles/csharpbt/c-brain-teasers/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pragprog.com/titles/csharpbt/c</span><span class="invisible">-brain-teasers/</span></a></p><p><a href="https://mastodon.social/tags/dotnet" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dotnet</span></a> <a href="https://mastodon.social/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> <a href="https://mastodon.social/tags/brainteasers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>brainteasers</span></a> <a href="https://mastodon.social/tags/exerciseyourmind" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>exerciseyourmind</span></a></p>
Chris Woody Woodruff<p>Day 15 of learning Rust as a C# dev:</p><p>No classes. No inheritance. No constructors.</p><p>Rust structs keep it simple and make you rethink how much you really need.</p><p>Here’s why less is more:<br><a href="https://woodruff.dev/rust-structs-vs-c-classes-less-is-more/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">woodruff.dev/rust-structs-vs-c</span><span class="invisible">-classes-less-is-more/</span></a></p><p><a href="https://mastodon.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustLang</span></a> <a href="https://mastodon.social/tags/CSharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSharp</span></a> <a href="https://mastodon.social/tags/DotNet" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DotNet</span></a> <a href="https://mastodon.social/tags/LearnRust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LearnRust</span></a> <a href="https://mastodon.social/tags/RustForCSharpDevs" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RustForCSharpDevs</span></a></p>
Alvin Ashcraft<p>DotnetSnes - A library allowing the use of C# to create SNES roms. <a href="https://buff.ly/LI4UpE3" rel="nofollow noopener" target="_blank">buff.ly/LI4UpE3</a> <a class="hashtag" href="https://bsky.app/search?q=%23gamedev" rel="nofollow noopener" target="_blank">#gamedev</a> <a class="hashtag" href="https://bsky.app/search?q=%23dotnet" rel="nofollow noopener" target="_blank">#dotnet</a> <a class="hashtag" href="https://bsky.app/search?q=%23csharp" rel="nofollow noopener" target="_blank">#csharp</a> <a class="hashtag" href="https://bsky.app/search?q=%23snes" rel="nofollow noopener" target="_blank">#snes</a><br><br><a title="GitHub - KallDrexx/DotnetSnes: Library allowing to use C# to create SNES roms" href="https://buff.ly/LI4UpE3" rel="nofollow noopener" target="_blank">GitHub - KallDrexx/DotnetSnes:...</a></p>
Alvin Ashcraft 🐿️<p>DotnetSnes - A library allowing the use of C# to create SNES roms.</p><p><a href="https://github.com/KallDrexx/DotnetSnes" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/KallDrexx/DotnetSne</span><span class="invisible">s</span></a> </p><p><a href="https://hachyderm.io/tags/gamedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gamedev</span></a> <a href="https://hachyderm.io/tags/dotnet" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dotnet</span></a> <a href="https://hachyderm.io/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> <a href="https://hachyderm.io/tags/snes" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>snes</span></a></p>
Tomas Ekeli<p><span>I miss the trailing commas from </span><a href="https://plud.re/tags/python" rel="nofollow noopener" target="_blank">#python</a><span> when going back to </span><a href="https://plud.re/tags/csharp" rel="nofollow noopener" target="_blank">#csharp</a></p>
DelegateVoid<p>It still surprises me, in 2025, that people are still surprised that C# can be used on <a href="https://mastodon.gamedev.place/tags/mcu" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mcu</span></a>, <a href="https://mastodon.gamedev.place/tags/soc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>soc</span></a>, <a href="https://mastodon.gamedev.place/tags/desktop" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>desktop</span></a>, <a href="https://mastodon.gamedev.place/tags/server" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>server</span></a>, etc....<br>Just the other day I was in a meeting with an <a href="https://mastodon.gamedev.place/tags/android" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>android</span></a> <a href="https://mastodon.gamedev.place/tags/sbc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>sbc</span></a> vendor and they were completely taken by surprise that we don't just a lot of <a href="https://mastodon.gamedev.place/tags/java" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>java</span></a> but mostly <a href="https://mastodon.gamedev.place/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a>. It's like people get out of school with the knowledge they have and never learn anything new.</p>
Jobs for Developers<p>MongoDB is hiring Senior Software Engineer, ADF</p><p>🔧 <a href="https://mastodon.world/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> <a href="https://mastodon.world/tags/cplusplus" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cplusplus</span></a> <a href="https://mastodon.world/tags/golang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>golang</span></a> <a href="https://mastodon.world/tags/java" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>java</span></a> <a href="https://mastodon.world/tags/aws" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>aws</span></a> <a href="https://mastodon.world/tags/azure" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>azure</span></a> <a href="https://mastodon.world/tags/gcp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gcp</span></a> <a href="https://mastodon.world/tags/mongodb" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mongodb</span></a> <a href="https://mastodon.world/tags/seniorengineer" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>seniorengineer</span></a><br>🌎 Seattle, Washington<br>⏰ Full-time<br>🏢 MongoDB</p><p>Job details <a href="https://jobsfordevelopers.com/jobs/senior-software-engineer-adf-at-mongodb-com-oct-31-2024-43f8fb?utm_source=mastodon.world&amp;utm_medium=social&amp;utm_campaign=posting" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">jobsfordevelopers.com/jobs/sen</span><span class="invisible">ior-software-engineer-adf-at-mongodb-com-oct-31-2024-43f8fb?utm_source=mastodon.world&amp;utm_medium=social&amp;utm_campaign=posting</span></a><br><a href="https://mastodon.world/tags/jobalert" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jobalert</span></a> <a href="https://mastodon.world/tags/jobsearch" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jobsearch</span></a> <a href="https://mastodon.world/tags/hiring" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hiring</span></a></p>
Alexandre Mutel<p>Adding unit tests 🧪 for my wrapper library around Skia, and it gives a really smooth workflow to create such unit tests. With Verify from <span class="h-card" translate="no"><a href="https://hachyderm.io/@simoncropp" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>simoncropp</span></a></span> (I recommend! 🚀), the Verify ReSharper extension and Beyond Compare, I can quickly look at a Visual 🖼️ diff if things are incorrectly rendered, directly from the IDE. Super smooth! 🤩 </p><p><a href="https://mastodon.social/tags/dotnet" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dotnet</span></a> <a href="https://mastodon.social/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a></p>
JaykeBird<p>I feel like I don't understand the point of required properties in <a href="https://dotnet.social/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> (as in, the "required" keyword, like `public required string Value { get; set; }`). Couldn't one just put those values in a constructor (especially if you use a primary constructor)?</p>
Hugh Phœnix-Hulme<p>Released new <a class="hashtag" href="https://bsky.app/search?q=%23box2d" rel="nofollow noopener" target="_blank">#box2d</a> 3.1 bindings on <a class="hashtag" href="https://bsky.app/search?q=%23nuget" rel="nofollow noopener" target="_blank">#nuget</a> today for <a class="hashtag" href="https://bsky.app/search?q=%23csharp" rel="nofollow noopener" target="_blank">#csharp</a> <a class="hashtag" href="https://bsky.app/search?q=%23fsharp" rel="nofollow noopener" target="_blank">#fsharp</a> <a class="hashtag" href="https://bsky.app/search?q=%23visualbasic" rel="nofollow noopener" target="_blank">#visualbasic</a> <a class="hashtag" href="https://bsky.app/search?q=%23dotnet" rel="nofollow noopener" target="_blank">#dotnet</a> Box2D 3.1 has breaking changes over 3.0 and so does my package. Sorry. Loads of fixes, though! <a class="hashtag" href="https://bsky.app/search?q=%23gamedev" rel="nofollow noopener" target="_blank">#gamedev</a> <a class="hashtag" href="https://bsky.app/search?q=%23indiedev" rel="nofollow noopener" target="_blank">#indiedev</a><br><br><a href="https://www.nuget.org/packages/HughPH.Box2D/2025.3.10.2104" rel="nofollow noopener" target="_blank">HughPH.Box2D 2025.3.10.2104</a></p>
🐤 Joanna :ablobcatrave:<p>Chickensoft administrator <span class="h-card" translate="no"><a href="https://mastodon.gamedev.place/@mrkwlsn" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>mrkwlsn</span></a></span> will be speaking at <a href="https://mastodon.online/tags/GodotCon" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GodotCon</span></a> 2025 on Enjoyable Game Architecture with <a href="https://mastodon.online/tags/godot" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>godot</span></a> and <a href="https://mastodon.online/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a>! If you're also attending, stop by and say hi!</p><p><a href="https://mastodon.online/tags/godot" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>godot</span></a> <a href="https://mastodon.online/tags/indiedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>indiedev</span></a> <a href="https://mastodon.online/tags/gamedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gamedev</span></a></p><p><a href="https://chickensoft.games/blog/godotcon-2025" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">chickensoft.games/blog/godotco</span><span class="invisible">n-2025</span></a></p>
Edaqa Mortoray<p>I wonder how a dumb term managed to become a true version label.</p><p><a href="https://peoplemaking.games/tags/mono" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mono</span></a> <a href="https://peoplemaking.games/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> <a href="https://peoplemaking.games/tags/unity" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>unity</span></a></p>
Norwescon<p>Lights, music, action - Friday night at <a href="https://social.seattle.wa.us/tags/nwc47" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>nwc47</span></a> is here! Time to shake off the serious and embrace the spotlight. Whether you’re a rockstar in the making or a diva at heart, DJ <a href="https://social.seattle.wa.us/tags/CSharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSharp</span></a> hosts an electrifying karaoke extravaganza starting at 8 p.m in Maxi's. Don’t worry, liquid courage will be available. Not into singing? Slide into the glow of the Blacklight Ball with mc300baud at 9:30 p.m. in Grand 2 &amp; 3. Dance your heart out under neon lights, where the music isn't the only thing that shines!</p>
D. Moonfire<p><span class="h-card"><a href="https://mastodon.social/@maxitb" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>maxitb</span></a></span> I find that MSDI is good enough for 80% of my work but the more complex setups are painful.</p><p>Modular setups is the biggest reason I've defaulted to Autofac. MSDI doesn't have a baked in method for "and include DI from this project". There are extension libraries that do it but not in the core. Nor ones that give me options to extend registrations (like adding CLI commands from an assembly) or replace (having default services, then replacing them with mock or test ones).</p><p>Mostly I use that to have a single point of setup. In Nitride (my ecs ssg), I have extension methods to pull in features like Gemini, feeds, or front matter processing.</p><p>The second reason is because I do a lot of registration by interfaces. In Nitride, all of the operations are pulled in by reflection so I don't have to list each one. Autofac makes that easy, MSDI requires another library to do that.</p><p>Third is partial DI. I like Autofac's delegate handling that let's me provide some parameters for a service but then use DI for the others constructor parameters. I'm not aware of a MSDI library that does that but I know verbose techniques to do it. That let's me create a service that takes a UserId and have it passed into the constructor along with ILogger and other DI injected components.</p><p>Fourth is ascetics (much like my frustration with MS logging). MSDI's method calls are verbose on the consumption side but terse on the registration. I prefer the reverse.</p><p>Ultimately, I don't enjoy using MSDI as much as Autofac. I'm trying to convince myself to accept MSDI but I find I keep hitting its limitations or have to jump though excessive hoops compared to Autofac (such as setting up unit testing, nested scopes). And if I have to use a library to get the features I want, it seems logical to use one library that does everything cohesively across all my projects instead of making that choice per project.</p><p>That all said, I'm still trying to write my CLI library to only use MSDI and MSL (because I prefer Serilog also for the same reasons). It is painful but also a chance to see if the DX has improved since last time.</p><p><a href="https://polymaths.social/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSharp</span></a></p>
Edaqa Mortoray<p>I find C#'s features to always somehow be incomplete. For example, I can declare a class without a constructor, like below, and use new HandInfo{... to create with names. However, it doesn't work nullable: enable, thus I have to revert back to manually creating a constructor.</p><p><a href="https://peoplemaking.games/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a></p>
D. Moonfire<p>Played a few hours of <em>Palworld</em> with Child.0.</p><p>Also worked on my C# CLI parsing library. Mostly I worked out some ideas and patterns to make sure they fit. One implementation I'm doing is based on C#'s XElement pattern:</p><pre><code>var root = new ComponentCliCommand( new ValueCliOption&lt;string&gt;("option"), new ValueCliOption&lt;int&gt;('n', "number"), new SwitchCliOption("help"), new CliHandler(_ =&gt; Console.WriteLine("I ran a command!")); </code></pre><p>Since the entire purpose is to make this DI-friendly and also Autofac-module friendly, all of the classes and subclasses can be extended and then added into the service provider.</p><pre><code>public RootCommand(IEnumerable&lt;IMyLocalVerbs&gt; verbList, CurrentDateOption currentDateOption) : base(currentDateOption) { this.AddRange(verbList); } </code></pre><p>So far, the pattern seems "reasonable"?</p><p>I can also easily convert a reflection-based version of the command and convert them into components, which would let me do a CommandLineParser-style command object. And the handler (<code>CliHandler</code>) doesn't have to be in the same class (though I prefer it does).</p><p><a href="https://polymaths.social/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSharp</span></a></p>
Felix Palmen :freebsd: :c64:<p>Today, I implemented the <a href="https://mastodon.bsd.cafe/tags/async" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>async</span></a> / <a href="https://mastodon.bsd.cafe/tags/await" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>await</span></a> pattern (as known from <a href="https://mastodon.bsd.cafe/tags/csharp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csharp</span></a> and meanwhile quite some other languages) ...</p><p>... in good old <a href="https://mastodon.bsd.cafe/tags/C" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>C</span></a>! 😎 </p><p>Well, at least sort of.</p><p>* It requires some standard library support, namely <a href="https://mastodon.bsd.cafe/tags/POSIX" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>POSIX</span></a> user context switching with <a href="https://mastodon.bsd.cafe/tags/getcontext" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>getcontext</span></a> and friends, which was deprecated in POSIX-1.2008. But it's still available on many systems, including <a href="https://mastodon.bsd.cafe/tags/FreeBSD" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FreeBSD</span></a>, <a href="https://mastodon.bsd.cafe/tags/NetBSD" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NetBSD</span></a>, <a href="https://mastodon.bsd.cafe/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> (with <a href="https://mastodon.bsd.cafe/tags/glibc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>glibc</span></a>). It's NOT available e.g. on <a href="https://mastodon.bsd.cafe/tags/OpenBSD" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenBSD</span></a>, or Linux with some alternative libc.</p><p>* I can't do anything about the basic language syntax, so some boilerplate comes with using it.</p><p>* It has some overhead (room for extra stacks, even extra syscalls as getcontext unfortunately also always saves/restores the signal mask)</p><p>But then ... async/await in C! 🥳 </p><p>Here are the docs:<br><a href="https://zirias.github.io/poser/api/latest/class_p_s_c___async_task.html" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">zirias.github.io/poser/api/lat</span><span class="invisible">est/class_p_s_c___async_task.html</span></a></p><p><a href="https://mastodon.bsd.cafe/tags/C" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>C</span></a> <a href="https://mastodon.bsd.cafe/tags/coding" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>coding</span></a></p>