IRC channel logs

2022-08-25.log

back to list of logs

<acrow>oriansj: ack.
<muurkha>oriansj: interesting!
<rickmasters>I'm pleased to announce that I just built tcc-0.9.26 on the builder-hex0 bootstrap kernel!
<rickmasters>I had to implement loading multiple ELF program segments in the kernel and apply one small patch to the tcc code.
<rickmasters>tcc builds itself in 5 phases so it appears to be fully working.
<oriansj>acrow: syn-ack
<oriansj>rickmasters: holy crap!
<oriansj>That brings us to a whole new era of bootstrapping
<muurkha>congratulations rickmasters!
<muurkha>that's great news!
<oriansj>as TCC can build actual C kernels without a bunch of extra hoops
<oriansj>even some standard filesystem tools
<oriansj>infact most of the things aggi has been working on
<rickmasters>Thanks all. I'll need to clean up a bit, remove debugging, etc, and will try to commit my changes soon.
<oriansj>rickmasters: I really look forward to it ^_^
<muurkha>very exciting!
<stikonas[m]>Nice!
<stikonas[m]>rickmasters: you probably won't need it by I tried creating easier to use M1 defines
<stikonas[m]>After you were complaining
<rickmasters>yes, I saw that and I think they were much better. Thank you!
<stikonas[m]>Somebody could try to port them to stage0-posix
<stikonas[m]>I don't think I'll have time
<stikonas[m]>Will be busy with stage0-uefi for a while
<stikonas[m]>I don't think I'll get to M0.efi until end of September
<rickmasters>honestly, I'm not sure I have the motivation but I'll think about it.
<rickmasters>oriansj: would you be ok with the wholesale replacement of the M0 defines in stage0-posix?
<stikonas[m]>Unfortunately it can't be done by just find/replace as it messes up formatting
<stikonas[m]>In any case it is up to oriansj to decide whether to keep current ones or switch
<pabs3>acrow: roptat was working on scala bootstrap btw
<stikonas[m]>And rekado tried ghc bootstrap but I guess hit problems
<oriansj>rickmasters: yeah that is fine
<oriansj>the current ones were just a quick sort of creation and not something planned out
<oriansj>so if replacing them with better is an option and someone is willing to do that, I'll appreciate the help.
<oriansj>well find/replace could get it 90% done and a little work in an editor that shows whitespace could finish off the rest in a half hour.
<Hagfish>i was here! :)
<Hagfish>heh, a bit late, but i want to be able to tell people i witnessed the announcement :)
<Hagfish>as orians said, tcc is a huge milestone for a kernel, since it unlocks the ability to use kernels which are much more conventional
<Hagfish>anyway, this is a great day for bootstrappers, and thus for all users of software
<aggi>oriansj: i fully replaced the entire GNU toolchain with tcc, in userspace
<aggi>however, i gave up on libc recently... there isn't any without vendor-specific and GNU gas specific ASM extension clutter
<aggi>with arm-tcc, which couldn't digest any of the libc i tried (musl, uclibc, dietlibc), this raised awareness, how critical and difficult this problem is
<aggi>to cope with
<aggi>and i am not willing to lock into GNU binutils and gas
<aggi>the tcc and musl-libc patches for i386 asm suffice for bootstrapping, however it's insufficient for the project idea i followed
<Hagfish>what candidates are there for a natural kernel that is written in simple C that tcc could compile?
<aggi>linux kernel-2.4
<Hagfish>hmm, yeah, i guess so
<aggi>not sure what you mean with "natural" kernel
<Hagfish>i mean something that fits with the other goals of bootstrapping
<Hagfish>like being auditable, familiar, and capable of building the next steps (including a modern linux kernel, i guess)
<Hagfish>nothing too esoteric, or that introduces lots of other dependencies
<aggi>btw. i consider the libc situation at least as concerning as the kernel question
<aggi>however, i was working at higher levels in userspace than bootstrappable down below does with their tiny loaders and stages
<aggi>and as far as any libc was concerned, such as dietlibc, such required extensive re-writes/debugging of their ASM parts to pass without binutils-as
<Hagfish>aggi: yeah, the limitations of libc implementations does seem like it has lots of bad consequences
<Hagfish>not just for bootstrapping, but for portability in general? and code quality? and security?
<aggi>dietlibc# find . | grep '\.S$' | cat -n -> 695 files, and tcc assembler freaks out all over the place
<aggi>Hagfish: i consider it an anti-competitive vendor-lock against GNU binutils and gas assembly extensions
<aggi>and i greatly underestimated the severity, couldn't imagine a libc such as dietlibc wouldn't pass without binutils-as
<aggi>problem isn't GNU binutils, problem is there isn't almost any piece of free software remaining without it
<Hagfish>i think developers often overlook the sort of ecosystem-level dynamics that their creations produce
<Hagfish>the obvious example is games or social media being addictive, although that's quite well understood now
<Hagfish>and i'm not just talking about the effects on users, but on other developers
<Hagfish>if a piece of software becomes useful, it affects other pieces of software that haven't even been written yet
<Hagfish>it changes the space of possible futures
<roptat>pabs3, I had to give up, too hard for me
<acrow>roptat: After all the work put into bootstrapping Scala without success; it might be in JetBrain's best interest to assist. Otherwise people might have difficulty considering it free software. I understand difficulties with obscure, older peices of work but scala is actively developed and marketed as open-source. It's kinda disappointing.
<unmatched-paren>acrow: Kotlin is the JetBrains thing, not Scala :)
<acrow>unmatched-paren: Thank you for the correction. I want to get that right, who is promoting scala?
<unmatched-paren>I think it's a standalone project organization
<unmatched-paren>no company directly backing it iiuc
<acrow>I apparently owe JetBrains an apology.
<roptat>kotlin also is hard to bootstrap though
<unmatched-paren>^
<acrow>I'm simply going to say I don't use either and the principles are the same.
<aggi>could anyone recommend a tiny libc, which can be compiled/linked/assembled with tcc-toolchain (AS=arm-tcc for example)?