Andy Wingo: i accidentally a scheme

Good evening, dear hackfriends. Tonight’s missive is an apology: not
quite in the sense of expiation, though not quite
not that, either; rather, apology in the sense of explanation, of
exegesis: apologia. See, I accidentally made a Scheme. I know I have
enough Scheme implementations already, but I went and made another one.
It’s for a maybe good reason, though!

one does not simply a scheme

I feel like we should make this the decade of leaning into your problems,
and I have a Scheme problem, so here we are. See, I co-maintain
Guile, and have been noodling on a new
garbage collector (GC) for Guile,
Whippet. Whippet is designed to be
embedded in the project that uses it, so one day I hope it will be just
copied into Guile’s source tree, replacing the venerable
BDW-GC that we currently use.

The thing is, though, that GC implementations are complicated. A bug in
a GC usually manifests itself far away in time and space from the code
that caused the bug. Language implementations are also complicated, for
similar reasons. Swapping one GC for another is something to be done
very carefully. This is even more the case when the switching cost is
high, which is the case with BDW-GC: as a collector written as a library
to link into “uncooperative”
programs, there is more cost to moving to a conventional collector than
in the case where the embedding program is already aware that (for
example) garbage collection may relocate objects.

So, you need to start small. First, we need to prove that the new GC
implementation is promising in some way
, that it might improve on
BDW-GC. Then… embed it directly into Guile? That sounds like a bug
farm. Is there not any intermediate step that one might take?

But also, how do you actually test that a GC algorithm or
implementation is interesting? You need a workload, and you need the
ability to compare the new collector to the old, for that workload. In
Whippet I had been writing some benchmarks in C
(example),
but this approach wasn’t scaling: besides not sparking joy, I was
starting to wonder if what I was testing would actually reflect usage in
Guile.

I had an early approach to rewrite a simple language implementation like
the other Scheme implementation I made to demonstrate JIT code
generation in
WebAssembly
,
but that soon foundered against what seemed to me an unlikely rock: the
compiler itself. In my wasm-jit
work, the “compiler” itself was in C++, using the C++ allocator for
compile-time allocations, and the result was a tree of AST nodes that were
interpreted at run-time. But to embed the benchmarks in Whippet itself
I needed something C, which is less amenable to abstraction of any
kind… Here I think I could have made a different choice: to somehow
allow C++ or something as a dependency to write tests, or to do more
mallocation in the “compiler”…

But that wasn’t fun. A lesson I learned long ago is that if something
isn’t fun, I need to turn it into a compiler. So I started writing a
compiler to a little bytecode VM, initially in C, then in Scheme because
C is a drag and why not? Why not just generate the bytecode C file from
Scheme? Same dependency set, once the C file is generated. And then,
as long as you’re generating C, why go through bytecode at all? Why not
just, you know, generate C?

after all, why not? why shouldn’t i keep it?

And that’s how I accidentally made a
Scheme, Whiffle. Tomorrow I’ll write a little
more on what Whiffle is and isn’t, and what it’s doing for me. Until
then, happy hacking!

New language: Arabic

The F-Droid website is now also available in the Arabic language. Thanks for
everyone that contributed! While the website is translated, there are still
some other components that are currently in progress. Those interested in
contributing to F-Droid’s contribution efforts, are encouraged to contribute
via Weblate.

If you happen to spot any areas of our website that are not yet translated
or encounter any translation issues, please join our official F-Droid
Translators Channels to discuss
further more!

Futbol Topu Oldum – Rocket League 3v3 /w Youtubers

Gitaristv: https://www.youtube.com/channel/UCWIhR0c9M6i5bT7v_1UMh7Q
Takım Elbiseli : https://www.youtube.com/channel/UCMs5s4cG-i6qINxKDhutfcg
Minecraft Diğer Harika Modları İçin Tıkla
— Handaşlar Desteklerinizden Dolayı Çok Teşekkür Ederim Hepinizi Çok Seviyorum İyi Seyirler ¦
— Daha Fazla Oyun Videosu İstiyorsanız Handaşlar Like Atmayı Unutmayın ¦
— Değerli Yorumlarınızı Bekliyorum Handaşlar ¦
Ayrıcalıklardan yararlanmak için bu kanala katılın:
https://www.youtube.com/channel/UCpcHFJwDFlrnbCw3yD-4Wzg/join

