Items tagged with: development

Search

Items tagged with: development


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.

#opensource #development #bugstories


Poll: How many screens do you work with? πŸ–₯️

Vote + Boost πŸ” = ❀️

(Feel free to reply with how this setup helps you πŸ‘‡)

#Linux #Arch #LinuxMint #Fedora #Debian #Ubuntu #Desktop #FOSS #Privacy #Security #OpenSource #Microsoft #Windows #TechNews #CyberSecurity #Tech #Technology #Apple #OS #iOS #MacOS #OperatingSystem #Monitor #Monitors #Screen #Screens #TV #OLED #2k #4k #HD #Job #Work #Productivity #Multitasking #Dev #DevOps #Development #Developers #DevLife #SysAdmin #TechCommunity

  • 🧍 Just 1 screen (0 votes)
  • πŸ§‘β€πŸ’» Dual setup (2) (0 votes)
  • 🧠 Triple or more (0 votes)
Poll end: 1 week ago


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




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


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…



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…


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.”

archive.is/okSlz

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)

#Code #Dev #Development #Codeberg #GitLab #Fascism #GIT




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


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…


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 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…


#Naev #Accessibility #Blind #Game #Development - Hi. These guys would like to make their game accessible for us. Do me a personal favour, jump on the topic and bring in your individual expertise. Wether you are a coder, audio designer or just an ordinary blind player who knows about the mechanics needed for an accessible game, jump in and help us. I whent to their #Discord server and just asked, if there is a chance, making the game accessible at all. and now, see, they put up the Github proposal. Would like to see this really happen. Thanks for your support. github.com/naev/naev/issues/26…


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


This year's Nobel Prize in Economics is timely, given the challenges faced by democratic institutions, particularly in industrialized countries.
theconversation.com/nobel-econ…
#economics #colonialism #development



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! πŸ›¬

#Thunderbird #Development #OpenSource

blog.thunderbird.net/2024/10/t…


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! πŸ’ͺ

#Thunderbird #Android #Development

blog.thunderbird.net/2024/09/t…


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. πŸ—“οΈ

#Thunderbird #OpenSource #Development

blog.thunderbird.net/2024/09/t…


Potentially way too late (as usual), but I've just released #TouchBarSpeak: an app that speaks the name of escape and F1–F12 keys when they're pressed once, and actually activates them when they're pressed twice quickly.
Originally called NSFKeys, and originally made as an experiment during the Intel Macbook/Touch Bar/Boot Camp era, rewritten this month, the app is meant to make using a touch bar on Windows more accessible.
Maybe it could still be useful?
I have also updated Capbeeper, fixing the double tray menu open bug, featuring slight sound volume adjustments, and (thanks to TouchBarSpeak), the β€œRun as admin” feature/option, accessible from the systray menu.
I hope any of this is useful, if it sounds like so, feel free to check things out.
nsstudiosweb.com/programs.php
#touchBar #touchBarLove #a11y #freeApps #development
#EnneNews



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



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



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


Developers πŸ‘ Developers πŸ‘ Developers πŸ‘ Developers! Did you know that you can embed #LibreOffice into your applications? Find out more on our dev blog: dev.blog.documentfoundation.or… #foss #opensource #coding #development


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


[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


We've got a Thunderbird for Android/K-9 Progress Report for May, coming in hot! πŸ”₯

βœ… Material 3 Updates
βœ… Android 14 Targeting
βœ… Good News Re: F-Droid Metadata

...and more, including Community Contributions! Check it out on the Thunderbird Blog: blog.thunderbird.net/2024/06/t…

#Thunderbird #Android #Development

⇧