jackdaniel changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook> | Pastebin: <https://plaster.tymoon.eu/>
<nytpu> i've seen furry porn games that look better than this shit: https://www.youtube.com/watch?v=SAL2JZxpoGY
rurtty has quit [Quit: Leaving]
<nytpu> "the metaverse" is entirely bullshit to try and revive facebook's prominence, especially trying to get on the "web3" hype train
<aeth> "The metaverse" is two entirely different hyped things. One, is the premise that people would switch from buy-once-enjoy-forever games to extremely expensive pay-to-win NFT/web3 clones (e.g. a Minecraft where you have to buy every block, or a pay-to-win multiplayer version of Pokémon with worse designs). This is just a bubble designed to quickly cash in on the hype. Nothing will come from it.
<aeth> However, Meta can't be dismissed out of hand because they own Oculus and thus own a huge portion of the (currently small) VR market. There definitely is a dystopia possible in the future where "Meta" (Facebook) owns gaming.
<aeth> And if they control it as tightly as Apple controls apps, that would even go as far as the programming language selection, which would be very bad for Common Lisp programmers in this space.
<jcowan> Windows doesn't have a C compiler (yet)
<hayley> jcowan: were <stdatomic.h>
<aeth> "The metaverse" as Meta proposes it (which is separate from the NFT/web3 bubble) is a ridiculous idea, but they can still successfully pivot to something that works. The iPhone was originally supposed to only have web apps and yet now it has a very successful App Store.
<hayley> Was not fun porting my C11 code to Windows.
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jcowan> I mean, of course there are C cmmpilers that run on and generate code for Windows.
<nytpu> the latter is the worrying thing. but at this point vr is still so expensive (and is requiring more expensive hardware to run it by the year) that doubt it'll be the main gaming platform any time soon
<jcowan> Actually, there are four C compilers: gcc, clang, MSVC, and Vacietis.
<jcowan> for the four main operating systems: Linux, MacOS, Windows, and Common Lisp.
dra_ has quit [Ping timeout: 268 seconds]
<aeth> nytpu: Yes, but if it winds up with a locked down situation where you can only use one game engine (which definitely conforms to some successful pivot on the "metaverse" concept) or an approved list of game engines, then that's probably going to exclude Common Lisp entirely from being a first class citizen there.
<aeth> It's already hard enough to use Common Lisp.
<verisimilitude> Common Lisp would be a stupid choice for VR anyway.
<aeth> "you can't use Common Lisp for VR" "haha 1440p 170 Hz goes brrr"
<verisimilitude> What?
<aeth> it's a meme
<verisimilitude> I don't think in memes.
<jcowan> No, memes think with you!
<verisimilitude> Anyway, Ada would be better for VR than anything with GC.
<nytpu> verisimilitude: the point isn't for common lisp specifically, the point is you couldn't use any language you may want to use. your only option is to use Meta® C-Tesseract™ on the Panopticon Engine™
<verisimilitude> I'm familiar with the meme, unfortunately, aeth.
<verisimilitude> Don't program for stupid bullshit, then.
<verisimilitude> I only use UNIX because I'm forced to use it.
<aeth> nytpu: right
<jcowan> Unix is beautiful
<aeth> nytpu: Ada is even less likely to make the cut than CL because it's uncool
<aeth> at least CL is cool
<hayley> verisimilitude: Into the concurrent GC you go.
<aeth> hayley: real-time, concurrent, parallel GC
<aeth> if you must use the correct combination of buzzwords
<hayley> I've got 1/3 written so far.
<jcowan> aeth: I think that is a sewer
<verisimilitude> UNIX is shit.
<jcowan> (the r/t c. p. gc)
<verisimilitude> UNIX is directly responsible for further shit, such as the WWW.
<hayley> jcowan: Thanks for reminding me I need to think of a hard-to-read acronym like gencgc for generational parallel mark-region GC.
<aeth> anyway, a platform locking you into one language is definitely a possibility (see the web and JS, although WASM is now finally ending that... very slowly. And you can see JS popularity starting to slowly decline, too, actually)
<aeth> but even when the language isn't locked, one language can dominate. Objective-C basically only exists as a thing people know because of iOS.
<jcowan> there are now a bunch of language compilers targeting JS
<aeth> yes, TypeScript is the only one that has been successful, though
<hayley> Oh, I forgot the C for conservative too somewhere. If it were pmrcgc someone would say "Huh, where's the refcounting?" because they parsed it the wrong way. pcmrgc has a funny four letter prefix, and eventually I should do an ARM port.
<aeth> TypeScript is probably the actual thing that's making JS's popularity appear to decrease (although it's notoriously hard to measure this sort of thing), not Rust-on-WASM and certainly not CL-on-WASM
<jcowan> "A lot of people use something" /= "it is a success"
<jcowan> A lot of people use PHP, and that really *is* shit.
<verisimilitude> That's the only reason almost anything related to computing would be considered successful, jcowan.
<jcowan> Cobol lis a huge success, then.
<aeth> cobol lisp
<verisimilitude> COBOL is a success because, unlike JavaScript, it does useful work and actually works as advertised.
<nytpu> well, it actually was a huge success
<jcowan> and continues to be so
<verisimilitude> See, COBOL came into being back when computers actually had to work, or they wouldn't be used.
<jcowan> Since the introduction of desktop computers, the productivity gains from computing have been zero.
<nytpu> i would say the popular defintion of "success", particularly in software, is "as many people as possible use it". doesn't mean it's your own personal definition of success, nor does it mean "successful software" = "actually good software"
<verisimilitude> Now, fucking Protonmail can load for several minutes downloading several megabytes of shit before giving up with an ``oopsie woopsie, fucky wucky'' error message and it's normal for WWW garbage.
<jcowan> (Mainframes produced huge productivity gains.)
<aeth> jcowan: I don't believe that. Just version control and then distributed version control are major improvements in productivity because you can experiment and if that experiment fails you can revert. Without having to think about it.
<jcowan> That's the productivity of programmers, not of companies that use software.
<verisimilitude> Version control used to be in the filesystem, where it belongs.
<jcowan> Not really. I've used versioned filesystems, and they are not fit for purpose.
<verisimilitude> Which one?
<verisimilitude> UNIX has no real versioned filesystems.
<jcowan> VMS and Interlisp
<verisimilitude> Oh, in that case, tell me more.
<verisimilitude> VMS seems much better than the UNIX way.
<jcowan> The main problem is that they represent successive edit or compile runs rather than logical increments of work. The secondary problem is that there is no correlation: they are like SCCS or RCS, not like Subversion or mercurial or git.
<aeth> verisimilitude: re error messages, nothing beats ed. https://www.gnu.org/fun/jokes/ed-msg.html
<jcowan> A third problem is synchronization between users: we may have identical files, but yours is perhaps version 12 whereas mine is version 67.
<aeth> "Note the consistent user interface and error reportage. Ed is generous enough to flag errors, yet prudent enough not to overwhelm the novice with verbosity."
<verisimilitude> That's a lot better than accidentally overwriting a file and being out of luck.
<aeth> (unfortunately, someone has patched GNU ed to actually quit on C-d at some point in the past 10 years, ruining the old joke of not being able to quit ed)
<jcowan> Sure. That's why I adopted RCS right away and migrated up to Bitbucket. (I don't like git, but I have to use it.)
<fe[nl]ix> aeth: did you try the SBCL I compiled ?
<verisimilitude> Productivity has nothing to do with collaboration in this case.
<doomduck> is there a way to format print with floats rounded even when they're fields on a struct?
<verisimilitude> I'm more productive by being able to undo mistakes, and UNIX hates forgiving even the most minor of mistakes.
doyougnu has joined #commonlisp
<jcowan> I am talking about economic productivity: how much input $ is required to produce a given output $.
<verisimilitude> Oh.
<jcowan> Your employer's CEO could care less if you use Unix or not.
<verisimilitude> That's only because he doesn't know what it loses him.
<verisimilitude> ``Your employer's CEO could care less if you use a sharp rock or a power tool.''
<jcowan> I've been using gitless quite a bit lately: it's a layer over git with a model that's easier to understand and use.
<jcowan> Exactly.
<jcowan> And he doesn't know because he doesn't have to know. It's down in the noise.
<verisimilitude> Unfortunately, anyone who could stop this madness doesn't know to do this.
<jcowan> s/know/care/g
<aeth> doomduck: i.e. (defmethod print-object ...)
<verisimilitude> All of the computing ``experts'' they would ask are incestuous and self-serving.
<doomduck> aeth: uhm I'm not sure, I meant when I do something like (format nil "~A" (something-with-a-vec)) and the vec inside the struct has float fields, and I just want it print with those rounded, without having to implement any custom logic
<verisimilitude> I've written about this, if anyone would be interested.
<resttime> How to keep allocations "on the stack" when doing vector math operations? I'm writing a library to do vector maths, they are repesented as an array of SIMPLE-FLOAT. This makes three allocations (vec+ (make-vec 1.0 2.0 3.0) (make-vec 4.0 5.0 6.0)) for example (the two temporary and one for result) but i only care about the result. Is there a way to "collapse" these allocations into one for just
<resttime> the result?
<fe[nl]ix> aeth: yes
<resttime> Declaring DYNAMIC-EXTENT on the temp values can kinda work, but for more complex calculations that ends up being very tedious and need to give tem names
<aeth> doomduck: afaik, you have to implement some custom logic
<resttime> *bind them to names
<aeth> doomduck: unless one of the special variables (with *earmuffs*) in [1] can do it. [1] http://www.lispworks.com/documentation/HyperSpec/Body/c_printe.htm
paul0 has joined #commonlisp
<doomduck> oh that's unfortunate, println!(...) in Rust can take something like {:.2?} in place of just {:?} to "format all float fields with .2"
<_death> you can use the pretty printer to do that..
<resttime> Only thing I can think of is a complex macro that analyzes a vector math body, binds temp vectors to gensyms, and declare DYNAMIC-EXTENT
<verisimilitude> Use ~/.../ then, doomduck.
<aeth> fe[nl]ix: Not yet; my backlog got cleared when I rebooted this machine so I forgot
<verisimilitude> It's not needed, however.
<resttime> Purpose is keep cons'ing at minimum for performance
<Bike> resttime: probably something like that is all you can do, yeah. probably a compiler macro
<fe[nl]ix> aeth: ok, let me know if that works for you
<_death> doomduck: you can have a custom pprint dispatch table that prints floats however you like.. when *print-pprint-dispatch* is bound to it will have the effect
<aeth> Firefox uses Gtk. Gtk is owned by the Gnome project and exists solely to cater to the design whims of the Gnome project, which might as well be its own operating system. Gnome decides that its archive manger, unlike any other on Linux, should extract to the current directory instead of merely opening/previewing. Therefore Firefox extracted it to ~/Downloads when I went to click on the file. Instead of me
<aeth> being able to see the concept. Damn I hate Gnome.
<Mrtn[m]> æth: Why hate /Gnome/ ?
<verisimilitude> Use Emacs.
<aeth> Mrtn[m]: Because if it for any reason takes over the default applications for opening $filetype, then bad things happen
<resttime> Bike: As I feared, maybe it won't be too bad to write. I can't be the only person to have encountered this situation before
<Mrtn[m]> oh .. you explained that in your previous message. Your downloads folder got messed up.
<aeth> Fortunately, fe[nl]ix's file was well-behaved and contained one directory
<aeth> Usually when this happens, it scatters a few dozen files all over my ~/Downloads
<Bike> resttime: i am working on similar optimizations for clasp (using SIMD vectors basically), but there i'm a compiler writer and can just do whatever i want
<Bike> and there's stuff like petalisp, but i haven't used it
<verisimilitude> The fact that an archive can do this is itself misdesign.
<Bike> and i don't have much idea how it works.
<resttime> Bike: I see, i had a hunch this could be a compiler optimization. I think I recall this being a thing in older C++ and then it was solved in more modern C++
<resttime> Move semantics and all that related
<kakuhen> aeth: I could've sworn the archive utility in GNOME let you preview before extraction. I guess they copied a bad design from Mac OS
<kakuhen> it wasn't like this a decade ago
<fe[nl]ix> aeth: for ease of use, you can hack run-sbcl.sh to run src/runtime/sbcl.extras
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 268 seconds]
Lord_of_Life_ is now known as Lord_of_Life
reb has joined #commonlisp
reb has quit [Remote host closed the connection]
reb has joined #commonlisp
jmdaemon has joined #commonlisp
reb has quit [Remote host closed the connection]
reb has joined #commonlisp
<resttime> Hmmm maybe DYNAMIC-EXTENT declaration wrong path, another macro I'm thinking of that could be possible is traversing the vector math body and 'collecting' the values to perform one big ops at the end
<aeth> fe[nl]ix: it runs but I'm not sure where I'd test it
<resttime> Avoids the temp allocations in the first place and (make-vec) would just be an abstract way to declare values
<aeth> I do my own vector math in part because for every vec2, vec3, vec4 operation I also have a version that works with VALUES of 2, 3, and 4.
<fe[nl]ix> aeth: if you run it on a machine where libfixposix is not installed, you should be able to load iolib from git
<fe[nl]ix> if libfixposix is already present (in this case statically linked), then the symbol "lfp_buildinfo" already exists and it will skip trying to dlopen() the library
azimut has joined #commonlisp
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
paul0 has quit [Quit: Leaving]
<resttime> aeth: Oh interesting hadn't thought about VALUES at all. Found a stackoverflow post on it:However, the intent of this facility is to enable passing (at least some) multiple values without consing (i.e., without allocating heap memory) and all CL implementations I know of do that. In this sense the multiple values facility is an optimization.
<resttime> Something new for me to think about incorporating
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
<aeth> rotation, input-direction, and input-velocity are actually stored into values (4, 3, and 3) with a symbol-macrolet and then handled with multiple-value-call
<aeth> with the /mv variations rather than the consing ones
doyougnu has quit [Ping timeout: 268 seconds]
<aeth> with-array-accessors creates symbol-macrolet bindings for array-of-2, array-of-3, array-of-4, array-row-of-2, array-row-of-3, and array-row-of-4, which exist as both VALUES-returning inline functions and DEFSETF-created SETF forms that take in the matching number of multiple values.
<aeth> Things with more than 4 can be handled with in pieces with offsets. Any function on vectors can also be a function on multiple values
Oladon has joined #commonlisp
<resttime> Interesting, I'll definitely read through it to see how it works thanks
<verisimilitude> It's not solely an optimization, resttime, but also a way to return values only occasionally useful.
avocadoist has joined #commonlisp
<aeth> it's not really an optimization as I'm using it... since it's not really any more complicated than using vectors (except in the cases where m-v-c is required)
<aeth> it's just an alternate representation
drbluefall has joined #commonlisp
drbluefall has quit [Client Quit]
drbluefall has joined #commonlisp
drbluefall has quit [Client Quit]
drbluefall has joined #commonlisp
drbluefall has left #commonlisp [#commonlisp]
jeosol has quit [Ping timeout: 252 seconds]
goober has quit [Quit: WeeChat 3.6]
hosk1 has joined #commonlisp
hosk1 is now known as goober
reb has quit [Remote host closed the connection]
azimut_ has joined #commonlisp
azimut has quit [Ping timeout: 258 seconds]
lottaquestions has quit [Quit: Konversation terminated!]
rbluefalld has joined #commonlisp
rbluefalld has quit [Remote host closed the connection]
tevo has quit [Ping timeout: 265 seconds]
tevo has joined #commonlisp
rbluefalld has joined #commonlisp
rbluefalld has quit [Client Quit]
azimut_ has quit [Remote host closed the connection]
azimut has joined #commonlisp
tevo has quit [Quit: Leaving.]
molson has quit [Remote host closed the connection]
tevo has joined #commonlisp
rbluefalld has joined #commonlisp
rbluefalld has quit [Remote host closed the connection]
drbluefall has joined #commonlisp
drbluefall has quit [Remote host closed the connection]
drbluefall has joined #commonlisp
drbluefall has quit [Remote host closed the connection]
drbluefall has joined #commonlisp
drbluefall has quit [Remote host closed the connection]
drbluefall has joined #commonlisp
drbluefall has quit [Remote host closed the connection]
drbluefall has joined #commonlisp
waleee has quit [Ping timeout: 246 seconds]
recordgroovy has joined #commonlisp
drbluefall has quit [Remote host closed the connection]
drbluefall has joined #commonlisp
Devon has quit [Ping timeout: 265 seconds]
drbluefall has quit [Quit: Stepping off for the night]
jeosol has joined #commonlisp
causal has quit [Quit: WeeChat 3.6]
frgo has quit [Ping timeout: 268 seconds]
Cymew has joined #commonlisp
cosimone has joined #commonlisp
Oladon has quit [Quit: Leaving.]
shka has joined #commonlisp
MajorBiscuit has joined #commonlisp
igemnace has joined #commonlisp
scymtym has quit [Ping timeout: 244 seconds]
cosimone has quit [Ping timeout: 260 seconds]
Josh_2 has quit [Read error: Connection reset by peer]
m5zs7k has quit [Ping timeout: 265 seconds]
m5zs7k has joined #commonlisp
<phantomics> Has anyone used https://github.com/metawilm/cl-custom-hash-table before? Curious about the performance implications of custom hash tables - is there anything to worry about performance-wise as long as the test function is fast?
<splittist> When referring to a keyword taking a generalised boolean, it is OK to say 'when :foop is true' rather than 'when :foop is not `NIL`'?
<beach> splittist: Do you mean in documentation?
<splittist> beach: yes (sorry)
<beach> In the standard, they use "true" quite frequently.
<splittist> Done!
* splittist proceeds to spell 'true' three different ways...
vindarel has joined #commonlisp
igemnace has quit [Remote host closed the connection]
makomo has quit [Quit: WeeChat 3.5]
gxt has quit [Remote host closed the connection]
gxt has joined #commonlisp
vindarel has quit [Ping timeout: 252 seconds]
attila_lendvai has joined #commonlisp
aartaka has joined #commonlisp
archimboldi has joined #commonlisp
archimboldi has left #commonlisp [#commonlisp]
_cymew_ has joined #commonlisp
makomo_ has quit [Ping timeout: 252 seconds]
gxt has quit [Remote host closed the connection]
verisimilitude has quit [Ping timeout: 248 seconds]
gxt has joined #commonlisp
scymtym has joined #commonlisp
Equill has joined #commonlisp
skeemer has joined #commonlisp
Equill has quit [Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/]
Equill has joined #commonlisp
random-nick has joined #commonlisp
makomo_ has joined #commonlisp
rogersm has joined #commonlisp
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
random-nick has quit [Ping timeout: 246 seconds]
pve has joined #commonlisp
<doomduck> is there a way to cross-compile to other platforms with SBCL? (I just need to build to windows from linux) ... or github actions for SBCL?
<doomduck> (for windows I guess, if cross compilation isn't possible)
Dynom_ has joined #commonlisp
Dynom_ is now known as Guest7382
dra_ has joined #commonlisp
<beach> Is the FASL format different for Windows?
<Equill> IIUC, the FASL format is platform-specific, so you need to compile the code separately for each platform. I'm less sure about whether cross-compiling is an option, sorry.
<beach> I see. I wonder why it is specific for the operating system.
rogersm has quit [Quit: Leaving...]
goober has quit [Quit: WeeChat 3.6]
aartaka has quit [Ping timeout: 268 seconds]
jmdaemon has quit [Ping timeout: 268 seconds]
tyson2 has joined #commonlisp
dra_ has quit [Quit: Leaving]
<hayley> I recall Appel mentioning in Compiling with Continuations that floating point operations were left untouched, as to avoid any platform-specific variance spreading across platforms in the computation.
<hayley> But then again, FASLs usually don't contain the results of any optimisations?
<hayley> I'm pretty sure the FASL format is platform independent, but FASL files are only good for a particular *FEATURES* list.
<beach> Why would the code in a FASL not be optimized?
<hayley> I'm not sure. Having IR (say) in the FASL might allow someone to make the compiler produce otherwise invalid and unsafe code. Not that it's a priority of SBCL to be safe, I think, but it's a reason.
<beach> I would be very surprised if the SBCL FASLs contained anything other than the final executable code representing the result of complete compilation.
<hayley> (From memory, SICL FASLs store the AST, which cannot confuse the compiler in such a way.)
<beach> But then, this is information that can be checked.
<beach> SICL is probably very different in this respect.
<hayley> Let's say that FASLs are one of the things I didn't break by introducing a non-moving GC :)
<hayley> The magic file is src/code/load.lisp
<hayley> beach: I think you're right, as there is a FOP-LOAD-CODE which copies code from the FASL into a code object.
hosk1 has joined #commonlisp
hosk1 is now known as goober
azimut has quit [Ping timeout: 258 seconds]
<beach> The idea to use the AST as the FASL format in SICL came pretty late. The initial idea was to have pure executable (position independent) code so that loading the FASL would be just a matter of mmap()ing it and then call the instruction at the first address.
<Shinmera> I've made more progress on my dist generation toolkit. It's now ready for testing, and besides generating a dist, also generates a user-viewable state of the dist and all the info contained within, nicely cross-referenced, too: https://dist.shirakumo.org
aartaka has joined #commonlisp
doyougnu has joined #commonlisp
goober has quit [Quit: WeeChat 3.6]
hosk1 has joined #commonlisp
hosk1 is now known as goober
sabra has joined #commonlisp
<sabra> Just updated unicode normalisation library uax-15 to new Unicode version 15.
waleee has joined #commonlisp
<Shinmera> Nice. Wonder if I even need to update 14 or 9.
son0p has quit [Ping timeout: 252 seconds]
<sabra> Shinmera: I would think not given they just added a few thousand characters. I would not expect anything in 14 or 9 to change
<Shinmera> Who knows, maybe the database files did change for those new chars.
<sabra> They did for normalisation
triffid has quit [Ping timeout: 258 seconds]
triffid has joined #commonlisp
doyougnu has quit [Ping timeout: 268 seconds]
jeosol has quit [Quit: Client closed]
eddof13 has joined #commonlisp
thuna` has joined #commonlisp
thuna` has quit [Remote host closed the connection]
doomduck1 has joined #commonlisp
doomduck1 has quit [Client Quit]
thuna` has joined #commonlisp
MajorBiscuit has quit [Ping timeout: 260 seconds]
attila_lendvai has quit [Ping timeout: 265 seconds]
Cymew has quit [Ping timeout: 264 seconds]
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
poselyqualityles has joined #commonlisp
shka has quit [Quit: Konversation terminated!]
Andrew is now known as ay
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
waleee has quit [Quit: WeeChat 3.6]
_cymew_ has quit [Ping timeout: 268 seconds]
_cymew_ has joined #commonlisp
eddof13 has joined #commonlisp
son0p has joined #commonlisp
son0p has quit [Remote host closed the connection]
random-nick has joined #commonlisp
karlosz has joined #commonlisp
Lycurgus has joined #commonlisp
doyougnu has joined #commonlisp
aartaka has quit [Ping timeout: 250 seconds]
aartaka has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
mzan has quit [Ping timeout: 244 seconds]
aartaka has quit [*.net *.split]
random-nick has quit [*.net *.split]
thuna` has quit [*.net *.split]
Lord_of_Life has quit [*.net *.split]
gateway2000 has quit [*.net *.split]
notzmv has quit [*.net *.split]
antoszka has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
grawlinson has quit [*.net *.split]
pieguy128 has quit [*.net *.split]
xaltsc has quit [*.net *.split]
Mandus has quit [*.net *.split]
|3b| has quit [*.net *.split]
bitspook[m] has quit [*.net *.split]
loke[m] has quit [*.net *.split]
luna-is-here has quit [*.net *.split]
lechner has quit [*.net *.split]
_cymew_ has quit [*.net *.split]
aeth has quit [*.net *.split]
euandreh has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
luis has quit [*.net *.split]
mmk2410 has quit [*.net *.split]
jgkamat has quit [*.net *.split]
prokhor_ has quit [*.net *.split]
chiheisen has quit [*.net *.split]
Jach has quit [*.net *.split]
White_Flame has quit [*.net *.split]
mrcom has quit [*.net *.split]
Alfr has quit [*.net *.split]
remexre has quit [*.net *.split]
minion has quit [*.net *.split]
doomduck has quit [*.net *.split]
char[m] has quit [*.net *.split]
mxben has quit [*.net *.split]
acma has quit [*.net *.split]
infra_red[m] has quit [*.net *.split]
smlckz has quit [*.net *.split]
Mrtn[m] has quit [*.net *.split]
pjb has quit [*.net *.split]
szkl has quit [*.net *.split]
zups has quit [*.net *.split]
kg7ski- has quit [*.net *.split]
bitmapper has quit [*.net *.split]
mingus has quit [*.net *.split]
Krystof has quit [*.net *.split]
MetaYan has quit [*.net *.split]
jryans has quit [*.net *.split]
sirufer has quit [*.net *.split]
knusbaum has quit [*.net *.split]
mfiano has quit [*.net *.split]
doyougnu has quit [*.net *.split]
Lycurgus has quit [*.net *.split]
eddof13 has quit [*.net *.split]
ay has quit [*.net *.split]
m5zs7k has quit [*.net *.split]
tevo has quit [*.net *.split]
drakonis has quit [*.net *.split]
epony has quit [*.net *.split]
prokhor has quit [*.net *.split]
jmes has quit [*.net *.split]
dilated_dinosaur has quit [*.net *.split]
rendar has quit [*.net *.split]
gjvc has quit [*.net *.split]
specbot has quit [*.net *.split]
dtman34 has quit [*.net *.split]
abrantesasf has quit [*.net *.split]
ns12 has quit [*.net *.split]
Demosthenex has quit [*.net *.split]
flip214 has quit [*.net *.split]
jdz has quit [*.net *.split]
phadthai has quit [*.net *.split]
justache has quit [*.net *.split]
fitzsim has quit [*.net *.split]
energizer has quit [*.net *.split]
hefner has quit [*.net *.split]
x88x88x has quit [*.net *.split]
susam has quit [*.net *.split]
jaimelm has quit [*.net *.split]
bldr has quit [*.net *.split]
goober has quit [*.net *.split]
genpaku has quit [*.net *.split]
sp has quit [*.net *.split]
dieggsy has quit [*.net *.split]
Duuqnd has quit [*.net *.split]
mason has quit [*.net *.split]
sunarch has quit [*.net *.split]
derelict has quit [*.net *.split]
victor has quit [*.net *.split]
mrvdb has quit [*.net *.split]
easye has quit [*.net *.split]
selwynning has quit [*.net *.split]
another-axel-bee has quit [*.net *.split]
alanz has quit [*.net *.split]
iquites has quit [*.net *.split]
drmeister has quit [*.net *.split]
Guest7382 has quit [*.net *.split]
avocadoist has quit [*.net *.split]
Colere has quit [*.net *.split]
perrierjouet has quit [*.net *.split]
krjst has quit [*.net *.split]
loke has quit [*.net *.split]
migap has quit [*.net *.split]
doulos05 has quit [*.net *.split]
theBlackDragon has quit [*.net *.split]
tychoish has quit [*.net *.split]
pranavats has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
viaken has quit [*.net *.split]
somexis has quit [*.net *.split]
xantoz has quit [*.net *.split]
ahlk has quit [*.net *.split]
jfb4 has quit [*.net *.split]
karlosz has quit [*.net *.split]
rgherdt has quit [*.net *.split]
mariari has quit [*.net *.split]
hayley has quit [*.net *.split]
kakuhen has quit [*.net *.split]
let-over-lambda has quit [*.net *.split]
ski has quit [*.net *.split]
cognemo has quit [*.net *.split]
pok has quit [*.net *.split]
mister_m has quit [*.net *.split]
sukaeto has quit [*.net *.split]
bollu has quit [*.net *.split]
froggey has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
skeemer has quit [*.net *.split]
recordgroovy has quit [*.net *.split]
les has quit [*.net *.split]
hirez has quit [*.net *.split]
AadVersteden[m] has quit [*.net *.split]
Helmholtz has quit [*.net *.split]
yitzi has quit [*.net *.split]
puhi has quit [*.net *.split]
samebchase- has quit [*.net *.split]
dirtcastle has quit [*.net *.split]
cdegroot has quit [*.net *.split]
empwilli has quit [*.net *.split]
skempf has quit [*.net *.split]
scymtym has quit [*.net *.split]
iceman[m] has quit [*.net *.split]
ecocode[m] has quit [*.net *.split]
drdrjacobs[m] has quit [*.net *.split]
Gnuxie has quit [*.net *.split]
sveit_ has quit [*.net *.split]
nocko has quit [*.net *.split]
akonai_ has quit [*.net *.split]
dbotton has quit [*.net *.split]
sgithens has quit [*.net *.split]
pkal has quit [*.net *.split]
boigahs has quit [*.net *.split]
dcx has quit [*.net *.split]
skyl4rk has quit [*.net *.split]
spec has quit [*.net *.split]
iisi has quit [*.net *.split]
griffinmb has quit [*.net *.split]
jmercouris has quit [*.net *.split]
ogamita has quit [*.net *.split]
thonkpod_ has quit [*.net *.split]
Equill has quit [*.net *.split]
Seb[m]1 has quit [*.net *.split]
alethkit has quit [*.net *.split]
milesrout has quit [*.net *.split]
hannibal_ad_port has quit [*.net *.split]
artyn has quit [*.net *.split]
djhas-kin has quit [*.net *.split]
axvr has quit [*.net *.split]
ashpool has quit [*.net *.split]
payphone has quit [*.net *.split]
srhm has quit [*.net *.split]
theothornhill has quit [*.net *.split]
whereiseveryone has quit [*.net *.split]
Schnouki has quit [*.net *.split]
ggb has quit [*.net *.split]
\f has quit [*.net *.split]
mcoll has quit [*.net *.split]
saturn2 has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
gabc has quit [*.net *.split]
borodust has quit [*.net *.split]
etimmons has quit [*.net *.split]
neominimum has quit [*.net *.split]
lonjil2 has quit [*.net *.split]
stylewarning has quit [*.net *.split]
fe[nl]ix has quit [*.net *.split]
Kingsy has quit [*.net *.split]
gendl has quit [*.net *.split]
leeb has quit [*.net *.split]
IUSR has quit [*.net *.split]
copec has quit [*.net *.split]
triffid has quit [*.net *.split]
conjunctive has quit [*.net *.split]
gxt has quit [*.net *.split]
anticomputer has quit [*.net *.split]
sabra has quit [*.net *.split]
pve has quit [*.net *.split]
SAL9000 has quit [*.net *.split]
Catie has quit [*.net *.split]
terrorjack has quit [*.net *.split]
mathrick has quit [*.net *.split]
srji has quit [*.net *.split]
qhong has quit [*.net *.split]
hineios has quit [*.net *.split]
Posterdati has quit [*.net *.split]
leo_song has quit [*.net *.split]
snits has quit [*.net *.split]
dim has quit [*.net *.split]
dstein64 has quit [*.net *.split]
beach has quit [*.net *.split]
ryanbw has quit [*.net *.split]
ioa has quit [*.net *.split]
BytesAndCoffee has quit [*.net *.split]
danieli has quit [*.net *.split]
famicom_guy_ has quit [*.net *.split]
overclucker has quit [*.net *.split]
ecraven has quit [*.net *.split]
micro has quit [*.net *.split]
megeve has quit [*.net *.split]
ChanServ has quit [*.net *.split]
MetaYan has joined #commonlisp
Gnuxie has joined #commonlisp
mxben has joined #commonlisp
massimo_zaniboni has joined #commonlisp
Cymew has joined #commonlisp
son0p has joined #commonlisp
aartaka has joined #commonlisp
doyougnu has joined #commonlisp
triffid has joined #commonlisp
karlosz has joined #commonlisp
Lycurgus has joined #commonlisp
random-nick has joined #commonlisp
eddof13 has joined #commonlisp
thuna` has joined #commonlisp
goober has joined #commonlisp
sabra has joined #commonlisp
Guest7382 has joined #commonlisp
pve has joined #commonlisp
skeemer has joined #commonlisp
Equill has joined #commonlisp
gxt has joined #commonlisp
scymtym has joined #commonlisp
recordgroovy has joined #commonlisp
m5zs7k has joined #commonlisp
tevo has joined #commonlisp
Lord_of_Life has joined #commonlisp
SAL9000 has joined #commonlisp
White_Flame has joined #commonlisp
Catie has joined #commonlisp
pjb has joined #commonlisp
szkl has joined #commonlisp
zups has joined #commonlisp
aeth has joined #commonlisp
epony has joined #commonlisp
kg7ski- has joined #commonlisp
avocadoist has joined #commonlisp
prokhor has joined #commonlisp
gateway2000 has joined #commonlisp
jmes has joined #commonlisp
terrorjack has joined #commonlisp
genpaku has joined #commonlisp
euandreh has joined #commonlisp
notzmv has joined #commonlisp
antoszka has joined #commonlisp
rgherdt has joined #commonlisp
mathrick has joined #commonlisp
srji has joined #commonlisp
Noisytoot has joined #commonlisp
perrierjouet has joined #commonlisp
anticomputer has joined #commonlisp
grawlinson has joined #commonlisp
mingus has joined #commonlisp
les has joined #commonlisp
doomduck has joined #commonlisp
xaltsc has joined #commonlisp
Lord_Nightmare has joined #commonlisp
theBlackDragon has joined #commonlisp
Alfr has joined #commonlisp
Mandus has joined #commonlisp
Krystof has joined #commonlisp
rendar has joined #commonlisp
gjvc has joined #commonlisp
mariari has joined #commonlisp
beach has joined #commonlisp
remexre has joined #commonlisp
hirez has joined #commonlisp
pieguy128 has joined #commonlisp
|3b| has joined #commonlisp
specbot has joined #commonlisp
minion has joined #commonlisp
pranavats has joined #commonlisp
Colere has joined #commonlisp
loke[m] has joined #commonlisp
dilated_dinosaur has joined #commonlisp
AadVersteden[m] has joined #commonlisp
jryans has joined #commonlisp
char[m] has joined #commonlisp
luis has joined #commonlisp
Mrtn[m] has joined #commonlisp
dtman34 has joined #commonlisp
smlckz has joined #commonlisp
mmk2410 has joined #commonlisp
cdegroot has joined #commonlisp
lechner has joined #commonlisp
abrantesasf has joined #commonlisp
ns12 has joined #commonlisp
jgkamat has joined #commonlisp
pkal has joined #commonlisp
Demosthenex has joined #commonlisp
prokhor_ has joined #commonlisp
Jach has joined #commonlisp
migap has joined #commonlisp
chiheisen has joined #commonlisp
sirufer has joined #commonlisp
doulos05 has joined #commonlisp
flip214 has joined #commonlisp
Posterdati has joined #commonlisp
let-over-lambda has joined #commonlisp
knusbaum has joined #commonlisp
leo_song has joined #commonlisp
contrapunctus has joined #commonlisp
mfiano has joined #commonlisp
ski has joined #commonlisp
snits has joined #commonlisp
jdz has joined #commonlisp
alethkit has joined #commonlisp
milesrout has joined #commonlisp
ggb has joined #commonlisp
\f has joined #commonlisp
hannibal_ad_port has joined #commonlisp
mcoll has joined #commonlisp
djhas-kin has joined #commonlisp
artyn has joined #commonlisp
ashpool has joined #commonlisp
axvr has joined #commonlisp
theothornhill has joined #commonlisp
srhm has joined #commonlisp
payphone has joined #commonlisp
Schnouki has joined #commonlisp
whereiseveryone has joined #commonlisp
phadthai has joined #commonlisp
cognemo has joined #commonlisp
drakonis has joined #commonlisp
ay has joined #commonlisp
mason has joined #commonlisp
puhi has joined #commonlisp
samebchase- has joined #commonlisp
justache has joined #commonlisp
dim has joined #commonlisp
dirtcastle has joined #commonlisp
fitzsim has joined #commonlisp
sunarch has joined #commonlisp
bldr has joined #commonlisp
energizer has joined #commonlisp
jaimelm has joined #commonlisp
susam has joined #commonlisp
x88x88x has joined #commonlisp
hefner has joined #commonlisp
bitmapper has joined #commonlisp
dieggsy has joined #commonlisp
infra_red[m] has joined #commonlisp
Helmholtz has joined #commonlisp
sp has joined #commonlisp
acma has joined #commonlisp
iceman[m] has joined #commonlisp
kakuhen has joined #commonlisp
ecocode[m] has joined #commonlisp
yitzi has joined #commonlisp
Duuqnd has joined #commonlisp
hineios has joined #commonlisp
qhong has joined #commonlisp
luna-is-here has joined #commonlisp
dstein64 has joined #commonlisp
jfb4 has joined #commonlisp
xantoz has joined #commonlisp
viaken has joined #commonlisp
somexis has joined #commonlisp
fiddlerwoaroof has joined #commonlisp
ahlk has joined #commonlisp
tychoish has joined #commonlisp
drmeister has joined #commonlisp
iquites has joined #commonlisp
another-axel-bee has joined #commonlisp
alanz has joined #commonlisp
selwynning has joined #commonlisp
easye has joined #commonlisp
mrvdb has joined #commonlisp
loke has joined #commonlisp
krjst has joined #commonlisp
victor has joined #commonlisp
froggey has joined #commonlisp
derelict has joined #commonlisp
Patternmaster has joined #commonlisp
bollu has joined #commonlisp
sukaeto has joined #commonlisp
pok has joined #commonlisp
mister_m has joined #commonlisp
skempf has joined #commonlisp
empwilli has joined #commonlisp
ogamita has joined #commonlisp
thonkpod_ has joined #commonlisp
jmercouris has joined #commonlisp
griffinmb has joined #commonlisp
spec has joined #commonlisp
iisi has joined #commonlisp
skyl4rk has joined #commonlisp
sgithens has joined #commonlisp
boigahs has joined #commonlisp
dcx has joined #commonlisp
dbotton has joined #commonlisp
nocko has joined #commonlisp
akonai_ has joined #commonlisp
fe[nl]ix has joined #commonlisp
sveit_ has joined #commonlisp
neominimum has joined #commonlisp
Kingsy has joined #commonlisp
etimmons has joined #commonlisp
borodust has joined #commonlisp
gendl has joined #commonlisp
gabc has joined #commonlisp
IUSR has joined #commonlisp
conjunctive has joined #commonlisp
megeve has joined #commonlisp
ecraven has joined #commonlisp
micro has joined #commonlisp
overclucker has joined #commonlisp
danieli has joined #commonlisp
famicom_guy_ has joined #commonlisp
BytesAndCoffee has joined #commonlisp
ioa has joined #commonlisp
ryanbw has joined #commonlisp
ChanServ has joined #commonlisp
sm2n has quit [Max SendQ exceeded]
sm2n has joined #commonlisp
<jackdaniel> doomduck: I've heard that working with wine to compile for windows is much more pleasent than cross compiling and/or spawning a vm to have a windows machine
<jcowan> I suppose it depends on what tools you are used to. If you are okay with Visual C++ etc., then that makes sense.
<jackdaniel> I'm certain that my hearing does not depend on tools that I'm used to :)
skeemer has quit [Read error: Connection reset by peer]
skeemer__ has joined #commonlisp
aartaka has quit [Ping timeout: 246 seconds]
<Lycurgus> yeah that's illogical, shows a bias
aartaka has joined #commonlisp
<Lycurgus> linux has been my main platform for 25 y but I do windows stuff on windows and keep partitions with it for that purpose
<Lycurgus> ofc I followed its development from the os/2 split and work on parts of its development (the parts that originated in os/2)
<Lycurgus> *worked on
shka has joined #commonlisp
<Lycurgus> doesn't MS have an official thing for running on linux now? I presume that's not WINE
<Lycurgus> some .net core thing
MajorBiscuit has joined #commonlisp
<Lycurgus> just got an email from a recruiter for VB
<Lycurgus> synchronicity
<jcowan> wow
shka has quit [Remote host closed the connection]
<jcowan> THere's Mono, which is a portable clone of.NET Framework, and then there is .NET Core, which is more limited but is portable.
<jcowan> by design, that is
<jcowan> e.g. .NET Core does not support GUI apps, whereas .NET Framework and Mono do.
<jcowan> both support console and web apps
<jackdaniel> to the best of my knowledge wine is the only way to run /native/ windows binaries
<jcowan> yes
aartaka has quit [Ping timeout: 265 seconds]
shka has joined #commonlisp
<Lycurgus> some of em, way more than there used to be i presume
shka has quit [Client Quit]
<jcowan> yes
shka has joined #commonlisp
<Lycurgus> almost 28 years, moved from OS/2 in fall of '95 after trying BSD
<Lycurgus> WINE started in 90s iirc
bitmapper has quit [Quit: Connection closed for inactivity]
makomo_ has quit [Ping timeout: 265 seconds]
verisimilitude has joined #commonlisp
tyson2 has joined #commonlisp
massimo_zaniboni is now known as mzan
tyson2 has quit [Remote host closed the connection]
scymtym has quit [Ping timeout: 268 seconds]
tyson2 has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
<kagevf> OT: I looked up the difference between synchronicity and serendipity ... closely related
cosimone has joined #commonlisp
orestarod has joined #commonlisp
makomo_ has joined #commonlisp
thuna` has quit [Ping timeout: 246 seconds]
scymtym has joined #commonlisp
cage has joined #commonlisp
Lycurgus has quit [Quit: Exeunt juan@acm.org]
thuna` has joined #commonlisp
thuna` has quit [Remote host closed the connection]
thuna` has joined #commonlisp
MajorBiscuit has quit [Ping timeout: 248 seconds]
tyson2 has joined #commonlisp
thuna` has quit [Ping timeout: 260 seconds]
jeosol has joined #commonlisp
jeosol has quit [Client Quit]
akoana has joined #commonlisp
cosimone has quit [Ping timeout: 268 seconds]
jeosol has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
attila_lendvai has joined #commonlisp
eddof13 has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
Josh_2 has joined #commonlisp
yottabyte has joined #commonlisp
random-nick has quit [Ping timeout: 246 seconds]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
thuna` has joined #commonlisp
random-nick has joined #commonlisp
waleee has joined #commonlisp
mariari has quit [Read error: Connection reset by peer]
ec has joined #commonlisp
Cymew has quit [Ping timeout: 268 seconds]
son0p has quit [Ping timeout: 250 seconds]
mariari has joined #commonlisp
orestarod has quit [Remote host closed the connection]
doyougnu has quit [Ping timeout: 252 seconds]
jmdaemon has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
attila_lendvai has quit [Read error: Connection reset by peer]
Lycurgus has joined #commonlisp
frgo has joined #commonlisp
<Shinmera> I regularly deploy Kandria for Windows through Wine. Works flawlessly.
thuna` has quit [Ping timeout: 246 seconds]
tyson2 has joined #commonlisp
Guest7382 has quit [Quit: WeeChat 3.6]
gateway2000 has quit [Quit: Leaving]
azimut has joined #commonlisp
Oladon has joined #commonlisp
gpiero_ has quit [Ping timeout: 244 seconds]
gpiero has joined #commonlisp
Lycurgus has quit [Quit: Exeunt juan@acm.org]
gateway2000 has joined #commonlisp
ec has quit [Remote host closed the connection]
eddof13 has joined #commonlisp
shka has quit [Ping timeout: 268 seconds]
poselyqualityles has quit [Quit: Using Circe, the loveliest of all IRC clients]
shka has joined #commonlisp
causal has joined #commonlisp
zyni-moe has joined #commonlisp
zyni-moe has quit [Remote host closed the connection]
shka has quit [Ping timeout: 265 seconds]
pve has quit [Quit: leaving]
<Josh_2> Is there a way I can pull a random element from a hash table?
chipxxx has joined #commonlisp
<pjb> Josh_2: yes.
<Josh_2> How?
<pjb> (defun choose-random-from-hash-table (table) (assert (plusp (hash-table-count table))) (let ((index (random (hash-table-count table)))) (maphash (lambda (key value) (if (zerop index) (return-from choose (values value key)) (decf index))) table))))
<Josh_2> Thanks but thats exactly what I didn't want to do :(
<pjb> well, s/choose /choose-random-from-hash-table /
<Josh_2> I suppose that will be faster than choosing a random file from a directory though
<pjb> Josh_2: you can fetch the keys first, if you need to choose several entries.
<pjb> Josh_2: I assumed you wanted equiprobability. Choosing a random file from a directory will have the same complexities, but obtaining th enumber of entries in a directory is not necessarily O(1) like hash-table-count.
<pjb> Again, if you keep a vector of keys separeately, then you can choose one entry in O(1).
<Josh_2> Your version is significantly faster than using uiop:subdirectories
<Josh_2> Thanks :)
<pjb> If you need to pull more than one random element, you definitely will want to extract the keys first.
<Josh_2> Well my webpage load time went from 150-200ms to 50ms
<Josh_2> :sunglasses:
<Josh_2> I only need 1
<aeth> phantomics: I would assume that custom hash tables could beat built-in ones in performance, actually. I don't know anything about that library in particular, though.
son0p has joined #commonlisp
<phantomics> I'll see how it works
ec has joined #commonlisp
pjb has quit [Read error: Connection reset by peer]
pjb has joined #commonlisp
ec has quit [Remote host closed the connection]
ec has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
scymtym has quit [Remote host closed the connection]
ec has quit [Ping timeout: 258 seconds]
euandreh has quit [Ping timeout: 264 seconds]
<verisimilitude> It helps that this operation violates a fundamental quality of hash-tables, aeth.
<verisimilitude> This is like asking for a random element of a stack, by treating it as a vector; it's not a stack at that point.
ec has joined #commonlisp
molson has joined #commonlisp
mrcom has joined #commonlisp
<aeth> and afaik pcre (e.g. cl-ppcre) aren't real regular expressions (regular languages)
mrcom has quit [Client Quit]
<verisimilitude> The ``extended regular expressions'' is a misnomer, yes.
<verisimilitude> There's a nice article about this very topic.
scymtym has joined #commonlisp
VincentVega has joined #commonlisp
eddof13 has joined #commonlisp
Brucio-61 has joined #commonlisp
<aeth> but writing a hash table yourself has the advantage of being specifically suited for your problem
<aeth> even if it matches the properties of a hash table
<verisimilitude> My point is this would be the only reason a custom hash-table would beat that standard.
<aeth> in big-O perhaps
<aeth> big-O not caring if you can do things in O(n/2) because that's still O(n)
<verisimilitude> Okay.
<aeth> Although it's also possible to write a perfect hash table in some circumstances, which does improve your big-O by removing collisions. So you're still wrong w.r.t. big-O, too. Because now O(n) worst case (which the standard hash tables must follow) becomes O(1)
jeffrey has joined #commonlisp
<aeth> And Common Lisp is a particularly suitable language for such data structures.
<verisimilitude> Yes, anyone expecting O(1) access from a hash-table is an ignorant fool.
<verisimilitude> In the general case, that is.
<verisimilitude> I've taken a fascination with tries recently, as they're suited to a problem of mine.
<aeth> Yes, but you have the advantage of being able to take advantage of specific cases. And you can even construct such data structures at compile time or macroexpansion time no differently than constructing them at runtime would be.
<aeth> And since hash tables don't even have special syntax like {:foo 42} or #h(:foo 42) in CL, custom ones don't even seem out of place.
<verisimilitude> A hash-table without collisions is probably better thought of as an array.
<hayley> Rehash if you reprobe too much?
euandreh has joined #commonlisp
<aeth> And at the very leat, by restricting types in a non-generic hash table, you can gain performance over the built-ins even if you can't gain on big-O.
<verisimilitude> The existence of SXHASH is evidence it was intended even, aeth.
<hayley> Wouldn't be O(1) still, and perhaps less consistent in performance, but I'd suspect it'd stop hash-DOS or whatever that called.
<aeth> (My last statement is assuming that they're something that CL is capable of handling well, like numbers in the numeric tower)
<verisimilitude> Don't get me started on that nonsense, hayley.
<hayley> And I recall NonBlockingHashMap does something like that.
akoana has quit [Quit: leaving]
<hayley> Well. I wrote most of the hash tables in SICL, and I decided to add a random seed per table, to avoid footgunning oneself. I mean, you can still be O(n), but it's a lot harder for an attacker to make things O(n) by surprise.
<verisimilitude> Is this what's being referenced here: https://cs-syd.eu/posts/2021-09-11-json-vulnerability
<verisimilitude> The idea that someone can ``attack'' a hash-table is foolish, hayley.
<hayley> I do agree that treating it as magically O(1) is a bad idea, but making it too easy for an attacker to provoke the worst case (which one expects is uncommon) is also bad IMO.
<verisimilitude> Read this: http://verisimilitudes.net/2022-02-02
<verisimilitude> It's short, and well sums my thoughts on this topic.
<hayley> I've read it before.
euandreh has quit [Ping timeout: 265 seconds]
<verisimilitude> Oh, how nice.
<hayley> Hm. I also use FNV-1a but generate a random seed, so I don't know if provoking worst-case is that easy.
jealousmonk has joined #commonlisp
<verisimilitude> If it will be fine to answer, from where was that read? I didn't spread that one around at all.
<hayley> "Note that the last argument to hashable_fnv_hash is the salt, and is set to 0. The collisions that are being generated by fnv-collider are collisions only when 0 is used as the salt." If generating collisions requires knowing the salt, I should be fine.
<hayley> (Famous last words.)
<hayley> @verisimilitude: I had looked through the list of pages on your site some time ago.
<verisimilitude> Alright; I appreciate the answer.
euandreh has joined #commonlisp
<hayley> Still, I see your point that a hash table is only average case O(1) and so expecting that to be worst case too is stupid, but I also believe that the worst case should be uncommon, and causing it intentionally should be really hard.
<verisimilitude> Part of why software is broken is because of this mindset.
<verisimilitude> Software should be more like a clock, predictable.
<verisimilitude> Anything else is begging for this and other issues.
<verisimilitude> There's a time and place for it, but it's just silly to walk away from the hanging machine crying.
<verisimilitude> The usual solution is to use massively more resources than necessary.
<hayley> Randomising the hash does produce a more predictable result, though. And passing a different initial state for the hash function is hardly any slower.
euandreh has quit [Ping timeout: 265 seconds]
<verisimilitude> Non-determinism is easy to add, and hard to remove.
<aeth> Security and performance and/or usability have a tradeoff. No surprises.
<verisimilitude> It's no matter of security.
<aeth> Specifically designed to handle reading arbitrary JSON from the internet into hash tables, so, yes it is
<verisimilitude> Read the article to which I linked earlier.
<hayley> The question is then what is bothered by the non-determinism. If you like, the addition of non-determinism is an optimisation, and preserves semantics otherwise.
<aeth> No need to really speculate in the abstract. Producing code is an issue of tradeoffs. Time to write, performance, budget (if commercial), team coordination, code readability, ability to make changes, etc.
<aeth> Even "performance" is often a tradeoff of space vs speed.
<verisimilitude> Consider someone writing a compiler, and it just so happens the compiler can't be built deterministically because of this.
<verisimilitude> I disagree, aeth. Code can and should be perfect.
<aeth> verisimilitude: you missed the part where the hash table has a seed, so deterministic builds can specify that
<aeth> not like that really matters, though.
<aeth> as long as the end product is always the same
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<hayley> Should the compiler be dependent on iteration order?
<verisimilitude> It depends on how the seed is obtained, but sure.
<aeth> CL would need to fix seeds in deterministic builds because it brings the compiler along with it and keeps everything around.
<aeth> But in the general case, that probably isn't needed
<aeth> And maybe the hash tables get GCed, anyway
<hayley> In that case, I think the error is in the compiler.
<verisimilitude> This is a lot of work, though, compared to no non-determinism, right?
chipxxx has quit [Ping timeout: 268 seconds]
<hayley> But, then again, iteration order is only exposed when iterating. Why iterate on a hash table, per prior discussion?
euandreh has joined #commonlisp
<verisimilitude> It would be exposed in the dumped image.
<aeth> depends on if it's still referenced or not
<verisimilitude> I'm assuming it would be, of course.
ec has quit [Remote host closed the connection]
anticomputer has quit [Remote host closed the connection]
azimut has quit [Remote host closed the connection]
<hayley> At that point it's a bit odd to equate semantic equivalence with bit-by-bit equivalence, though I just made up the former and the latter is the standard for reproducibility.
<resttime> When I include a (declaim (optimize 3)) at the top of a file when does it apply the functions defined in the same file if using SLIME/SLY. For example supposing if I reevaluate a function definition, will the declaim still apply. How about compile defun, loading the buffer, or etc?
<hayley> Still - where do you get random numbers from? There's likely only one PRNG seed that sets off it all.
<verisimilitude> Ideally, the initial seed is truly random.
azimut has joined #commonlisp
<verisimilitude> I forget the difference between DECLAIM and PROCLAIM, resttime, but look into both.
ec has joined #commonlisp
anticomputer has joined #commonlisp
eddof13 has joined #commonlisp
<resttime> Cool, found a post that sheds some light on them: https://groups.google.com/g/comp.lang.lisp/c/rO1Vru1fbvI/m/aPyEDS2Qt-QJ
Alfr has quit [Ping timeout: 268 seconds]
<resttime> (declaim (optimize speed)) is the same as (eval-when (:compile-toplevel :load-toplevel :execute) (proclaim '(optimize speed)))
epony has quit [Ping timeout: 252 seconds]