verisimilitude: I'm willing to answer questions and whatnot, regarding the Loongson machines. I mostly just use my Lemote Yeeloong for miscellaneous purposes, primarily IRC these last few years. It's just an Emacs machine running OpenBSD for me, right now.
verisimilitude: I've so wanted to fully understand a physical machine, and the Yeeloong is a good candidate, but at the time I was perhaps naive enough to not realize just how many steps were still ahead of me. I don't even have a MIPS development tool finished yet, although the design's been in my skull for a decent ways.
asciilifeform: verisimilitude: nifty, rare box. which mips rev., incidentally, was in there ?
asciilifeform: verisimilitude: fwiw , even tho, like many people, asciilifeform had to write mips emulator in school, was 'children's' mips, didn't 100% grasp the in-practice arch until wrote 'M' emulator in 2019 .
shinohai: I was keenly interested in 'M' because wanted to make custom kernel for erl2, only device I have w/ mips.
asciilifeform: btw, verisimilitude , that proggy contains more or less full description of mips32 in the comments. ( oblig phf viewer link . )
asciilifeform: shinohai: you can build kernel same as i did, neh
asciilifeform: there's traditionally mips support, even in the recent ones
asciilifeform: might have to change some constants if it's a genuinely oddball machine tho ( as i had to , given 'fictional' machine )
asciilifeform: fwiw i built not only kernel but ~complete userland for that thing. but it aint any good on any physical mips, my devices (e.g. interval clock ) were made-up , for max simplicity, rather than re-creations of historical ones
asciilifeform: ( the kernel, that is, useless on physical; userland is ordinary mips-III compat. )
asciilifeform: it's the same mips as in the old game machine 'playstation', incidentally.
shinohai: I did manage to get a Gentoo working on it, it sometimes resets sporadically for reasons I never figured out.
shinohai: OpenBSD worx a++ on it too.
asciilifeform: shinohai: hm, resets but only w/ the gentoo ?
shinohai: Yup, only with the Gentoo - 'twas about year and half ago I did ut, may try again when time permits to ensure I didn't screw up somewhere in my config.
shinohai: (At first had issues finding a 32GB USB drive it would read!)
asciilifeform: what's the win from having that box ? afaik is long outta print
shinohai: It was phree ... mats and I were gonna do something with it, honestly I've forgotten what.
asciilifeform was given all kindsa oddities 'for phree', e.g. dec alpha, but not aboutta port anyffin to'em, if it dies, where to get another ?
asciilifeform: my interest in mips was 100% on acct of simplicity of the arch -- it fits in smallish fpga .
asciilifeform: sadly there aint much use for a ~40MHz mips , afaik. which is all i can get in e.g. 'ice40' fpga
shinohai: Add a Turbo button! xD
trinque: shinohai: would you have an existing gcc-4.9.4 system from which to build my item?
trinque: needs a gnat too.
trinque: I've been building from a devuan oldstable, have the exact list of packages needed for bootstrap.
shinohai: trinque: I have the gcc+gnat using 4.9.4 I posted on my blog about.
trinque: the part I'm ready to circulate is a replacement for ave1's item, which enraged me the moment I started reading the src
asciilifeform defo interested in trinque's re-edition of gnat
trinque: fucking shell variables smeared over every surface
shinohai: It made my head hurt too.
asciilifeform: trinque: ave1's gnat in fact built (on my traditional gentoo), i've been using it since. but a cleaner/moar retargetable one would be a++ handy
shinohai: I was able to build it on Gentoo as well, but did take a fair amount of massaging to get to work.
trinque: yeah, I got his (really gregor's) to build eventually.
trinque: lemme crack off just the gcc bit for now and get it up somewhere.
trinque: it was pretty sad also to walk the dependency chain for gcc itself.
trinque: perl. yes.
trinque: if you want to be able to build everything in the gcc src tree, about 7 other shitwads come in.
asciilifeform: trinque: aaand, just how many MB of autoconf liquishit in there..
asciilifeform suspects 'gnu universe' consists 10-20% of ~that~ by weight
verisimilitude: http://logs.nosuchlabs.com/log/asciilifeform/2020-05-30#1013654 It's a MIPS64el with incompatible extensions in the unused instruction space.
snsabot: Logged on 2020-05-30 10:42:17 asciilifeform: verisimilitude: nifty, rare box. which mips rev., incidentally, was in there ?
trinque: also texinfo, also fuck my eyes.
asciilifeform: verisimilitude: sadly this aint unusual -- afaik just about erry single physical mips manufactured to date, had some kinda oddity (tho, in moar civilized ones, implemented as 'coprocessor' registers )
trinque: all of this can be cleaved off, but needs to be actually cleaved off. there are bugs in the gcc build process where it claims you can get away without autoconf/automake/texinfo, but that is unreliable.
trinque: also what the fuck, the idiots split binutils into its own tree, and duplicated all the libiberty type crap
shinohai: I'd deffo like to cleave off unused languages, such as the golang stuff.
trinque: I merged binutils back into gcc
trinque: yup shinohai, gcj also
trinque: fortran possibly useful for archaeology? not sure
asciilifeform: trinque: at one point i succeeded in de-autoconfing a (much, much smaller item ) , in that case took coupla days
trinque: asciilifeform: I was thinking the move here is to reimplement all builds with gprbuild
verisimilitude: Currently, the only programming I've moved to the machine is my APL; there's no suitable Common Lisp or Ada implementations for both the particular machine type and OpenBSD.
trinque: get the shit into the tree first, then start wrapping in gprbuild
asciilifeform: trinque: there are fairly useful proggies that in fact demand f90 ( 'lapack' being the best-known , afaik )
trinque: yeah, seems like it lives.
asciilifeform: but if trinque's set dun have fortran, asciilifeform will not consider it 'tragedy'
asciilifeform: funnily enuff i orig. considered fortran for ffa.
asciilifeform: was pretty close runner-up
shinohai imagines feeding a fortran ffa puchcards ......
asciilifeform: shinohai: might surprise you, but fortran hasn't died, is still king in 'numerical' circles
asciilifeform has written (tho, more often, read) fortranisms for $
trinque: seems like a decision to make with someone's vpatch after it's in.
asciilifeform: i'd actually throw out cpp before throwing fortran
asciilifeform: (tho , for max compactness, perhaps oughta throw both.. )
trinque nods vigorously re: cpp
asciilifeform wonders how much would weigh a gcc sans cpp
verisimilitude: http://logs.nosuchlabs.com/log/asciilifeform/2020-05-30#1013655 I read the machine documentation, but even then there were aspects that were too vague for my liking, but it's also been several years since I did, so it could've merely been my relative lack of experience.
snsabot: Logged on 2020-05-30 10:43:11 asciilifeform: verisimilitude: fwiw , even tho, like many people, asciilifeform had to write mips emulator in school, was 'children's' mips, didn't 100% grasp the in-practice arch until wrote 'M' emulator in 2019 .
asciilifeform: verisimilitude: when i wrote emulator, worked from mips co.'s official datashits. they're pedantically complete.
asciilifeform: ( the relevant parts, reproduced in the comments in 'M' , as plain text. )
verisimilitude: I'll make certain to reference M when I play with MIPS again, then.
shinohai: Even though asciilifeform considers 'M' defunct I learned a lot from reading it, was indeed well commented.
asciilifeform: ftr mips co appears to have gone bankrupt recently. (imho not tragedy, it's done absolutely nuffin useful in ~20y . aside from 'officially' depatenting the arch. )
verisimilitude: In any case, MIPS is an ugly little architecture, which requires far too much to do far too little, I think.
asciilifeform: shinohai: imho it's entirely adequate as a complete description of the machine
asciilifeform: verisimilitude: imho the unaligned-byte ops are entirely unnecessary. ( i implemented'em, cuz gcc shits'em. strictly )
asciilifeform: aside from that, it's afaik cleanest arch for which anyone ever sold physical cpu, to date
verisimilitude: I dislike RISC, but find RISC-V a much cleaner design, albeit misguided.
asciilifeform: verisimilitude: it's more or less a cut-down mips, near as i can tell
verisimilitude: Branch-delay slots are merely MIPS first issue.
verisimilitude: The instructions are all individually quite useless, but require thirty-two bits each.
asciilifeform: verisimilitude: they're ugly, but vastly simplified implementation of pipeline (mips was 1st commonplace iron that had one)
asciilifeform: verisimilitude: i fuckinghate variable-length instructions.
asciilifeform: is 90% of what i hate about x86ism.
verisimilitude: In considering a memory-to-memory machine, variable-length instructions are effectively required for good code compacting.
asciilifeform: verisimilitude: in practice, the proliferation of prefix crapola more or less cancels out the 'compact'
asciilifeform: observe w/ own eyes, sizes of built binaries
verisimilitude: Well, this machine being considered doesn't exist, yet.
asciilifeform if building cpu, wouldn't even include byte-addressability. at all.
verisimilitude: Still, to increment a value in memory requires three instructions with MIPS, an entire twelve octets.
asciilifeform: verisimilitude: if you dive into subj of how-and-why folx designed cpu, will see that errything has a cost. all designer can do is move cost from 1 place to another.
verisimilitude: Sure, but MIPS doesn't really gain anything. RISC is designed to run C programs better, and that's about it.
verisimilitude: Chuck Moore's machines are certainly more ``reduced'', but with a worse advertising arm.
asciilifeform: you can have, for instance, fixed-width instrs, this makes cpu 9000x less complicated. or, on other end of things, the x86 atrocity, where no one alive in fact understands wtf is happening in there, not even manufacturer
verisimilitude: RISC advocacy in fact takes on the same characteristics as UNIX idolatry.
asciilifeform: verisimilitude: all of the commercially-sold archs were 'to run c', i.e. lack type bits, bounds checks, etc. but lispm is very separate conversation from 'cpu to plant linux on'
verisimilitude: ``Aha, that machine was really RISC all along, if we look at it just right. Yes, my worldview doesn't change with this.''
asciilifeform: verisimilitude: mips, arm, x86, etc. are all traditional objects of unix idolatry.
asciilifeform: cpu for 100% sane comp 'from the ground' would have very diff. characteristics from any of these .
verisimilitude: People claim Moore's machines are RISC, but then can't explain the massive difference in complexity between them. There are historical machines called RISC, yet which for the time contained state-of-the-art hardware and capabilities. There are more examples.
asciilifeform: verisimilitude: 'risc' is a 1980s marketing term, w/ no well-defined meaning.
asciilifeform: sorta like 'reduced-fat' in the shitfood market
verisimilitude: Also, it's hilarious to read of some of the first automatic computers having multipliers, but early RISC was too holy for them.
asciilifeform: verisimilitude: multipliers have a cost.
verisimilitude: Again, same thing with UNIX, ``Useful work is too much, have wc instead.''.
asciilifeform: when cpu became 'integrated' (single-chip) item , multipliers were among 1st things to be omitted.
asciilifeform: (previously they were separate device, amd for instance made'em)
verisimilitude: Yet multipliers also have an obvious use, and machines have contained them in some form for nearly the duration of the field.
asciilifeform: they're obviously useful, but ~very~ expensive , for instance a 32x32 multiplier doesn't even fit in any 'ice'-series fpga
verisimilitude: Now sure, this multiplier I've in mind was also of the form ``Give it the numbers and wait twenty instructions.'', but still.
asciilifeform: verisimilitude: ~that~ kind of multiplier is best implemented as series of instructions. ( it worx like this . )
asciilifeform: to the extent 'risc vs cisc wars' had a definitive logical meaning, it was specifically this dilemma, 'should $instr be a microcoded turd, or should programmer be asked to actually supply the instructions'
verisimilitude: I should revisit FFA, but I'd need to reread everything I've read so far, by now.
asciilifeform: verisimilitude: linked for the basic binary mult. algo (which hasn't in fact changed since... ancient egypt)
asciilifeform: is used in exactly that form in all physical multipliers.
asciilifeform brb in half hr
verisimilitude: Oh, the classic halving and doubling, yes. I'd first learned of this algorithm in a human context in the context of multiplying and dividing with Roman numerals.
asciilifeform: verisimilitude: similar algo was used in china, india, number of places, prolly ~errywhere
asciilifeform: and so happens that -- for small numbers -- is the mechanically-simplest method .
asciilifeform: http://logs.nosuchlabs.com/log/asciilifeform/2020-05-30#1013699 << i dun recall that horror being in any of the 4.x gcc's
snsabot: Logged on 2020-05-30 11:11:10 shinohai: I'd deffo like to cleave off unused languages, such as the golang stuff.
asciilifeform: http://logs.nosuchlabs.com/log/asciilifeform/2020-05-30#1013705 << imho is prolly the sanest build system avail.
snsabot: Logged on 2020-05-30 11:12:03 trinque: asciilifeform: I was thinking the move here is to reimplement all builds with gprbuild
shinohai: http://www.linuxfromscratch.org/blfs/view/7.7/general/gcc.html <<< lfs shows it since at least 4.9.2
asciilifeform: shinohai: interesting. possibly i never noticed cuz defaults off unless flag ?
shinohai: Yup, I have a;lways built using `--enable-languages=c,c++,fortran` and left off go and objective c stuff.
asciilifeform: ( like 'obj-c' for instance )
asciilifeform: interestingly, i can't think of any cpp proggy i actually use on linux.
asciilifeform: well trb.
asciilifeform: can think of other ?
shinohai: Not off hand.
shinohai: (Unless you are shitcoiner like me, then you see vomit-inducing C++ crap ~daily)
asciilifeform would in fact rather see 'bad old days' of cpp-via-preprocessor return, than to have to carry cppism in compiler
asciilifeform: shinohai: stroustrup's orig. cpp was implemented that way.
asciilifeform: shinohai: i shudder to even think of what's in the shitcoins.
asciilifeform: (last i knew, they were ~all more or less straight copypasta of various prb, w/ constants fiddled)
asciilifeform: !w poll
watchglass: Polling 11 nodes...
watchglass: 18.104.22.168:8333 : (172-4.core.ai.net) Alive: (0.086s) V=70001 (/therealbitcoin.org:0.7.0.1/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 22.214.171.124:8333 : Alive: (0.089s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 126.96.36.199:8333 : (172-6.core.ai.net) Alive: (0.086s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 188.8.131.52:8333 : (pool-108-31-170-3.washdc.fios.verizon.net) Alive: (0.039s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338 (Operator: asciilifeform)
watchglass: 184.108.40.206:8333 : Alive: (0.084s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338 (Operator: asciilifeform)
watchglass: 220.127.116.11:8333 : Alive: (0.145s) V=70001 (/therealbitcoin.org:0.7.0.1/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 18.104.22.168:8333 : Alive: (0.167s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 22.214.171.124:8333 : Alive: (0.221s) V=70001 (/therealbitcoin.org:0.7.0.1/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 126.96.36.199:8333 : Alive: (0.339s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 188.8.131.52:8333 : (terebe.ns01.net) Alive: (0.561s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=632338
watchglass: 184.108.40.206:8333 : Busy? (No answer in 20 sec.)
shinohai: asciilifeform: Latest job for me is updating a coin based off LTC so will build under musl on alpine. Array overflow occurs in scrypt.cpp because of "scratchpad" size. https://github.com/FredKSchott/litecoin/blob/exp-0.8-backports/src/scrypt.cpp
shinohai: In line 300, changed char to static char and did memset, now worx
asciilifeform: V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63)); << lol wtf
asciilifeform: shinohai: i gotta ask, how didja persuade shitcoinists to give a rat's arse re musl etc ?
shinohai: Well, ironically they want to put nodez on docker container that runs alpine linux, because lightweight.
shinohai: Fortunately it is coin that has no gnu autotool crap, I have not yet figured out how to get that crap to build using my toolchain.
asciilifeform: autoconf is a plague. and not simply cuz weighs ~same as typical proggy that uses it, but also is the fountain of liquishit where you never know exactly what libs will be linked, cuz 'auto-finds' various
shinohai: Yeah that's the issue. Even if you export lib locations, it usually goes "fuck you, imma link to system libs lol".
asciilifeform: 1st step in terraforming a gnuturd is to rip out the autoconfism.
shinohai: I need to figure out a recipe for "modern" coinz. They split everything into 3-4 binaries now (coind, coin-cli, and coin-tx) so haven't really dug in to find out what I need to do to get proper makefile.
asciilifeform: shinohai: lol, i can see why to split into daemon and command-eater, but what's the third one for ?
shinohai: cli part runs stuff like `getnfo` tx part is for producing raw tx's, etc.
shinohai: I haven't built latest "core" Bitcoin yet, but it introduces new binary called "bitcoin-wallet"
asciilifeform: shinohai: do any of these prbs have a proper two-machine-splittable wallet ?
asciilifeform would be rather surprised
asciilifeform finds it odd that (afaik) to date no one implemented proper storage of blox/tx, such that could ask in o(1) 'is this unspent addr', 'how much'
snsabot: (therealbitcoin) 2020-05-15 asciilifeform: idea is, when you eat a block, you store the tx in such a way that they actually point to the ones being spent. in mmap'd array. the respective scripts are kept in another, so that they don't fuck your page alignments. (ea. tx points back to the orig. script. so can reconstitute orig. tx / block on demand )
shinohai: None that I have come across yet.
asciilifeform: would make vastly more practical machine-split walletism
asciilifeform: (among other things)
asciilifeform: there's no fucking reason one oughta have to walk ~entire disk~ to answer any q about subset of the blockchain
shinohai: I always wanted to redo wallet functions in tinyscheme, to use with shiva.
asciilifeform: shinohai: iirc jfw posted exactly this at one pt (i haven't tried tho)
asciilifeform: but iirc his thing required the 'hot end' to be aware of wallet addrs, to answer 'how much'
shinohai: Oh yeah I remember jfw's schem wallet now, but thought it got lost to a python version. (I honestly don't remember)
asciilifeform: shinohai: he had both, wrote in parallel i think
shinohai: ah kk
asciilifeform: it was actually not clear to me, how he sells the thing w/ 1way photodiode, if it requires 2-way conversation w/ stock trb, to work
asciilifeform: ( is user expected to flip the diode by hand...? )
asciilifeform: there was an imho worrisome flavour of 'if someone buys, i'll think of the answer THEN' to it. but perhaps unfair picture, i haven't the full detail.
asciilifeform at one pt considered 'what would happen if asciilifeform asked to purchase jfw's thing'. would show up ? balk ? and if show up, w/ what ?
asciilifeform: and, is there discount if skip the powerpoint slides of mp's face ? cuz i've seen it already, lol
asciilifeform: shinohai: iirc he doesn't charge all that much. maybe if yer bored some time try and buy..
asciilifeform: iirc it's 3 btc or somesuch
asciilifeform: ( dun recall if this includes his plane fare or not )
asciilifeform not nearly enuff of sadist to properly enjoy this kinda thing, even if fella did agree
shinohai: I certainly ain't gonna pay 3 BTC for a glorified alpine linux. Plus Dorian might show up, and I'm outta space in the basement for cultists.
asciilifeform: shinohai: the linux etc. is already on their www. i'm moar curious re whether the thing even glued together, or would they be gluing it while the meter ticks.
trinque: their thing is fine as a collection of musl patches; I happily cribbed a few
trinque: I was pretty annoyed that it just pulls down tarballs from the net.
asciilifeform: trinque: that part did surprise me. it dun cost much at all to set up mirror
trinque: and weighed fixing it for them, and instead built my own, which weighed less.
asciilifeform: i'd expect would be 1st step in opening a shop of whatever description -- just ONE single actual physical server..
trinque: the presence of e.g. php is a pretty strong signal that we have different goals.
asciilifeform: aha, iirc trinque summarized in earlier thrd
shinohai: lol php?
trinque: I mean ocaml and python are in there too
asciilifeform: shinohai: jfw's distro was/is trying to 'kitchen sink'
asciilifeform: x11, firefox, etc
trinque: lol, apparently also redis
trinque flails wildly
asciilifeform: wassat ?
trinque: a db commonly used for caching in webshits
asciilifeform: sounds like a shoddy trimming job ( or do they actually ~use~ that somewhere ?? )
trinque: no idea, but I went on a long "have you folks even considered that you'd have to maintain these items yourselves" rant on my blog, and it apparently did zilch.
trinque: so I stopped.
shinohai: I thought all the hipsters used mongodb
asciilifeform will mirror e.g. trinque's thing, pro bono (tho i expect trinque has own boxen to mirror on, like adult oughta)
trinque: shinohai: redis is at least much smaller, but still yep, of that generation of hipsterdeebs
asciilifeform admits that he aint up-to-date re crackpot db's
asciilifeform: i did try (initially succeeded, but could not reproduce on all irons) cl 'elephant' once
trinque: that sits on a postgres tho eh?
asciilifeform: was prolly the most oddball db i've touched w/ own hands.
asciilifeform: trinque: iirc there was a native oddball thing one could enable instead of pg
asciilifeform: was ~decade ago...
trinque: ah cool.
asciilifeform finds interesting how dbism provokes 'religious' reflex in many folx
trinque: there's this whole "this found object is complex and I can make it do a few things, therefore it's mine" pathology
trinque: this shitwad I collected of open source garbage is emphatically not mine. the bdsm gear in which I wrapped it, is.
asciilifeform: trinque: that, and the sheer terror in the face of idea of having to actually understand what it does
shinohai: or maintain it.
asciilifeform: ftr i consider programmable (e.g. sqlistic) db, a prototyping tool
asciilifeform: like other people, i wrote proggies that used'em, but -- consider prototypes. 'adult' proggy would have concrete set idea of the data structure, and not need sqlism imho.
trinque: they're a bad compromise on a number of fronts, chimera of an fs, an RPC system, data analysis tool, etc
asciilifeform: even garbage collector.
asciilifeform: and arithmetic stack...
asciilifeform: more or less ideal example of ye olde 'greenspun's law'