CANIM HANDAŞ AİLEM BİZLERİ DESTEKLEDİĞİNİZ HER GÜN GELEN VİDEOLARIMIZI İZLEYİP LİKE ve YORUM ATTIĞINI İÇİN HEPİNİZE SONSUZ TEŞEKKÜR EDİYORUM.
SİZLER SAYESİNDE BURADAYIZ VE SİZLER SAYESİNDE HEDEFİMİZE ULAŞACAĞIZ 10 MİLYON HANDAŞ AİLESİNE ULAŞMAK İÇİN ELİMİZDEN GELENİ YAPACAĞIZ.
SİZLERDE HANDAŞ AİLEMİZE KATILMAYI VE BİZLERE DESTEK VERMEYİ LÜTFEN UNUTMAYIN
—————————————————————————————————————————————-
– SOSYAL MEDYA HESAPLARIM –
-Discord : https://discord.gg/sttQ7WUJ
– Katılmak için: https://bit.ly/3w2a5TV
-İnstagram : https://bit.ly/37ftx50
-Tiktok : https://bit.ly/3CEky95
-2.Kanal : https://bit.ly/3hZrggC
– HAN KANAL DİĞER VİDEO SERİLERİM –
– PoppyPlayTime: https://bit.ly/3JdC9r1
– Roblox: https://bit.ly/3KC7kfZ
—————————————————————————————————————————————-

Let us compete on trustworthiness and an Arcticons special release

TWIF generated on Thursday, 09 Nov 2023, Weeks 45 & 44

F-Droid core

Let us compete on trustworthiness

This Thursday, 10 jurors were selected in San Francisco. Their verdict – which is expected around mid-December – could change the way Google controls apps and their distribution. This is a result of the suit filed by Epic Games against Google in 2020 over the monopoly held by the Google Play Android app store and its abuse in stifling the competition.

This is something that resonates with F-Droid and the wider FLOSS community. Despite Google’s claims of choice on Android and Google Play, Google still ensures that using all alternatives to Google Play is a second-class experience. It allegedly restricts device makers and wireless carriers that want to sell phones and tablets with the official version of its Android operating system from promoting app stores beside Play. It has also barred developers from offering competing app stores through Play by paying over $1 billion to top developers such as Activision Blizzard and Riot Games in order to keep them loyal to Play through a program it codenamed Project Hug, Epic alleges. Recently, Google Play Services automatically uninstalled the KDE Connect App distributed via F-Droid without any in depth explanation.

To learn more about this, please read this article. F-Droid’s very own eighthave was interviewed to explain the severity of the situation.

Contributor highlights

@linsui highlighted the following:

KOReader is updated to v2023.10 with the fix for the libwebp CVE. Please update it ASAP.

Community News

Special anniversary release of Arcticons

Donno shared with us the information below

On Nov 8 I’ve released a special Anniversary edition of Arcticons!
Three years ago, I released the first version with around 900~ icons, now we have 8000+

After contributing for months to Frost, a fill-based icon pack. I wanted to create something different (but with the same goal), a line-based icon pack. Because I lacked the technical skills to create an app, so gladly I came across Frost, which was a perfect app to use as a base for Arcticons.

In these three years, the project gained many contributors, and thanks to its low entry level. We’ve managed to do quite a lot in that time, like: Upgrading our app to have more features like icon request support, a variant with black lines and later one with Material You colors , we’ve also created 7000+ icons together, and we’re expanding to Linux too!

This is all possible thanks to the open-source nature of the project, and it’s fantastic community

The official release can be found here and will come to F-Droid in a couple of days. Thanks to Donno for making this happen.

Removed Apps

4 apps were removed

ClashMetaForAndroid and the fork Catbox were removed because the development ceased recently. More on this can be found here

WallmeWallpaper:Wallpaper app and lemmur were removed because they stopped working and their development ceased.

Newly Added Apps

17 apps were newly added

Updated Apps

212 apps were updated

Thank you for reading this week’s TWIF 🙂
Please subscribe to the RSS feed in your favourite RSS application to be updated of new TWIFs when they come up.

You are welcome to join the TWIF forum thread if you have any news from around the community, maybe it will be featured next week 😉

The Apple Network Server’s all-too-secret weapon: PPC Toolbox

However, there was a secret weapon hidden in ANS AIX most of us at the time never knew about. Built-in to the operating system was a fully Unix-native AppleTalk stack and support for receiving and sending Apple Events, surfaced in the form of Apple’s disk administration tools and AppleShare. But Apple had a much more expansive vision for this feature: full server-client “symbiotic” applications that could do their number-crunching on the ANS and present the results on a desktop Mac. Using the Program-to-Program Communication Toolbox (“PPCToolbox”), and because AIX’s throughput far exceeded anything the classic Mac OS ever could ever handle, an ANS could augment a whole bunch of Macs at once that didn’t have to stop to do the work themselves. Well, today we’re going to write one of those “symbiotic” applications doing something this little Mystic Color Classic could never efficiently do itself — accessing and processing a JSON API over TLS 1.3 — and demonstrate not only how such an client application looked on the Mac side, but also how the server component worked on the AIX side. If you’re lucky enough to have an ANS running AIX too, you can even compile and run it yourself. But before we do that, it might be a little instructive to talk about how the Apple Network Server came to run AIX in the first place. I had no idea the ANS could do this. That’s an incredibly cool feature, and clearly fits in the whole “the network is the computer” idea that dominated the late ’90s.