mircea_popescu: meanwhile in trilema roulette, fell on http://trilema.com/2010/ce-i-de-facut/ ; would propose it to teh rotaku club as perhaps the foremost use of that language found on my blog, stylistically perfect, elegant without equal, i doubt there's much romanian that can stand up to that romanian to be found anywhere.
phf: asciilifeform: there's also sgi machines with their famously well built x11 implementation. i believe there's no source for that one though
phf: if any log reader is getting a 404 not found, even if intermittent, please let me know. i was just getting it for a couple of minutes, but i can't figure out if that's the actual situation on the machine or some russian dns problem
mircea_popescu: phf you mean on the logs ?
mircea_popescu: seems to load ok here.
diana_coman: asciilifeform, re the broken "select" , that is exactly this http://btcbase.org/log/2019-02-10#1894639
a111: Logged on 2019-02-10 16:03 diana_coman: I also tried asynchronous transfer i.e. supposedly "try this and if timeout then do that" but apparently it's in fact still "oh, but ONLY if abortable"
diana_coman: http://btcbase.org/log/2019-02-12#1895120 -> yep, that was precisely my ref when looking at Ada multi-threading and what support it offers; it actually reads a bit better than the barnes' progr in 2012 but it's more focused, obv
a111: Logged on 2019-02-12 01:31 asciilifeform: relatedly to entire subj, http://nosuchlabs.com/pub/warez/burns.djvu is the most readable ref i've found on the subj (of how the thing is supposed to work, that is , when actually worx )
diana_coman: hm, asciilifeform from what I see at a quick glance in that s-taprop-linux__adb it actually calls pthread_kill ONLY if "abort_handler_installed" and that in turn seems set only if not some default state ? might be a clue to follow perhaps, I haven't dug much deeper yet
mircea_popescu: diana_coman is this abort-handler something you can define from within your proggy ?
mircea_popescu: meanwhile at the ~angry~ retard farms, moedirtcircle 26F Primal Prey 4h It Literatly only says "not even kidding" thats it. And I'm the one thats failing 😒😒😒😒 get that stick from up your ass and be nicer to people YOU message. Fuck off dipshit. moedirtcircle 26F Primal Prey 4h Damn I finally just seen your profile. You Literatly have no looks going for you. And not intelligence either, or compassion. Have fun wit
mircea_popescu: h that que the eye roll
mircea_popescu: evidently florrie gave our pal jack keefe some daughters, too. left-handed, to boot.
mircea_popescu: (needless to say, literatly chick also fat as all get-out, but by then one pretty much expects the whole triad.)
diana_coman: mircea_popescu, my hope is that maybe there is some flag or option that sets it; I'll have to dig deeper to find out exactly
diana_coman: !!up bvt
deedbot: bvt voiced for 30 minutes.
diana_coman: bvt's investigation of my ada-won-t-stop test program: http://p.bvulpes.com/pastes/sRqWV/?raw=true
mircea_popescu: is there anything like c's "signal(value, pointer)" in ada ?
diana_coman: "More precisely, one of the issues seems to be that abort seems to be delivered to the child thread after the check for 'thread aborted' has already been done:" -> this ftr is NOT an issue; if only it were delivered and worked afterwards but it's not; that check is just testing stuff, the more important check is that program hangs
mircea_popescu: bvt did you manage to lose your key or something ?
bvt: hello, thanks for voice
bvt: not really, just writing from the salt mine.
diana_coman: mircea_popescu, I'm not aware of anything directly equivalent
mircea_popescu: kk.
mircea_popescu: bvt that's a good point actually, the check comes too late in the current implementation.
mircea_popescu: you know, it'd be grand if this were a blog article rather than a pastebin. odds are ima want to reference it later, and as a factual matter i want ot reference "More precisely, one of the issues seems to be that abort seems to be delivered to the child thread after the check for 'thread aborted' has already been done" specifically even now.
diana_coman: mircea_popescu, the check is in the TEST code
mircea_popescu: yes.
bvt: diana_coman: i agree; in the abort signal handler, there is a snippet of code that ignores the signal (given ZXC exception handling model).
diana_coman: i.e. if anything, you can say that my test code should wait a bit and then check
diana_coman: but ftr when a task is not in this sort of "can't hear you la la", there's no need for any wait, no
mircea_popescu: right. besideswhich we can't go about inserting random numbers in code now.
bvt: mircea_popescu: i will become blog post, but when i get to the home machine.
mircea_popescu: kk
diana_coman: I suppose so far the options seem to be 1. maybe there's a way to actually make it choose the sane abort model 2. change the idiotic "ignore the signal" part
mircea_popescu: diana_coman it looks like we'll end up with a patched tmsr-gnat.
mircea_popescu: and if we're forking, we'll prolly also rename it. pending results of http://btcbase.org/log/2019-02-12#1895163
a111: Logged on 2019-02-12 03:54 mircea_popescu: that's the fucking cost of being a raging asshole.,
bvt: during the gnat build, the sjlj runtime is built, so it should be possible to switch to it and test.
mircea_popescu: i thought it actually did dwarf
mircea_popescu: wasn't the long jump thing slower ~generally~ ?
bvt: i expect it will be slower, but it won't hurt to do the check. the impact will depend on how exceptions are used (i don't think it can have any impact on ffa, for example). but i don't have enough experience with it to provide any numbers
diana_coman: from the horse's mouth at https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/platform_specific_information.html : "the zcx run-time does not support asynchronous abort of tasks (abort and select-then-abort constructs) and will instead implement abort by polling points in the runtime. You can add additional polling points explicitly if needed in your application via pragma Abort_Defer."
diana_coman goes to test with --RTS=sjlj, can't hurt
jurov: !!v 6F70B7BAA2A04B0A47AA67E86022A8C20D2A8A1452414178CAA3809127741859
deedbot: Invoiced BingoBoingo 0.154 << 500$ wire - order 1040
jurov: ^ wire sent
diana_coman: confirmed: with --RTS=sjlj, it does the right thing and actually aborts
diana_coman: although indeed, in this case the check on the tasks' status is too early so not of much use
diana_coman: !!up bvt
deedbot: bvt voiced for 30 minutes.
mircea_popescu: bvt pretty sure the problem with sjlj is that it significantly slows down all code execution, even on code that raises no exceptions.
mircea_popescu: but yes, it can't hurt anything to run it once see what happens.
mircea_popescu: just, i don't think it can be whipped into a workable exception handling mechanism.
diana_coman: myeah, sjlj is going to be slower; onth now I don't quite get it WHY is ZCX not able to support async abort
mircea_popescu: diana_coman this is so fucking retarded, "our thing does not implement the standard". RATIONALE ?
mircea_popescu: so basically, gnat runtime needs an hero to implement dwarf-3 for it, ditch this entire "zcx" nonsense nobody heard about (and apparently for good fucking reason, it's made for z80s or something)
mircea_popescu: diana_coman possibly because of how they do that binder table bs
diana_coman: it kind of has to be but really, as you just said: wtf if it breaks the standard
mircea_popescu: diana_coman what happens if you actually put a pragma Abort_Defer in the loop ?
diana_coman: I read a bit on that and it seems to me that it is meant to actually add ANOTHER "won't abort here" point so I don't quite see it; but yes, I'll try it anyway
mircea_popescu: (i expect it will stop, yes ; but the q is, even slower than good old sjlj perhaps ?)
diana_coman: not even sure it will; brb
mircea_popescu: i thought it adds an abort polling point.
diana_coman: that's how it sounds from adacore's link; then again the description of the pragma in gnat ref manual is "it has the effect of deferring aborts for the sequence of statements (but not for the declarations or handlers, if any, associated with this statement sequence).
mircea_popescu: http://dwarfstd.org/Dwarf3Std.php << for thread completness
mircea_popescu: of course, that's when they moved to unicode. but if memory serves, dwarf2 was kinda braindamaged in some corner cases i now don't recall.
mircea_popescu: motherfucker.
mircea_popescu adds http://dwarfstd.org/doc/dwarf.v2.mm http://dwarfstd.org/doc/index.v2.mm to teh log.
diana_coman: nope, pragma abort_defer doesn't help (it has to be outside loop because it's not accepted anywhere other than immediately after begin and program is stuck just the same)
mircea_popescu: phesf
mircea_popescu: diana_coman do you have a non-trivial (non-huge) ada that you could run once with sjlj and once with zcx in a timing harness so we can get some data ? ideally something that takes 100-1000ms or so.
mircea_popescu: ffa eminently bad for this, cuz of all the ct stuff.
diana_coman: hm, it's all about what the task does so I suppose it's enough to plonk in there some rsa ops
diana_coman: basically those would take long enough
diana_coman: i.e. possibly some of eucrypt's tests
diana_coman: but hm, the underlying stuff that takes most time is the mpi c/cpp anyway
diana_coman goes to look at serpent maybe
mircea_popescu: wrap it in a few for and if clauses, something like like for( a = 1; a < 100; a = a + 1 ){ if a is even then for( b = 1; b < 100; b = b + 1 ){ ... collector = serpent(collector) }}}
diana_coman: mircea_popescu, eucrypt's test on Serpent seem good candidates as one can even adjust how many iterations to do if you want some specific time intervals; current full test of the serpent module (including i/o because of using test vectors in file) is reported by time at ~2.3s without sjlj; this has no tasks/exceptions as such;thing is: time is not extremely precise but I could run I suppose some 1k times and see
diana_coman: time real above (sys is 0.015)
mircea_popescu: right, something like the above, has buncha branches and iterators, not hard to write, get it to run 1k times or so and lessee.
mircea_popescu: 50 + 50 + 50 by the time you've used 20 letters you got the k.
diana_coman: I don't quite get the branches and iterators aka what exactly do you want in there?
mircea_popescu: diana_coman does the example not make sense ?
diana_coman: what's the collector in there?
mircea_popescu: a thing you keep re-serpenting. 64 bit string, w/e, starts as null
diana_coman: ah, can do, yes
mircea_popescu: have it print time begin and end, and there we go.
asciilifeform eats log..
asciilifeform: http://btcbase.org/log/2019-02-12#1895209 << i saw similar, but did not find why. loox like it's explained downthread
a111: Logged on 2019-02-12 13:03 diana_coman: bvt's investigation of my ada-won-t-stop test program: http://p.bvulpes.com/pastes/sRqWV/?raw=true
mircea_popescu: fucking lulz of all time. zcx : zero cost exceptions!!! it's like the zero cost restaurant : you don't have to pay anything and htey don't give you any food.
mircea_popescu: "we manage to provide zero cost exceptions to the user's environment through the simple procedure of just not handling any"
asciilifeform: http://btcbase.org/log/2019-02-12#1895234 << ffa uses exceptions strictly as 'fucking stop whole program (and if it's running on a micro, whole machine, and flash 'dead!' lamp) right nao!' , so won't impact. my understanding is that it'd impact only speed of the ~exceptions~, longjump is slower cuz it crosses pages -- cachaistically.
a111: Logged on 2019-02-12 13:18 bvt: i expect it will be slower, but it won't hurt to do the check. the impact will depend on how exceptions are used (i don't think it can have any impact on ffa, for example). but i don't have enough experience with it to provide any numbers
asciilifeform: *cacheistically
mircea_popescu: asciilifeform afaik it actually slows down everything, exceptions or not. because jumps are slow.
asciilifeform: gotta test
mircea_popescu: this is what i was coming to : do you have a better approach to evaluating the putative sjlj runtime cost than the above thing diana's implementing nao ?
asciilifeform: btw this is why i sewed ffa into a linkable lib. ~it~ can still be built with restrictions even if running inside a proggy with tasks etc
asciilifeform: mircea_popescu: still eating log, not yet seen what diana_coman is baking
mircea_popescu: kk.
mircea_popescu: ima brb make some zero cost public services. like the zero cost garbage pickup, and the zero cost hospital, and so on.
asciilifeform: lol
mircea_popescu: enjoy our zero cost health services from the confort of your own home!
asciilifeform: mircea_popescu: 'abort point' control transfer aint 'zero cost', lol, it adds cost to ~loops~
mircea_popescu: also dun work.
asciilifeform: mircea_popescu: it only worx if you http://btcbase.org/log/2019-02-12#1895105 (i.e. add a 'delay' or i/o instruction (interestingly, the latter always work as abort-point , but only for the async select method )
a111: Logged on 2019-02-12 01:06 asciilifeform: http://p.bvulpes.com/pastes/svUIo/?raw=true << same, but with 'delay 0.0' -- succeeds. variant of same with an i/o call : also succeeds
asciilifeform: inside the loop, that is
mircea_popescu: problem is you can't put a delay 0 ~inside~ the only thing we fear, which is unix peripheral calls.
asciilifeform: ah no, ~those~ work for async-select
asciilifeform: interestingly
asciilifeform: gnat seems to add a stop point when you invoke those
asciilifeform: the 1 thing that you can't async-stop in the zxc model, looks like, is a straight loop with no i/o
mircea_popescu: hm
asciilifeform: ( the idea is, i suspect, that if you have one of ~these~, you fucked yer own proggy at time of writing )
diana_coman: asciilifeform, it works aka you checked that it was *blocked* on that i/o when it got aborted?
mircea_popescu: you know ?
asciilifeform: diana_coman: correct, if you throw e.g. a put_line in there, the async select worx (from which you can then abort)
diana_coman: but put_line doesn't block, no?
asciilifeform: it blocks (for short time)
diana_coman: ugh
asciilifeform: but that actually makes an abort point
asciilifeform: err, an async-select control transfer point
asciilifeform: (i.e. delay-abort test worx from it)
diana_coman: so hm, if you have a put_line and then the infinite loop, does that still work?
mircea_popescu: nah, we need to test this properly, with a macroscopically blocking item
asciilifeform: diana_coman: specifically http://btcbase.org/log/2019-02-12#1895105
a111: Logged on 2019-02-12 01:06 asciilifeform: http://p.bvulpes.com/pastes/svUIo/?raw=true << same, but with 'delay 0.0' -- succeeds. variant of same with an i/o call : also succeeds
diana_coman: certainly, but I'm kind of suspicious that it actually works anyway
asciilifeform: i think mircea_popescu is suggesting to try with ~input~ block
mircea_popescu: asciilifeform here's a thought : fuck a peripheral so as per http://btcbase.org/log/2019-02-10#1894696 it zombies all it touches ; THEN have an ada prog touch it ; and THEN see if abort aborts.
a111: Logged on 2019-02-10 17:37 asciilifeform: will add to this also, that if yer thread is actually wedged, it will almost always be on acct of http://btcbase.org/log/2019-02-08#1893811 , i.e. waiting for a blocking unix i/o, and no matter what yer pthreads proggy is written in , c, ada, cobol, whatever, it will still become a zombie, cuz unix is retarded.
mircea_popescu: if it does i am sold.
asciilifeform: mircea_popescu: the obvious use case is e.g. dead FG
mircea_popescu: exactly what i had in mind for "hey diana_coman check this" if you returned true.
mircea_popescu: anyway, it's fucking insulting as all hell, this zcx implementation. i suspect we will have to fix it anyway, because it is not really feasible to NOT have one, on irons that support it.
mircea_popescu: and fixing means ~have it handle all sigs~ wtf bs half-job is this.
asciilifeform: mircea_popescu: there's also the ada.interrupts package, which actually sets up signal handlers. if all you want is emergency stop of thread, that'll do it
mircea_popescu: i guess, though i am not sure the correct approach is adding packages.
asciilifeform: it's a standard pkg, rather than gnatism (i.e. also worx on raw irons, anyffin with an interrupt controller)
mircea_popescu: yeah but i have nfi what it shits into the obj code, and so on. but not off the table, no.
asciilifeform: it shits a signal handler into the obj. same as you'd have if you were writing daemon in c.
mircea_popescu: did you ever use / look at this thing in any depth ?
asciilifeform: looked but not tested.
mircea_popescu: aite.
asciilifeform: had not yet had occasion to put to use.
asciilifeform: ( just as not yet used task system prior to diana_coman uncrating it )
asciilifeform: currently diana_coman is the 'test all gnat knobs' pioneer; asciilifeform's item is deliberately spartan re what is used, as it was designed to run even on e.g. msdos, where there are no threads
mircea_popescu: well, someone else gets to rage in the logs for a while.
asciilifeform: https://archive.is/HpVWP << likbez re the interrupts mechanism, if we end up wanting to try such thing. ( a bare-iron gnat will ~have~ to use it, for basic machine i/o handling, so asciilifeform is doomed to test it sooner or later , fwiw )
asciilifeform: iirc on unix it uses standard posix signals, on raw irons, whichever interrupt system the chip provides
asciilifeform: http://btcbase.org/log/2019-02-12#1895272 << serpent dun have many jumps in it, recall, it's unrolled, even fewer jumps (conditional or otherwise) than ffa
a111: Logged on 2019-02-12 14:05 diana_coman: mircea_popescu, eucrypt's test on Serpent seem good candidates as one can even adjust how many iterations to do if you want some specific time intervals; current full test of the serpent module (including i/o because of using test vectors in file) is reported by time at ~2.3s without sjlj; this has no tasks/exceptions as such;thing is: time is not extremely precise but I could run I suppose some 1k times and see
mircea_popescu: which is why it got wrapped.
asciilifeform: so it's a poor test of hypothesis of 'does longjmp runtime nail speed of jumps'
asciilifeform: mircea_popescu: in that sense ideal test is empty loop, rather than loop containing an item that is simply heavy but not on acct of jumpism
asciilifeform: i.e. try with simply the wrappings.
mircea_popescu: i wanted something in there of a little heft to make sure we're not being optimized or w/e.
mircea_popescu: not like it makes a diff.
asciilifeform: two nested loops!111
asciilifeform: serpent will do tho
mircea_popescu: there were 20 in the design.
asciilifeform: oughta suffice for test
mircea_popescu: the design calls for 20 loops each spawned by an if-even test.
asciilifeform: aa yea finally read to that pt
asciilifeform: sounds like Right Thing
asciilifeform eaten log.
diana_coman: mircea_popescu, such a thing? http://p.bvulpes.com/pastes/YaMpS/?raw=true
mircea_popescu: precisely!
asciilifeform: loox ideal imho
diana_coman: about 0.45 secs per run reported (without long jump)
diana_coman will let it run some 1k times and see an avg
mircea_popescu: diana_coman did you actually only do a b c ?
diana_coman: so far yes because it's already at 0.46 secs; do you want it up to k or what?
diana_coman: not a big deal; reading here on the sjlj theoretically the biggest slowdown would be when there are some exception handlers so maybe I should add that to testing
diana_coman: i.e. an exception handler, not necessarily a raise
diana_coman: also re zero-cost: "this method has considerably poorer performance for the propagation of exceptions"
diana_coman: such zero
asciilifeform: imho elaborately propagating ( rather than catching in exactly 1 place ) exceptions is bad idea on any platform
diana_coman: asciilifeform, yes; my point was simply that their "zero-cost" is in fact all sorts of costs
diana_coman: that one might not care about that or the other maybe but that doesn't mean it dun' exist now
asciilifeform: diana_coman: it's a riotously inept naming yea
asciilifeform: should've stuck to e.g. 'short jump'/'long jump' mode or similar
diana_coman: I suppose "not catchy enough "
mircea_popescu: diana_coman http://p.bvulpes.com/pastes/6d1R4/?raw=true << like that.
mircea_popescu: the most valuable (from a timing perspective) loops are the innermost ones, because they get jumped in and out of hundreds of tyimes.
diana_coman: mircea_popescu, so up to v, that's clear enough, lol
diana_coman: lemme see
mircea_popescu: diana_coman in ~principle~ zero cost exception handling is this thing : ~instead~ of calling code when exceptions arise, you instead unroll all calls in place, where exceptions might arise. this way you don't get a run-time penalty (because you paid for it in code space)
mircea_popescu: not all archs work well for this, and evidently not all implementations are fucking useful.
mircea_popescu: but really, it's just handler unrolling/inlining, depending how you look at it. ie, zcx is a ~concept~, much like "unrolled loops" or w/e.
asciilifeform: mircea_popescu: recall that an exception differs from other control transfers in that it can unwind the call stack
mircea_popescu: yes.
asciilifeform: this always costs
mircea_popescu: right, it's a misnomer, i'm not arguing that part.
asciilifeform: ( in ffa, exceptions are a 'catch fire' condition, and drop into the last-chance handler, but in moar complicated proggy, with, say, devices, you may want to actually handle and keep working )
mircea_popescu: it's not clear that the complex exception handling mechanism with propagations and whatnot that eventually yielded the "try/catch" mechanism exposed in fucking code is ~at all useful~.
asciilifeform: imho it aint
mircea_popescu: much like there's a very sensible design reason to not even expose abort in ada code : do NOT encourage morons who http://btcbase.org/log/2016-01-21#1379603
a111: Logged on 2016-01-21 13:29 asciilifeform: 'if i make it what i think is the right size, it crashes!111'
asciilifeform: i use'em as strictly as equivalent of the red lamp
mircea_popescu: because in truth, abort is the wrong solution in 999 cases out of 1k
mircea_popescu: nevertheless, baby bathwater over here.
asciilifeform did point out, this, in the 'order son to seppuku' thrd
asciilifeform: but also agree with mircea_popescu , you gotta have a way to halt a wedged device i/o at least.
mircea_popescu: seems to me self-evident that there's need for exactly two layers of exception handler : a) our code fucked up, in which case end it all or else b) some ~item~ such as whatever, a fg fucked up, in which case REPORT THIS TO ME, don't wait for it forever./
mircea_popescu: ie, two layers are needed to implement the citizen/foreigner distinction.
asciilifeform: seems to me that the correct layer for timeout is the i/o call
asciilifeform: rather than the enclosing thread
mircea_popescu: but in any case one can't have an ada machine without working abort (which specifically means, NOT import the c consrtruct, cuz wtf am i gonna do.)
mircea_popescu: asciilifeform but then i gotta what, write my own drivers/kernel mods for every peripheral ?
asciilifeform: nah
asciilifeform: just need a working timeout in the read call
mircea_popescu: which is either ada or isn't.
asciilifeform: i/o arguably is always 'not ada' when on unix box ( see ave1 for detail )
mircea_popescu: pretty much
mircea_popescu: (yes, the objection stands, "mp, ada machjine long way off because all peripherals are c-machines". sure, they are. we also make items.)
asciilifeform: on raw irons tho, gotta have a mechanism that actually 'ada', given as that's the only scheduler you have, unless baked new
mircea_popescu: the issue of having every god damn peripheral aware of time is another fucking bojum
mircea_popescu: what if i dun wanna.
asciilifeform: or, even moar egregiously, ~of other periphs~
mircea_popescu: see, cuz things flow a certain way. "we want to include morons, retards and other bureaucrats" --therefore--> "smartphones" and "ntp" and so on.
asciilifeform: !#s dma
a111: 113 results for "dma", http://btcbase.org/log-search?q=dma
asciilifeform: ^ see also
mircea_popescu: "peripheral should know of time" --> ntp.
mircea_popescu: and so on, this constant up AND DOWN the tree calling paradigm recreates c++, java and usg necessarily.
asciilifeform: hrm i can't actually think of a periph that 'wants to know time'
mircea_popescu: the only way to have sane republic is precisely the http://trilema.com/2015/causes-and-purposes/ which specifically here means, NO CALLS BACK UP THE TREE.
mircea_popescu: topnode evaluation ~can NEVER~ depend on lowernode value.
mircea_popescu: asciilifeform how's it to have timeout if it doesn't know time ?
asciilifeform: mircea_popescu: this is an ancient evil, was called 'abstraction inversion'
mircea_popescu: yes.
asciilifeform: mircea_popescu: you dun make timeouts using magic periphs, but using the os scheduler ( which in turn uses interrupt controller , having oscillator of some form so you can do slices )
mircea_popescu: var selectedTextBox = (TextBox)sender, if (IsAdmin) { selectedTextBox.Enabled = true; selectedTextBox.Text = superSecretPassword; } else{ selectedTextBox.Clear();}
mircea_popescu: asciilifeform so then you do it from ada.
asciilifeform: lolwat
mircea_popescu: asciilifeform thinkaboutit! if isadmin!
asciilifeform: where was this?
asciilifeform: ( or didactic? )
mircea_popescu: rather, epic. c#ism
asciilifeform: lol!
mircea_popescu: asciilifeform https://stackoverflow.com/questions/1916260/more-fluent-c-sharp-net << item
asciilifeform: mircea_popescu: i associate shitoverflow with articles like 'how do i cast 'fireball' in real life?' ( actual find )
asciilifeform: 'my thesis advisor heils hitler, wat do'
asciilifeform: 'my thesis advisor ate my pet fish'
asciilifeform: and so forth
mircea_popescu: this is just an epic case of http://btcbase.org/log/2015-06-22#1172831
a111: Logged on 2015-06-22 21:22 mircea_popescu: ascii_field this goes right into our discussion about how the only reason lisp is ok where c is shot is that the hordes haven't sat on lisp but on c, would have been the other way around if they had sat the other way.
asciilifeform: i usedta have a collection of these, threw out, got trdious
mircea_popescu: tedious or tardious ?
asciilifeform: both
asciilifeform: btw, if you use exceptions, erry thread needs own last-chance exception eater (they dun cross thread boundaries)
asciilifeform: ( and since nobody asked 'where exactly does ffa use exceptions? i dun see any throws' -- answr is, ~all~ ada coad where bounds checks are enabled, theoretically 'uses' exception, if you break a bounds check what do you suppose happens.)
asciilifeform: the part i dun use is 'handling', they dun get handled, they go to the last-chance trap where proggy stops.
asciilifeform: ( invoking coad ~can~ use handling, if it wants, the lib itself duncare about this )
asciilifeform: ( ffacalc ~does~ have a handler, strictly for trapping invalid cmdline args, ln. 75. )
asciilifeform: ( and in the FG reader -- again cuz the underlying i/o routines produce'em )
asciilifeform: imho a proggy should not ever produce exceptions during normal operation, unless iron smokes.
asciilifeform: ( at which point, the job of the proggy is to 1) tell operator ~which~ iron smoked 2) come to full stop, failing 'deadly' or 'safe' depending on design context )
asciilifeform: in e.g. airplane, 'exception' should mean that the entire comp shuts down and transfers control to 1 of the hot spare duplicates.
BingoBoingo: !!v 72CF1A58904C99ADD58670B0B4E205CF1373E7414E89F48A76C40698F6D84A7E
deedbot: BingoBoingo paid jurov invoice 7
BingoBoingo: ^ Thank you jurov
asciilifeform: guten tag BingoBoingo
BingoBoingo: Buenas tardes asciilifeform
asciilifeform: http://btcbase.org/log/2019-02-12#1895198 << btw diana_coman , if you know of other readables , plox to post (or at least the titles, i can dig up with own hands ) ; i oughta have posted burnes et al earlier, but seems like errybody is allergic to scans , so didn't hurry . and lemme know if you end up wanting others, i have the 'spark' text for instance.
a111: Logged on 2019-02-12 08:00 diana_coman: http://btcbase.org/log/2019-02-12#1895120 -> yep, that was precisely my ref when looking at Ada multi-threading and what support it offers; it actually reads a bit better than the barnes' progr in 2012 but it's more focused, obv
asciilifeform: ( fwiw i (and other ru warez folk) like ancient at&t 'djvu' format, it is moar or less jpeg with optional ocr searchable track. a 300MB pdf turd becomes a 2-3MB djvu. )
asciilifeform: http://btcbase.org/log/2019-02-12#1895366 << hm what was the runtime ~with~ longjmp ? (or still going ? )
a111: Logged on 2019-02-12 14:53 diana_coman: about 0.45 secs per run reported (without long jump)
asciilifeform: diana_coman: when that thing is done running, plox to tar it up, i'ma replicate on other irons ( if effect is cache-sensitive, may show diff b/w irons )
diana_coman: asciilifeform, that was just the 3 loops (a,b,c); over 1000 runs, the avg were similar with and without longjmp i.e. 0.46744 without and 0.46754 with longjmp; atm running the full version aka a-v and that hasn't yet finished
asciilifeform: diana_coman: i suspect then , that i was right re http://btcbase.org/log/2019-02-12#1895287
a111: Logged on 2019-02-12 14:13 asciilifeform: http://btcbase.org/log/2019-02-12#1895234 << ffa uses exceptions strictly as 'fucking stop whole program (and if it's running on a micro, whole machine, and flash 'dead!' lamp) right nao!' , so won't impact. my understanding is that it'd impact only speed of the ~exceptions~, longjump is slower cuz it crosses pages -- cachaistically.
asciilifeform: i.e. only affects cpu cost of exceptions, rather than all jmp.
diana_coman: according to ref manual, of handlers (i.e. regardless of whether exceptions are raised or not)
asciilifeform: hm. would seem that the cost delta is very small, then.
diana_coman: hence I wanted to actually add some handlers in there and see but atm it's still working on the full run loops-only so will see after that
asciilifeform: makes sense.
diana_coman: perhaps that's just because too few loops; I'll report back when I have the numbers though it might take a while
asciilifeform: will be interesting to see what comes of this. if cost remains small , it hardly makes sense to bother with 'zcx' then
diana_coman: for added lulz, gnat on macos has only zcx :|
asciilifeform: diana_coman: gnat on crapple , i am surprised that it worx at all.
asciilifeform: gdb, for instance, doesn't.
diana_coman: no idea if it works really
asciilifeform: or static linking.
asciilifeform: diana_coman: ffacalc fwiw builds an' runs on crapple, but only in 'debug' (misnomer, you can't actually debug..) mode
asciilifeform: dynamically links.
asciilifeform: currently i have 0 intention of supporting the thing on sad platforms, folx who insist on crapple or microshit oughta do it with own hands
diana_coman: certainly
BingoBoingo: !!v 08A654BB3DBD11863F693A5D3772CC279A9990FE3F131765AE1EEEE5927DC3C4
deedbot: Invoiced mircea_popescu 0.05780660 << S.MG rental server monthly
asciilifeform: not that i aint willing to port to e.g. vax or whatever. for a fee..
BingoBoingo: !!v 10BE0A48EF210E032D6D51ACDE5412F3EBD12E8DE2EAB4CE331CDFD5E5166646
deedbot: Invoiced trinque 0.04364028 << Colocation monthly, shared hosting waived due to January downtim
BingoBoingo: !!v 30CD9BD59B8BCD54B770BABDF583F606374B3F1792C9419AAC0381D0FC439591
deedbot: Invoiced jurov 0.04364028 << TBF colocation monthly
BingoBoingo: Pizarro invoices sent based off the auction settled price point of 1 BTC = 3247 USD
asciilifeform: diana_coman: iirc winblows ~also~ only zcx.
asciilifeform: i dun see why you'd care, tho, unless game ~client~ also gotta thread.
diana_coman: no, windows supposedly has zcx with win32 threads
diana_coman will bbl
asciilifeform: zcx ? or longjmp ?
asciilifeform: recall, zcx dun support async apparently at all, anywhere
diana_coman: both with win32 threads
asciilifeform: aa
asciilifeform not tested.
mircea_popescu: BingoBoingo for which month is this ?!
mircea_popescu: http://btcbase.org/log/2019-02-12#1895474 << i suppose the next test is a multicall, keep calling two procedures from each other and returning randomly.
a111: Logged on 2019-02-12 18:27 diana_coman: hence I wanted to actually add some handlers in there and see but atm it's still working on the full run loops-only so will see after that
asciilifeform: mircea_popescu: good chance to fill the stack
mircea_popescu: not THAT many
mircea_popescu: http://btcbase.org/log/2019-02-12#1895478 << iirc that's how zcx even became a thiong on gcc.
a111: Logged on 2019-02-12 18:29 diana_coman: for added lulz, gnat on macos has only zcx :|
asciilifeform: mircea_popescu: believe or not, there are ancient moldy irons without interrupt controllers.
BingoBoingo: mircea_popescu: February
BingoBoingo will add "concrete period" instead of billing cycle to the invoicing worksheet
mircea_popescu: BingoBoingo is the case i am actually postpaying rather than prepaying here and so early feb i actually paid for jan ?
asciilifeform: BingoBoingo: couldja plox add the billing calendar (with the hash-pseudonymised subscriber names from earlier) to the public www ? so folx dun have to ask why they're being billed at time t and for what
mircea_popescu: asciilifeform something like : when called, procedure a increments global flag x and if global flag x is even calls b ; when called, b increments global flag y, and if global flag y is even calls a else calls c ; c increments both x and y.
asciilifeform: mircea_popescu: would work
mircea_popescu: might need some fiddling to get the numbers right, this one might only grow still. but anyways.
asciilifeform: ( would work so long as you take care to return. but i think that is obv )
mircea_popescu: basically idea is, a markov chain of callings.
mircea_popescu: stops probabilistically eventually -- which seems a bad idea until you realise you get counts, can compare those.
asciilifeform: i really gotta genesis my rdtsc asmism thingie for gnat
asciilifeform: ( so as to get actual ticktimes for this & other empiricals )
mircea_popescu: asciilifeform you propose the init=clock end=clock method no good ?
asciilifeform: it's perfectly good, but to get decent resolution you end up needing gigantic # of repeats ( and unixism machine churn begins to drown the signal )
mircea_popescu: i do not believe larger experiment gets drowned. on the contrary, larger experiment ~drowns the churn~.
asciilifeform: ( 1 moar reason why i'd like that msdos cross-gnat.. on msdos, the wall clock time is invariant )
mircea_popescu: there is that.
BingoBoingo: mircea_popescu: In early february you paid the Janaury invoice issued in Janaury. It's the case you've come into post paying, but on the strength of your being mircea_popescu I have not found reason to be alarmed or fuss.
asciilifeform: mircea_popescu: recall the http://btcbase.org/log/2019-01-10#1886261 incident ?
a111: Logged on 2019-01-10 14:08 asciilifeform: aaand to round off : it vanished on the test box also. culprit appears to have been a running raid-verify job...
mircea_popescu: i c@
mircea_popescu: asciilifeform sure.
asciilifeform: that sorta thing is maddening on unix pc.
mircea_popescu: i agree!
asciilifeform: makes it quite tricky to get trooly precise timing for anyffing with serious cpu cost
mircea_popescu: shorter experiments not statistically better still, irrespective of that nonsnese.
asciilifeform: longer obv. better, tho still need a # of independent runs .
asciilifeform: ( see e.g. ch15 ffa )
asciilifeform: http://btcbase.org/log/2019-02-12#1895192 << before this gets lost -- irix has reputation as stable, but porous as all fuck ( sgi never apparently gave half a shit ) ; not that we're at risk of cribbing from it, as you pointed out, 0 src
a111: Logged on 2019-02-12 06:29 phf: asciilifeform: there's also sgi machines with their famously well built x11 implementation. i believe there's no source for that one though
BingoBoingo: <asciilifeform> BingoBoingo: couldja plox add the billing calendar (with the hash-pseudonymised subscriber names from earlier) to the public www ? so folx dun have to ask why they're being billed at time t and for what << We have customer accounts here on the public www http://pizarroisp.net/pizarro-records/ listed just below the price points. I have been updating it as part of compiling the statements. I don't recall if I pass out
BingoBoingo: customer codes to customers. Will issue GPgrams.
asciilifeform: aa ty BingoBoingo
mircea_popescu: BingoBoingo if select thing worked you could just put that link in the !!billing
BingoBoingo: WWW fixes and cleanup are the order of the week.
mircea_popescu: cool.
feedbot: http://qntra.net/2019/02/madame-secretary-mike-pompeo-declares-huawei-deployments-obstacle-to-us-partnership/ << Qntra -- Madame Secretary Mike Pompeo Declares Huawei Deployments "Obstacle To US Partnership"
asciilifeform: BingoBoingo: http://qntra.net/2019/02/madame-secretary-mike-pompeo-declares-huawei-deployments-obstacle-to-us-partnership/#comment-124253
trinque: Madame Secretary << roaring with laughter over here.
BingoBoingo: asciilifeform: Replied
BingoBoingo: trinque: ty, Gotta keep the office of losers connected to Hillarity
trinque: who says there are men in the femstate anyway
BingoBoingo: Well with Trump's increasingly disappointing performance as "best clown in the circus"...
BingoBoingo: Meanwhile in the Heathen Studies department: "Reddit's latest funding round values its users at a lower price than any other social network. "The company announced Monday it had raised $300 million in its Series D investment round at a valuation of $3 billion," reports CNBC. "CNBC previously reported the company's annual revenue topped $100 million, according to sources familiar with the matter, and at 330 million monthly active users
BingoBoingo: (MAUs), this would make Reddit's average revenue per user (ARPU) about $0.30." From the report: "
feedbot: http://bvt-trace.net/2019/02/gnat-zero-cost-exceptions-and-asynchronous-task-aborting/ << bvt's backtrace -- GNAT Zero Cost Exceptions and Asynchronous Task Aborting
bvt: ^ i got some really weird results here, would appreciate if someone tested the last snippet (constraint_error) on ave1's gnat.
asciilifeform: bvt: re the pragma polling bit : abort aint instantaneous, whereas the if A(I)'Terminated ... item happens immediately
asciilifeform: gcc5 breakage extends into the Ada world << noshit, if yer on a gcc5istic gnat, all bets are off, they fucked the back end
asciilifeform: i recommend to leave gcc5 entirely alone (unless specifically digging for lulz)
asciilifeform: maybe musl implements some functionality is a way unexpected << where didja get a gcc5istic gnat built on musl, bvt ??
bvt: myeah, i will drop gnat2017. did not manage to make ave1's running quickly today, will switch on ~thursday
bvt: built myself, based on ave1s patches and musl-cross-make (https://github.com/richfelker/musl-cross-make/ , i had some experience with it so did the work rather quickly).
asciilifeform: aa
asciilifeform: afaik there is exactly 0 win from gcc5+, and plenty of lose.
asciilifeform: ( re what lose -- see logs. )
bvt: yes, the only reason i did not switch yet is the convenience of m-c-m for development (i.e. getting i386 and aarch64 builds ready using it took me a few minutes of config time)
asciilifeform: also ftr 'polling' knob does 0 on ave1 gnat. seems like it exists strictly for winblows.
asciilifeform: bvt: m-c-m ?
bvt: no, they explicitly tell in the docs that you have to rebuild the runtime to use it on other systems
bvt: musl-cross-make
asciilifeform: aa
asciilifeform: currently i suspect that polling (even if can be made to work errywhere) will be 9000x moar expensive than longjmpism ( the latter only adds to cost of exceptions, the former -- to ~all~ loops )
asciilifeform: not to mention, the s.mg folx invoke external cppisms , and these won't have poll markers inside'em no matter what you do
bvt: you can enable polling per scope/loop, don't have to do it globally. re cpp things - true.
asciilifeform: bvt: whole point of multithreadism is to spread out the cpu-bulky work over cores, so i expect most cycles would be spend inside where enabled
asciilifeform: i.e. may as well be global
asciilifeform brb,teatime
bvt: may be. tbh i don't think i can reason on this q based on only the test code.
asciilifeform: bvt: my reasoning is based on the docs description of how implemented. but certainly worth a test, if anyone can be arsed ( given the 'all loops gotta be doctored' thing, my understanding is that 'polled' proggy would choke if wedges inside a cppism )
asciilifeform: 'polled' mode seems to resemble the 'cooperative multitasking' found on ancient crapple and win9x
asciilifeform: where you had to explicitly yield a thread, or whole machine ground to halt
bvt: asciilifeform: sure, cpp code won't be instrumented. the 'polled' mode was iirc in the guts of the ancient linux threads implementation.
asciilifeform: bvt: rright. my observation is, it aint suitable for a general-purpose kill switch , the prob orig. posed by mircea_popescu , cuz polled mode can only give ability to kill items which 'agreed' to be killable
asciilifeform: pollism may be suitable for an embedded sys, where gnat is running on naked irons, and the entire contents of the machine was built in 1 shot in the same gnat. but errywhere else it imho is liable to break.
asciilifeform: errr, where yer proggy (rather than gnat) is on naked irons
asciilifeform: if you have cppola ( or even, e.g., an asm-enhanced ffa ) in yer loop, it won't be poll-killable.
bvt: it won't we poll-killable if the whole loop is in cpp/asm. if just a linear code - should not be too bad; sjlj should still work better.
asciilifeform: a linear process can still be heavy enuff (e.g. a 8192-bit primality test on ffa) that you wouldn't want to wait for it to finish when killing a thread
mircea_popescu: re polling and in particular http://bvt-trace.net/2019/02/gnat-zero-cost-exceptions-and-asynchronous-task-aborting/#selection-197.0-197.47 : i fucking loathe the idea.
mircea_popescu: if there's a mechanism in computing that's supposed to be push not pull, that's exceptions. can't fucking have a pull mechanism for exception handling, and i see 0 gaisn from moving the honest braindamage of "if ZCX_By_Default then return;" into an elaborately & contrivedly hidden same exact thing.
asciilifeform: mircea_popescu: if (and only if) yer scheduler actually runs on the naked iron, a 'polled' sys gives ~less~ nondeterminism than a fully asynchronous one. but nobody's got this iron of yet.
asciilifeform: imho zcx isn't actually of use on the current gnat, at all
mircea_popescu: it doesn't seem so.
asciilifeform: the avionics people seem to use it, but they (near as i was able to learn) dun kill tasks at all, and regard any detected wedge as a http://btcbase.org/log/2019-02-12#1895456 condition
a111: Logged on 2019-02-12 16:10 asciilifeform: in e.g. airplane, 'exception' should mean that the entire comp shuts down and transfers control to 1 of the hot spare duplicates.
mircea_popescu: but seems he ALSO found a race condition in the handlers ?
mircea_popescu: http://bvt-trace.net/2019/02/gnat-zero-cost-exceptions-and-asynchronous-task-aborting/#selection-263.0-263.78 << rather agreed.
asciilifeform: mircea_popescu: i don't specifically know, but suspect that the eggog happens when parent thread dies and (for moment) the children keep fandangoing
asciilifeform: ( which, perhaps surprisingly, unix permits )
mircea_popescu: possibru. not clear at all what's going on in there.
asciilifeform: tricky to even answer this definitively, the conventional debug facility is shite for thrds
jurov: !!v 336DC30CA43C83BA759B9B7D732082BDF64F65902D9BA3A9F6BCCBC9B2C8C669
deedbot: jurov paid BingoBoingo invoice 8
jurov: thanks, too!
mircea_popescu: http://btcbase.org/log/2019-02-12#1895584 << pretty sure.
a111: Logged on 2019-02-12 23:03 bvt: asciilifeform: sure, cpp code won't be instrumented. the 'polled' mode was iirc in the guts of the ancient linux threads implementation.
asciilifeform so far thinks -- if zcx actually measurably wins somewhere, i dun know where that is
mircea_popescu: i'm still waiting for diana_coman to return.
asciilifeform: ( aside for weirdo 1970s chips with no interrupts... )
asciilifeform: there's a lulzy 'pentagon standard' one, the name presently escapes me, iirc it is in the log tho
asciilifeform: orig ada-83 standard was baked when it was still king
a111: Logged on 2015-03-12 01:50 asciilifeform: 'mil-std-1750a' for the curious.
asciilifeform: 16-bit thing, circa ~1980
asciilifeform: mircea_popescu: thinking about it -- 'zxc' strikes me as a classic case of http://btcbase.org/log/2018-10-25#1866191 and impedence mismatch generally. it was clearly written as attempt to 'deterministic scheduler on ??? iron/os', but fails, cuz you can't actually spackle away impedence mismatch b/w the underlying platform and the proggy
a111: Logged on 2018-10-25 19:10 asciilifeform: when you add compatibility spackle, serious reader is not saved from reading the thing you spackled over -- on the contrary nao he has to read the ~original~ rubbish ~plus~ your spackle, however much it weighs.
asciilifeform: *zcx
mircea_popescu: certainly seems to be emerging in that light.
asciilifeform: imho it is a curse on programming folx, that spackling seems to work as well as it does, really it is the equiv of eating 'tasty' pb paint chips, leads to grief always
asciilifeform: ( for aficionados, see also e.g. http://www.loper-os.org/?p=55 )
asciilifeform: in particular, http://www.loper-os.org/?p=55#selection-21.279-21.806
asciilifeform: asciilifeform often points out that we have buffer overflows on acct of the iron having nfi what 'integer', 'character', 'string', 'code' are , just pushes untagged words around; but it is also the reason why we have e.g. thread deadlocks (on an iron which 'knows' when yer e.g. assigning a variable, deadlock is ~impossible)
feedbot: http://trilema.com/2019/am-o-pula/ << Trilema -- Am o pula
asciilifeform: meanwhile, in n00b school, http://logs.bvulpes.com/asciilifeform?d=2019-2-13#461543
mircea_popescu: hey, good for you.
asciilifeform: am o pula << i automatically recalled the http://btcbase.org/log/2016-06-21#1486093 rhyme
a111: Logged on 2016-06-21 01:18 mircea_popescu: "mult stimate ion caciula, om al muncii fara scula : cit ai degete si limba, legea tarii nu se schimba."
mircea_popescu: hehe.
mircea_popescu: in ro the expression'd be rather negative, "i got nothing". cuz "o pula" works also as universal negation, "do you have any money ?" "i got dick"
asciilifeform: it's funny , when asciilifeform went to 'museum of communism' in timis, pawed through buncha ancient lulzlit there, and photo'd 'a la minox' to read through laters and chew on the 'limba de lemn'
asciilifeform: ( so far impression is, roughly similar to '80s su, tho with ~less~ obv. leakage of suppressed laffter through the pg , oddly , i expected moar )
asciilifeform: mircea_popescu: negation << >> 'нет ни хуя' etc
asciilifeform: worx same.
mircea_popescu: kinda hard to quantify
asciilifeform: or 'fuck no you won't find' ~= хуй найдешь
asciilifeform: etc
asciilifeform: or, say, pelevin's orcs sing their 'traditional folk song', 'Из этой жопы хуй уедешь'
asciilifeform: (~= 'the fuck you'll ever leave this shithole')
asciilifeform 1 day will post his engl. riff on subj, tailored for his particular shithole
asciilifeform brb,meats
mircea_popescu looks forward lol
mircea_popescu: BingoBoingo do you happen to recall a trilema article about some moronic "pick up artist" and his tedious adventure getting some 17yo i think it was to sorta-take it, after half a day of pigeoning ?
mircea_popescu: might've been http://btcbase.org/log/2015-02-02#1002258 dork, but i can't fucking find no trace of it.
a111: Logged on 2015-02-02 06:39 mircea_popescu: Daryush Valizadeh,[1] (born June 14, 1979)[2] also known as Roosh V and Roosh Vorek, is an American[3] writer, pick-up artist[4][5] and self-styled "love tourist"[6] of Iranian and Armenian descent,[7] known for his writings on seduction and antifeminism.
hanbot: mircea_popescu dyou mean http://trilema.com/2018/in-which-a-bizarre-character-wanks-it/ ?
mircea_popescu: ah ty!
mircea_popescu: for some reason i never named him in there.
asciilifeform remembers the roosh-v d00d, but for something quite else, iirc it was him who at one pt had asciilifeform's www linked as -- insultingly but lulzily -- 'the mencius moldbug of computing'
asciilifeform: (this was prior to mold going public re his 'kompyooting' )
asciilifeform: i had nfi he was a proud , eh, son of persia