Call for papers β BSDCan
BSDCan is a technical BSD conference held in Ottawa, Ontario, Canada.www.bsdcan.org
BSDCan is a technical BSD conference held in Ottawa, Ontario, Canada.www.bsdcan.org
Parsing integers in C. Aka "bye bye atoi".
daniel.haxx.se/blog/2025/11/13β¦
In the standard libc API set there are multiple functions provided that do ASCII numbers to integer conversions. They are handy and easy to use, but also error-prone and quite lenient in what they accept and silently just swallow.daniel.haxx.se
As it happens, we still use CVS in our operating system project (there are reasons for doing this, but migration to git would indeed make sense).
While working on our project, we occasionally have to do a full checkout of the whole codebase, which is several gigabytes. Over time, this operation has gotten very, very, very slow - I mean "2+ hours to perform a checkout" slow.
This was getting quite ridiculous. Even though it's CVS, it shouldn't crawl like this. A quick build of CVS with debug symbols and sampling the "cvs server" process with Linux perf showed something peculiar: The code was spending the majority of the time inside one function.
So what is this get_memnode() function? Turns out this is a support function from Gnulib that enables page-aligned memory allocations. (NOTE: I have no clue why CVS thinks doing page-aligned allocations is beneficial here - but here we are.)
The code in question has support for three different backend allocators:
1. mmap
2. posix_memalign
3. malloc
Sounds nice, except that both 1 and 3 use a linked list to track the allocations. The get_memnode() function is called when deallocating memory to find out the original pointer to pass to the backend deallocation function: The node search code appears as:
for (c = *p_next; c != NULL; p_next = &c->next, c = c->next)
if (c->aligned_ptr == aligned_ptr)
break;
The get_memnode() function is called from pagealign_free():
#if HAVE_MMAP
if (munmap (aligned_ptr, get_memnode (aligned_ptr)) < 0)
error (EXIT_FAILURE, errno, "Failed to unmap memory");
#elif HAVE_POSIX_MEMALIGN
free (aligned_ptr);
#else
free (get_memnode (aligned_ptr));
#endif
This is an O(n) operation. CVS must be allocating a huge number of small allocations, which will result in it spending most of the CPU time in get_memnode() trying to find the node to remove from the list.
Why should we care? This is "just CVS" after all. Well, Gnulib is used in a lot of projects, not just CVS. While pagealign_alloc() is likely not the most used functionality, it can still end up hurting performance in many places.
The obvious easy fix is to prefer the posix_memalign method over the other options (I quickly made this happen for my personal CVS build by adding tactical #undef HAVE_MMAP). Even better, the list code should be replaced with something more sensible. In fact, there is no need to store the original pointer in a list; a better solution is to allocate enough memory and store the pointer before the calculated aligned pointer. This way, the original pointer can be fetched from the negative offset of the pointer passed to pagealign_free(). This way, it will be O(1).
I tried to report this to the Gnulib project, but I have trouble reaching gnu.org services currently. I'll be sure to do that once things recover.
So today it is Friday the 13th and apparently I should have stayed in my bed.
Just spent way too much time troubleshooting why the curl requests I got from Firefox by using "copy request to cUrl" did not work. Turns out it is a Firefox bug. For unknown reason it adds a caret "^" before each parameter separator in the query string in the curl request, breaking everything. π
bugzilla.mozilla.org/show_bug.β¦
#firefox #curl #development #bug #fridaythe13th
ASSIGNED (hmanilla) in DevTools - Netmonitor. Last updated 2025-06-12.bugzilla.mozilla.org
You brought your questions to our team, and in the latest State of the Thunder, we're bringing the answers! This discussion covers a wide range of topics, from bringing the new monthly Release channel to Flatpak and Snap to accessibility to UI.
#Development #Reviews
First impressions of Deque Axe Assistant Β· What to expect from the AI accessibility chatbot ilo.im/163tch
_____
#AxeAssistant #AI #Chatbot #Accessibility #WCAG #Design #WebDesign #WebDev #Frontend #HTML
If you've ever wondered how we prioritize the front and backend features on our development roadmap - and how we're going to improve on delivering our highest priority items - the latest State of the Thunder has answers!
I noticed a bug in our binutils port that had been generating semi-randomly broken branch relaxation trampolines for decades.
Why did it take so long to notice this code generation bug? The branch has to reach farther than +-32MB for the branch relaxation trampoline generation to kick in. And even then not all branches were affected (the type of relocation affected it, it had to be in a link library in a specific kind of segment and not in the beginning of it). Finally, for it to actually come into play, the branch had to actually be taken, too.
What did it do wrong then? It added the offset to the target function in the link library .text segment twice. So instead of jumping to the intended function it jumped somewhere random after that. Funnily, the jump might end up hitting some code that did not crash, but did something unintended. For you all non-developer peeps: That is very, very bad.
Fun features of this bug: Since whether the trampoline was generated or not depended on the order of object code and from where the affected call was being made, the bug would pop in and out of existence even on the smallest changes to the code or link libraries. If you know a thing about debugging, this is not very conducive to locating bugs.
Needless to say this one took a lot of head scratching to finally figure out. The fix was a change on a single line.
This bug was old enough to get into bars and drink alcohol legally.
EDIT: Oops, this was supposed to be a reply to this post: infosec.exchange/@harrysintone⦠- so added some context.
#bugstories #bugs #development #coding
Attached: 1 image The feeling when you notice a bug in your binutils port that has been generating semi-randomly broken branch relaxation trampolines for decades. #programming #coding #oopsInfosec Exchange
It's time for another Thunderbird Monthly Development Digest! In this month's issue, we have updates on:
* Upstream changes
* EWS features that have landed in Daily
* Our Calendar UI rebuild
* Global Messaging Database work
* The new Account Hub
#Thunderbird #OpenSource #Development
blog.thunderbird.net/2025/04/tβ¦
Upstream changes, the continuing Calendar UI rebuild, more Exchange features in Daily, Account Hub, Global Message Database updates and more!Toby Pilling (The Thunderbird Blog)
State of the Thunder: Volume 2 is out! In addition to the roadmap, we're talking about bug backlogs and ideas to clear them, cooperation between MZLA and the Thunderbird Council, address book databases, and Thunderbird on the command line:
February may be the shortest month, but the Thunderbird desktop team filled it with updates, improvements, and important conversations. Including:
* What you can find in the new monthly Release channel
* Talks on privacy and security
* What's landed in the Calendar rebuild work and in EWS support on Daily
* The new Account Hub, which you can test this week in Daily!
* Global Message Database and In-App Notification news
#Thunderbird #OpenSource #Development
blog.thunderbird.net/2025/03/tβ¦
Monthly releases are here, the Calendar UI rebuild is underway, more Exchange support features land in Daily - and much more!Toby Pilling (The Thunderbird Blog)
GitLab CFO, Brian Robins, says they are βaligned with the goals of DOGE, because the companyβs software tools aim to help people do more with less. What the Department of Government Efficiency is trying to do is what GitLab does.β
You either support fascism or you donβt. Itβs binary. Thereβs no gray area or βaligning.β
Considering GitLab? Donβt.
Use @Codeberg instead.
(Hat tip @aphyr)
Last week we had our first! Thunderbird + Rust office hours with our back-end developer @brendan and Sr. DevRel Engineer @linuxflower giving us a great introduction to the past, present, and future of oxidization in Thunderbird. Watch the recording on our @tilvids channel and find out how to get involved!
You're invited to our inaugural Thunderbird + Rust Office Hours! Join us on Wednesday, February 19 at 20:00 UTC. Find out all the info on our Developers mailing list: thunderbird.topicbox.com/groupβ¦
Inspecting flamegraphs is a pain - dealing with SVG files, opening a browser⦠ugh.
Not anymore!
π **flamelens** β An interactive flamegraph viewer for the terminal.
π₯ Works with perf, py-spy and cargo-flamegraph.
π¦ Written in Rust & built with @ratatui_rs
β GitHub: github.com/YS-L/flamelens
#rustlang #ratatui #tui #flamegraph #profiling #development #terminal #commandline
Flamegraph viewer in the terminal. Contribute to YS-L/flamelens development by creating an account on GitHub.GitHub
The latest Thunderbird Monthly Development Digest is out! You can read about:
* our experience at FOSDEM
* First Time User Experience in Account Hub
* next steps for the Global Message Database
* improvements to In-App Notifications
* and more!
#Thunderbird #Development #OpenSource
blog.thunderbird.net/2025/02/tβ¦
Conversations at FOSDEM and updates on Exchange, Web Services, Account Hub, the Global Messaging Database, and in-app notifications.Toby Pilling (The Thunderbird Blog)
Now that we're all excited about our iOS job opening, it's a great time to post the Office Hours with our Mobile Team from earlier this month. It's naturally pretty Android heavy, but we do discuss the new role and our plans for iOS!
(At FOSDEM this weekend? Meet our mobile team at our booth in Building K, Level 1!)
#Thunderbird #Development #OpenSource
blog.thunderbird.net/2025/01/vβ¦
The Office Hours Team chat with the Thunderbird Mobile Team to talk about the past and future of Thunderbird for Android development.Monica Ayhens-Madon (The Thunderbird Blog)
roadmap.sh is a community effort to create roadmaps, guides and other educational content to help guide developers in picking up a path and guide their learnings.
Role-based and skill-based roadmaps, project ideas, best practices, and other resources for various areas of development including Frontend, Backend, DevOps, Full Stack, AI, and more.
Po dlouhe dobe jsem otevrel XCode, stahnul SDKcka pro iOS a bohuzel zjistil, ze se ve vyvoji pro iPhony moc nezmenilo. I ve svete Swiftu a SwiftUI resim stejne bizarni problemy jako za dob drevniho mobilniho vyvoje. Ten ekosystem se z pohledu DX vubec nikam neposunul.
Ale ja se nedam! Unreleased v nativni podobe uz brzy na vasich iPhonech!
#music #art #ios #development
The October Thunderbird Monthly Development Digest is out! In it, we have updates on:
* Exchange support π¦
* QR cross-device support π±
* Account hub π₯
* Upstream changes and database issues π οΈ
* and more! β¨
#Thunderbird #Development #OpenSource
blog.thunderbird.net/2024/11/tβ¦
Exchange support and account hub development continues, cross-device import lands in stable, and the fight against corruption endures.Toby Pilling (The Thunderbird Blog)
The age old question.
Am I testing the code, or is the code testing me?
#developerlife #fun #funny #meme #hidethepainharold #coding #programming #softwareengineering #softwaredevelopment #development
Suggestion Adding blind accessibility (not colourblind, full blindness) could be a good goal at not only improving the accessibility for blind users, but for all users in general. I've opened an is...GitHub
Thunderbird for Android 8.0b4 is out and available for testing! Help us test the new subscription funding feature and the QR code Export to Mobile feature, now on the desktop Thunderbird Beta image! For more detailed testing notes, see our mailing list announcement. thunderbird.topicbox.com/groupβ¦ Full release notes: github.com/thunderbird/thunderβ¦
#thunderbird #development #opensource
New: Monthly financial contributions are now possible in the Google Play variant of this app. Help us find out if it works today! https://play.google.com/store/apps/details?id=net.thunderbird.andr...GitHub
US-based Daron Acemoglu, Simon Johnson and James Robinson were recognised for their work on the vast differences in prosperity between nations.The Conversation
Still battling a bit of a cold and headache, but nonetheless let's try to do another Thunderbird live coding session
It's time for the Thunderbird Monthly Development Digest! We have updates on:
* Our Exchange progress
* Account hub development
* Global Database and Conversation View
* In-App Notification
* Source Docs Clean Up
* Cross Device Import
* Battling OAuth Changes
Read the latest and find out what's landing soon! π¬
Nothing unlucky on our calendar today! Just an update on what we've been doing this summer for K-9 Mail/Thunderbird for Android. We have:
* Material 3 updates with screenshots πΌοΈ
* Progress on the move to feature modules β‘οΈ
* A call to help update our docs π
* And community contributions! πͺ
August seems like it just flew by! Catch up on what the Thunderbird Desktop Team has been working on in our latest Developer's Digest. In it, we have:
more Rust! π¦
updates on Exchange and the global database π
news about the upcoming Calendar rebuild. ποΈ
Hello hello Jamers π
π¨ Since our last update, the Jami team has focused on fixing numerous bugs and improving Swarm chats. π
π Want to know more about the jami's #development progress? Read our Dev update 11!
Here's is the link: jami.net/fr/dev-update-11/
#Jami #opensource #P2P #App #PrivacyMatters
Our July Development Digest is out, and we've got some great highlights about the latest 128 Nebula release and upcoming features!
π 128 Nebula! Where to find more info and how to get it.
π§ The Linux System Tray lands at last!
πͺ Exchange in TB Daily
blog.thunderbird.net/2024/07/tβ¦
#Thunderbird #OpenSource #Development
In this month's Thunderbird Development Digest, Alex shares updates on a 25-year-old bug, the Linux system tray, Exchange support, and more.Alessandro Castellani (The Thunderbird Blog)
Hello hello Jamers π
Our team focused on bug fixes, UI enhancements, unit tests implementations. π
π Want to know more about the jami's #development progress? Read our Dev update 10 !
Here is the link: jami.net/dev-update-10/
#Jami #opensource #P2P #App #PrivacyMatters
Thunderbird 128 'Nebula' is out and our blog post has all the details! With Rust under the hood, a clearer Cards View, and a sharper (and more colorful) look, the future is looking fast, organized, and bright. See what's new, what's coming soon, and details on how to try it for yourself!
blog.thunderbird.net/2024/07/wβ¦
#Thunderbird #OpenSource #Development
Thunderbird 128 "Nebula" ushers in significant improvements to our code, stability, and overall user experience. Find out what's new inside!Jason Evangelho (The Thunderbird Blog)
Hello Jamersπ
Jami's #development is progressing π , with our #developers concentrating on improving small fixes to the user interface.
π Want to know more about the jami's #development progress? Read our Dev update 9 !
Here is the link: jami.net/dev-update-9/
#Jami #opensource #P2P #App #PrivacyMatters
Jami's development is progressing, with our developers concentrating on improving small fixes to the user interface.jami (Jami)
The June Development Digest is here, with updates right before the release of the new ESR next week! We're keeping things short and sweet, and so read on for:
π So Many Bug Fixes
π¨ Account Colors - Finally!
π Sync Updates
π One More Beta Appeal
blog.thunderbird.net/2024/07/tβ¦
#Thunderbird #Development #OpenSource
ESR is almost here! In the new Thunderbird Development Digest: Account colors, Mozilla Sync, and the Thunderbird 128 beta.Alessandro Castellani (The Thunderbird Blog)
LibreOffice functionality can be used through UNO API, which is several years old, and provides many functionalities of LibreOffice through network or sockets. But the API is not helpful if you want to have the LibreOffice UI in your application.Hossein Nourikhah (LibreOffice Development Blog)
Hello Hello jamers π
π¨Since our last interaction, the Jami #team has focused on enhancing the user experience. We have prioritized improvements and bug fixes that will make a positive difference in your day-to-day use.
π Want to know more about the jami's #development progress? Read our Dev update 8 !
Here is the link : jami.net/dev-update-8/
#Jami #opensource #P2P #App #PrivacyMatters
Since our last interaction, the Jami team has focused on enhancing the user experience. We have prioritized improvements and bug fixes that will make a positive difference in your day-to-day use.jami (Jami)
[Video and PDF presentation now available at the blog link below!]
Our last Office Hours session was an inside look at Thunderbird's build and release process. Wayne and Daniel ran through an informative presentation, answered questions, and treated us to live demos showing how a new Thunderbird build gets pushed and promoted to release.
Check it out: blog.thunderbird.net/2024/06/mβ¦
#Thunderbird #Community #Development
Wayne and Daniel shed light on Thunderbird's build and release process, run through an informative presentation, and treat us to a live demo.Jason Evangelho (The Thunderbird Blog)