Re: [Thought experiment] Bringing swift into an experimental branch?
- In reply to: Rozhuk Ivan : "Re: [Thought experiment] Bringing swift into an experimental branch?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 18 Jun 2025 15:30:32 UTC
Upon reflection, and given Warner's reply, perhaps I asked the wrong question. This idea of "pluggable toolchains" is interesting. If you zoom up and look at *BSD from a purely architectural perspective, you have the kernel + essential base utilities as "ring zero" - everything required to support FreeBSD on anything from a thumb drive on a Raspberry Pi to a massive server system, or at least that should be the goal. That's your bootstrap. However, *creating* that ball of bits for X number of targets - that raspberry PI or that x86 server system in my example - requires a toolchain. Today, that toolchain is clang + llvm + binutils + lldb + make etc and so on, what linux calls the "build-essentials" package. Ignoring whether it can cross-compile or not for the moment, that's your second piece of the puzzle and also in "ring zero" since, without it, you can't do anything but admire the source code. Mmmm. Source code! Furthermore, since FreeBSD has always been "integrated" and has that lovely "make world" target, we can assume that a toolchain selection somewhere in a configuration file will automatically scope over everything in ring zero. If the end-user / customer decides they need another supported toolchain, they simply specify it in that configuration file and boom - it's now part of ring zero for them - the entire project does not have to commit to anything other than making that pluggable toolchain compile with all of its dependencies. One can also imagine parts of "base" growing a toolchain_required field. If the toolchain they need is not there, they either freak out and stop the compilation process or they are simply skipped. Ports takes care of everything else. It is still ring 1, though to this day I rather wish I had figured out some way of combining all of that into one multi-tiered system but meh, that ship has sailed, it's fine. * Jordan ________________________________ From: Rozhuk Ivan <rozhuk.im@gmail.com> Sent: Tuesday, June 17, 2025 5:12 AM To: Borja Marcos <borjam@sarenet.es> Cc: Jordan Hubbard <jordan.hubbard@gmail.com>; freebsd-hackers@freebsd.org <freebsd-hackers@freebsd.org> Subject: Re: [Thought experiment] Bringing swift into an experimental branch? On Tue, 17 Jun 2025 08:02:08 +0200 Borja Marcos <borjam@sarenet.es> wrote: > > On 17 Jun 2025, at 00:37, Rozhuk Ivan <rozhuk.im@gmail.com> wrote: > > > > No modern language required, even C++ is to complex to learn it. > > C just works, like it work 30-40 years ago. > > All can be done on C. > > Well, if counting bytes is your thing, yes, everything can be done in > C. The fact that using a systems programming language for > applications is a bad idea has been proven beyond doubt. ;) > > The problem is language stability as Jordan pointed out. I remember I > said something similar about Rust. > "systems programming language" - does not exist. OS have no complex applications, even assembler can be used, Colibry OS as example.