IRC channel logs

2019-12-08.log

back to list of logs

<oriansj>I'm guessing everyone is saving celebration until after I enable lets and quasiquoting support?
<oriansj>(in define-macro)
<oriansj>is no one else online and actually following?
<stikonas>well, I was just occasionally checking. Was a bit busy with other stuff... It looks like you are doing quite a bit of progress!
<oriansj>stikonas: I tend to be bursty to a degree
<stikonas>well, I guess it correlates with weekends :D
<oriansj>or on weeknight's where my wife lets be play
<oriansj>^be^me^
<xentrac>yay public domain
<xentrac>congratulations!
<oriansj>xentrac: yep but found a weird regression in the M2-Planet build
<oriansj>need to figure that one out first
<xentrac>that's wonderful news! quasiquoting helps significantly but is less significant
<xentrac>I mean writing (list 'foo 'bar baz) is only moderately worse than writing (foo bar ,baz) somewhere inside a quasiquote
<xentrac>and of course with syntax-rules quasiquoting is unrelated to macros
<oriansj>xentrac: indeed
<oriansj>but I figure add enough that everyone is happy
<xentrac>I think it's more important that you are happy
<xentrac>your personal judgment is considerably more trustworthy than any collective judgment
<oriansj>xentrac: well in this case, the judgement of people who need to run on top of it tends to be a bit important
<oriansj>I mean honestly
<oriansj>what good is a scheme if no one wants to use it?
<xentrac>well, I suppose you have a point there
<oriansj>and janneke is the person who's program most needs to run on it
<oriansj>if janneke isn't happy getting MesCC running on it, it isn't the way it needs to be
<oriansj>FIGURED IT OUT
<oriansj>(forgot to change a label name in mes_macro.c)
<oriansj>I still need to write a proper test set for define-macro
<oriansj>and I wish someone else would do it for me (possibly showing me some broken things I need to fix)
<oriansj>well final patch set for the night is up
<oriansj>all macro details are in mes_macro.c
<oriansj>only at 3175 lines of C thus far
<oriansj>I guess modules are the only feature left
<oriansj>xentrac: is there anything in slow_lisp that is missing that would prevent you from making generally useful scheme programs?
<oriansj>also I am still trying to make the code look like divine poetry (and failing horribly)
<fosslinux>oriansj: what's still missing from mes-m2 stopping mescc from working?
<oriansj>fosslinux: on the main branch alot of work, on the slow_lisp branch mostly support for modules as far as I can tell
<fosslinux>yeah slow_lisp I was thinking
<oriansj>I'd be happier if I had more/better tests; so I can be sure the behavior matches guile in all the important edge cases, so that MesCC needs only worry about running on guile and it'll run flawlessly on mes-m2 with the same code
<oriansj>fosslinux: do you feel anything is missing in mes-m2 in the sort of scheme programs you might wish to leverage?
<fosslinux>I don't know really anything about scheme/lisp
<fosslinux>so I can't really provide a good opinion on that
<oriansj>fosslinux: know any C?
<fosslinux>yes, not exactly a professional at it but enough to get by writing programs
<oriansj>fosslinux: does the code look simple and beautiful?
<fosslinux>mostly, yes
<fosslinux>I haven't read the whole code
<fosslinux>I think I could be of assistance there
<fosslinux>as I don't understand everything and aren't a top c programmer
<fosslinux>but ideally I should be able to understand it right, that's one of the goals of the bootstrapping process?
<oriansj>just tell me where the code isn't immediately obvious and I'll consider that a bug
<fosslinux>right
<oriansj>indeed, anything easily understood is wrong and a bug that needs to be fixed
<oriansj>^easily^not easily^
<oriansj>so anything that isn't simple to an entry level programmer needs to be redone until it becomes obvious or sufficient explaination can be added to make it easier to grasp (if simplication is not possible)
<oriansj>also all of the tests are designed to be a gentle introduction to scheme and its features
<oriansj>the overall goal with mes-m2 is not only to bootstrap MesCC but also be good enough to be taught in school as a way to understand scheme (if you know C)
<xentrac>:)
<xentrac>bootstrapping not just computers but also computer programmers!
<xentrac>I'll try using slow_lisp for things and make some notes
<oriansj>xentrac: thank you
<oriansj>one must remember, a programming language is only useful if there is a gentle ramp to creating programmers. And those programmers need to be able to create useful things all the way up that ramp
<xentrac>I don't know, I think I've implemented some languages that were useful even if nobody besides me ever programmed in them. in some contexts that would be of negative value, and of course a language that is useful to many programmers is many times more useful than one that is only useful to one programmer
<xentrac>and I'm very glad that you're working on things that are useful to other people. I'm just saying, don't make your vision contingent on other people's approval
<oriansj>xentrac: you are absolutely right in regards to the value of Domain specific languages
<oriansj>and honestly my vision has never been contingent on anything other than my personal goals; it is merely the approval of those who are critical to achiving my instrumental goal that I cam currently concerned with
<oriansj>as in I'll do the song and dance required to achieve that goal; after however, I can change everything to suit my personal preferences.
<oriansj>xentrac: or perhaps put more precisely making a scheme is only an instrumental goal to achieving the goal of bootstrapping GCC from hex0.
<xentrac>Right!
<oriansj>Now if there was an alternate strategy that would get me there sooner, I'd be dropping mes-m2 on the floor and doing that instead
<oriansj>I've already got a working M2-Planet and most C programs at their core can be simply built directly and run
<oriansj>So if there was a C99 compiler I could get into shape for direct M2-Planet builds, I'd take a week off and simply slam it out
<oriansj>(as I am still not entirely convinced of using scheme as the key to bootstrapping)
<oriansj>I mean hell, Gnu Guile can't even be bootstrapped properly with GCC because of psyntax.pp and how much movement has the guile team done to address this?
<oriansj>So, yeah I'm gonna have to fix the guile bootstrap problem too but it feels much lower down on my list of priorities in bootstrapping
<oriansj>and if mes-m2 happens to solve that problem too while I'm working towards MesCC and the higher priority GCC problem; no skin off my back
<xentrac>bootstrappability just wasn't a priority for the Guile team; you might even say it was an anti-priority
<oriansj>I would have rather been done with GCC and started focusing on making a posix in M2-Planet or porting M2-Planet to z80 or 6502 or writing cc_z80 in z80 assembly for CollapseOS
<xentrac>not sure I'd want to be involved with CollapseOS
<oriansj>xentrac: honestly, it is just another potential root of trust to leverage
<oriansj>(hence why posix in M2-Planet is a higher priority)
<oriansj>I'd probably end up doing Knight in FPGA and TTL before I started that work
<xentrac>looks like they deleted the comments from https://github.com/hsoft/collapseos/issues/49 where hsoft flipped out
<xentrac>oh, no, they're on https://github.com/hsoft/collapseos/issues/52#issuecomment-554768002
<xentrac>I misremembered
<oriansj>I wonder why he flipped out
<xentrac>Allisontheolder had some reading comprehension problems and kept commenting
<xentrac>but I think Allisontheolder was trying to contribute useful information, and it seemed relevant to me; hsoft just got paranoid and defensive
<oriansj>well I guess I had a similiar experience as Allisontheolder did when I explored the trilema option
<xentrac>which experience do you mean?
<xentrac>what is the trilema option?
<oriansj>xentrac: a massive waste of time and energy, from people who believe xraying old lisp chips is a superior bootstrap base to everything else
<xentrac>haha
<oriansj>at first glance it looked interesting, they "had a plan" for "sane iron" and by that they ment they had "no plan" and somehow I triggered them by mentioning wikipedia and torbrowser
<oriansj>they believe that git is bad and you needed to use their special version control software they wrote
<xentrac>interesting, I haven't heard of this
<xentrac>how far had they gotten?
<oriansj>in attempting to discuss "sane iron" I literally got labeled "moron" for mentioning "Code Morphing" and "dynamic binary translator"
<oriansj>they bought and xray'd an old Ivory processor the last I saw
<oriansj>xentrac: are you familiar with the term "Negging"?
<oriansj>it basically describes my entire experience with the group
<oriansj>from literally being invited personally for a discussion and for an entire week, the person who I was supposed to talk to refused to interact in anyway
<oriansj>it was just such a weird fucking waste of time
<oriansj>that place seems to eat brilliant but naive minds
<oriansj>in other words avoid that place like it carries mental AIDs
<xentrac>they wanted to sleep with you so they started teasing you?
<xentrac>it doesn't sound like fun
<oriansj>if by sleep with you mean do the work they wanted and not what I wanted; then yes
<xentrac>ah
<oriansj>I have no desire to write a freaking Ada compiler in machine lisp
<oriansj>let alone having to deal with memory tagging by hand
<oriansj>(and add support for memory tagging to M2-Planet)
<oriansj>fuck that noise
<xentrac>well, memory tagging is a pretty big benefit
<oriansj>even the best minds at MIT couldn't do that shit
<oriansj>xentrac: but not in bootstrapping
<xentrac>an awful lot of the difficulty of programming in assembly or machine code is debugging type errors
<xentrac>memory tagging makes that really easy
<oriansj>xentrac: not when you have to make the tags by hand
<xentrac>yes, that's the situation I mean :)
<oriansj>and most of the difficulty in programming in assembly or machine code is clear thinking and external constraints
<xentrac>well, certainly it's true that if your thinking is entirely clear you will never have any bugs
<oriansj>as someone who has written a C compiler in assembly, I never ran into a type problem in my assembly programming *EVER*
<xentrac>really? maybe you called it something else
<xentrac>did you keep a log of the bugs you had?
<oriansj>yep
<oriansj>mostly off by 1 errors
<oriansj>or mistake in logic
<oriansj>once you have a clean data structure you walk down; there is no way for type bugs to show up
<oriansj>hence why the most important function in cc_* is debug_list
<xentrac>interesting
<xentrac>maybe your thinking is just a lot clearer than mine
<oriansj>xentrac: doubtful but I appreciate the complement
<fosslinux>Great
<xentrac>for us muddled thinkers, it helps a lot when we get a message saying that we were trying to use an int pointer as an int pointer pointer
<xentrac>instead of just getting a crash later on
<fosslinux>oops wrong channel
<xentrac>seemed appropriate here too
<oriansj>I just look at one thing at a time and try to realize how stupid I am
<fosslinux>oriansj: has there been any reason not to write a C compiler in m2-planet
<fosslinux>Instead of working through mes
<oriansj>fosslinux: no (aside from the likely time taken to do the work)
<fosslinux>yeah right
<oriansj>if I though just building a seperate C macro expander and then expanding M2-Planet to support everything required was going to be quicker, I would have done that instead
<oriansj>M2-Planet after all is a C compiler that is self-hosting
<oriansj>so it is just a matter of incrementially adding C features until it supports all the ones needed to build tcc (or gcc directly)
<fosslinux>I see
<xentrac>I don't really understand the appeal of Ada. I do understand the appeal of Rust
<oriansj>fosslinux: so if you wanted to go that route, write a seperate C program that simply does C macro expansion and I can direct you through the rest rather easily
<oriansj>xentrac: well Ada has some wonderful qualities in embedded environments (like rockets) it also enables type safety that in someways is better than what Rust has right now
<oriansj>xentrac: that being said, Ada is a BIG freaking language (way bigger than C99)
<xentrac>I don't think it has wonderful qualities in embedded environments like rockets; it's most famous in that realm for a badly chosen tradeoff in Ada's design having destroyed the first Ariane 5
<oriansj>fosslinux: (if you are interested in that work, I'd be willing to throw a few cycles in that direction to help)
<xentrac>what is this about ways that its type safety is better than Rust?
<fosslinux>C macros are rather painful
<oriansj>xentrac: well that is the thing about type safety, every language needs an escape from it to do something useful
<fosslinux>biggest issue ive encountered this far in most things involving m2-planet
<fosslinux>what do you mean exactly by expanding macros?
<xentrac>oriansj: if you have a link I'd be interested in reading it; my knowledge of Ada is very shallow, but what I have seen hasn't impressed me
<xentrac>I'm skeptical of the claim that Ada's type system is expressive enough to capture any errors at compile-time that Rust's can't
<oriansj>fosslinux: expanding macros is what C does when you type #define foo 5 and then it uses that to replace all instances of foo with 5
<fosslinux>oh right
<fosslinux>dosent m2 planet already do that?
<dddddd>Do we know what is lacking in M2-Planet to compile tcc? I saw switch and floats in past logs (but it's possible to remove the use of floats from tcc, AFAIU). Is macro expansion also required?
<fosslinux>most likely, I think
<dddddd>... anything else?
<fosslinux>I'm not sure really
<fosslinux>only come on this scene recently
<oriansj>xentrac: good.
<oriansj>fosslinux: no M2-Planet uses # as line comments and ignores // and uses the CONSTANT directive to do the same thing
<fosslinux>oh righttt
<fosslinux>oriansj: and also CONSTANT dosent do functions does it
<oriansj>dddddd: yes macro expansion is required for tcc, as is a bunch of ugly types like union arrays and bit-splices, enums and switch statements (not to mention long, float and double support)
<oriansj>fosslinux: sorta but only a restricted subset (like CONSTANT foo sizeof(struct foo))
<xentrac>technically sizeof is an operator, not a function
<oriansj>xentrac: in standard C, you are absolutely correct but in M2-Planet it actually is a function (unary_expr_sizeof)
<oriansj>another possibility is to incrementially strip C language features required by TCC out of TCC but that would require expanding TCC's test suite to ensure you don't break functionality while doing it
<oriansj>(another reason why I opted to help janneke with Mes.c)
<oriansj>dddddd: a short list of features need to build TCC are actually a direct list of features currently supported by MesCC (nyacc deals with the macro expansion and converts the C code into a form that MesCC directly works on)
<xentrac>ah, sorry
<xentrac>oriansj: looking at http://trilema.com/2018/ it seems like the kind of people I would only want to be in the same room with if I were heavily armed and had a good alibi
<oriansj>xentrac: hence why I said, it is best to ignore them
<oriansj>xentrac: the part of trilema that pisses me off the most is how they derailed http://www.loper-os.org/ so hard from their early and interesting work
<xentrac>what happened there?
<xentrac>I've read a lot of Stanislav's articles with interest but I never thought he would achieve anything; too perfectionist and bitter
<oriansj>xentrac: I honestly thought he might actually would have achieved atleast getting a minimal LispOS working; but no just a waste
<xentrac>what happened?
<oriansj>same thing that happens to most people on trilema, they stop working on the things they care about and start working on the things they are told to do by dumbass piece of shit (the author of the blog you linked)
<xentrac>huh, so his negging was a manipulation technique to gain influence over you?
<oriansj>xentrac: it appears to be his general MO for his interactions with everyone
<xentrac>sounds like he's refined it to the point where it sometimes works
<xentrac>too bad he doesn't have a more interesting goal than feeding his own ego
<oriansj>and bank account
<xentrac>they feed his bank account? how?
<oriansj>by doing free technical work for him
<oriansj>and if you look at Stanislav's blog, you'll see the business side work too
<xentrac>does he sell their technical work to somebody?
<oriansj>to anyone dumb enough to buy from him
<xentrac>are they within his circle
<xentrac>?
<oriansj>sometimes
<xentrac>if not, what do they get?
<xentrac>you'd think anyone reading his blog and seeing the way he describes the people who submit to him, nobody would be eager to add themselves to that category
<xentrac>s/, nobody would/ wouldn't/
<oriansj>xentrac: why do you think they have a screening process that tries to shame those who don't fit the mold?
<xentrac>how does that work?
<oriansj>it starts with demanding all communication requires you first to read and understand perfectly all of the IRC logs and never ask a question that was previously asked
<oriansj>(they even did a rather nice blog about stage0; that promptly disappeared the second I figured out they are a fucked up cult)
<xentrac>then what?
<oriansj>xentrac: why is this so interesting to you?
<oriansj>(the irc logs are certainly easy to find for my interactions with them)
<xentrac>well, I'm sort of at the opposite end of some kind of sociopathy spectrum or something
<xentrac>so I think it would be really interesting to understand how someone like that gets past people's defenses and gains influence despite what seem to me to be terribly obvious red flags
<oriansj>xentrac: you first appeal to things that people feel are important good qualities in themselves
<xentrac>because I tend to instead create conflict and friction with people who in theory I'm entirely on the same team with, and I'd like to stop doing that
<xentrac>and rather than attracting a crowd of admirers I tend to offend people and push them away, isolating myself, without intending to
<oriansj>xentrac: the solution to that is far easier
<oriansj>but honestly, it would require movement down the spectrum.
<oriansj>xentrac: you seem the type that instead tends towards ultra deep relationships of meaning and understanding with frequent deep brain dumps/syncs
<oriansj>if you really wanted to joining a toast masters club will teach you how to engage in a more manipulative/charming way
<xentrac>down the spectrum which way?
<xentrac>I was in toastmasters for a year or so in maybe 2004 or 2005, I don't remember
<oriansj>away from deep empathy towards sociopathy
<xentrac>I don't think I learned anything about being charming there
<xentrac>it was nice for diminishing stage fright and learning to not talk too fast, though
<oriansj>(I guess different instances have different trainings)
<fosslinux>oriansj: i've just been stepping through in gdb the compilation of a very simple c program
<fosslinux>it's so easy to understand
<fosslinux>the token buisness took me a while to get
<fosslinux>but when i did
<fosslinux>the token thing is spot on
<fosslinux>its pretty much exactly the best way to do it afaict
<vagrantc>janneke_: i couldn't resist, number 9 is in debian now.
<gio> https://github.com/sapir/gcc-rust/tree/rust, but it seems it requires rust itself to build...
<janneke_>vagrantc: re #9; i guess that you saw that i pushed #9 (aka mes-rb5) to guix master?
***janneke_ is now known as janneke
<janneke>vagrantc: how did you push #9 into debian, this is truly great!
<vagrantc>janneke: just applied patches on top of 0.21
<vagrantc>janneke: eagerly awaiting 0.22 :)
<vagrantc>or 0.21.1
<janneke>vagrantc: and it ships with two mes binaries, one gcc-compiled and #9?
*janneke wants so see see see!
<vagrantc>janneke: yes
<janneke>very nice
<janneke>i saw xwvvvvwx already do a cleanup of their nix patches...
<vagrantc> https://deb.debian.org/debian/pool/main/m/mes/mes_0.21-3_i386.deb
<zig>\o/
<vagrantc>also an amd64.deb in the same location ... with a different hash, of course :)
<janneke>mes-boot0-static: 9..fb
<janneke>\o/
<vagrantc>i didn't have much luck building mes with tcc, and haven't tried clang yet ... but that would really start to be diverse double compilation
<vagrantc>but celebrate one victory at a time :)
<janneke>ah, yes -- you inspired me to name the guix package mes-rb5 instead of mes-ddc because of that
<vagrantc>heh
<janneke>another very-nice-to-have for 0.21.1 (or 0.22)
<vagrantc>although i think we're sort of diverse in that each distro used a different gcc version
<janneke>meh...we can be more diverse than that :-D
<vagrantc>which isn't the strongest diverseness, but it's more than nothing :)
<vagrantc>we'll get there :)
<janneke>sure, it's a very nice angle
<vagrantc>i guess now i should explore stage0 and all that
<vagrantc>and m2-planet
<janneke>vagrantc: you may want to have a look at the m2-planet-boot0 package here: https://gitlab.com/janneke/guix/tree/wip-full-source-bootstrap
<janneke>it builds m2-planet-boot0 with the stage0 x86/hex0-seed and remove all but bootstrap-guile from the guix bootstrap binary seed
<janneke>*removes
<vagrantc>janneke: yeah, i've got a few more days on this side of the pond, so maybe will have some time for that
*vagrantc waves
<oriansj>very nicely done janneke + vagrantc
<oriansj>just remember, I am always willing to play sherpa for those wanting to climb the mountain of understanding in stage0
<janneke>oriansj: thanks, we are getting so much done
<janneke>oriansj: so happy to read you are attemping to slay this macro dragon
<janneke>oriansj: there's two more distros that are working on getting mes built identically; we'll have a celebration and some news out when that lands upstream
<oriansj>janneke: actually if you checkout out the latest commit, we have define-macro working
<oriansj>I must say looking at the recent work done by the libreSilicon team; Trusted hardware for bootstraps are not that far out
<janneke>hello civodul; vagrantc just announced that mes #9 is now uploaded to debian!
<civodul>hello janneke & all!
<civodul>woow!
<civodul>everything's been moving real fast lately!
<civodul>it's all coming together
<oriansj>civodul: piece by piece, as promised. It just takes alot of work to build a solid foundation...
***ng0_ is now known as ng0
<mid-kid>Anyone have any clue what might cause "Target label <arch is not valid" in hex2 while building mes?
<janneke>mid-kid: yes, we stumbled into that this week!
<janneke>mid-kid: it's a bug in configure
<janneke>mid-kid: it happens when binutils' AR is used to create archives for mescc/hex2 object files
<janneke>instead, scripts/mesar should be used: use AR=$PWD/scripts/mesar or so
<janneke>a binutils's achive starts with !<arch> and our hex2 linker goes looking for the label `<arch'
<mid-kid>Odd, since I was building with AR=mesar (using the one I had installed in PATH), but I'll try again with the one in scripts/.
<mid-kid>Oh, wait, I built the version of mes I'm building this with with binutils. I'll try building it with mesar instead.
<mid-kid>Thanks!
<janneke>mid-kid: we found a whole lot of build issues that i'm now taking care of in `wip'
<janneke>thanks for being early and reporting here!
<oriansj>xentrac: have been reading markdown/assembler-bootstrapping in dercuano and I'd have to say you made a false assumption. Although yes you are correct Macros are essential to bootstrapping an Assembler (to have human syntax) but not the variety of macros you described. In fact the most basic assembler (a hex0 assembler) no macros, labels or even relative addressing is possible
<xentrac>hmm, that's interesting; by "the most basic assembler" do you mean something that just converts hexadecimal to binary?
<xentrac>I was using the term "assembler" to mean something that can at least accept instruction mnemonics and calculate offsets
<theruran>oriansj: I think I found a bug using -flto. The function prototype of writeobj() in mes.c mismatches that in mes_print.c. Patch: https://bpaste.net/show/OCEOA
<fosslinux>oriansj: m2-planet does not currently have a preprocessor does it
<dddddd>That's right, fosslinux.
<fosslinux>dddddd: ok, thanks
<theruran>oriansj: I tried (again?) building mes-m2 with CompCert and musl, and I got it to work! The statically-linked executable without debugging symbols weighs in at 98K, and all the tests pass. It did give me some warnings about "declaration without function prototype" and C11 extensions though.
<theruran>that's on the latest slow_lisp branch
<fosslinux>Noice
<fosslinux>nice*