Home liberachat/#haskell: Logs Calendar

Logs on 2022-11-08 (liberachat/#haskell)

00:04:49 × freeside_ quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
00:10:39 × Tuplanolla quits (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Quit: Leaving.)
00:11:46 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
00:14:05 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:4c78:c477:402b:896a)
00:16:37 tgi joins (~thegeekin@189.180.92.220)
00:17:39 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
00:18:34 × thegeekinside quits (~thegeekin@189.180.92.220) (Ping timeout: 252 seconds)
00:20:01 thegeekinside joins (~thegeekin@189.180.92.220)
00:23:01 zero is now known as yin
00:23:34 × tgi quits (~thegeekin@189.180.92.220) (Ping timeout: 252 seconds)
00:23:48 tgi joins (~thegeekin@189.180.92.220)
00:24:40 × thegeekinside quits (~thegeekin@189.180.92.220) (Ping timeout: 252 seconds)
00:27:12 thegeekinside joins (~thegeekin@189.180.92.220)
00:29:44 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
00:30:08 beteigeuze1 joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
00:30:20 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
00:30:29 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds)
00:30:29 beteigeuze1 is now known as beteigeuze
00:30:50 × tgi quits (~thegeekin@189.180.92.220) (Ping timeout: 260 seconds)
00:30:53 ec_ joins (~ec@gateway/tor-sasl/ec)
00:36:00 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
00:40:45 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
00:43:20 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:4c78:c477:402b:896a) (Quit: Leaving)
00:45:55 yin is now known as zzz
00:52:25 × barak quits (~barak@2a0d:6fc2:68c0:8900:b543:1b85:720f:c15) (Ping timeout: 260 seconds)
00:56:44 × abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 260 seconds)
01:00:35 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
01:02:35 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 248 seconds)
01:04:49 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
01:08:03 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:11:07 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 248 seconds)
01:15:12 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:21:18 × fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (Read error: Software caused connection abort)
01:23:29 × glider quits (~glider@user/glider) (Read error: Software caused connection abort)
01:24:10 fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof)
01:24:19 glider joins (~glider@user/glider)
01:28:11 × xff0x quits (~xff0x@2405:6580:b080:900:a421:ba8e:4c73:4420) (Ping timeout: 248 seconds)
01:28:19 <zzz> just a quick praise to everyone here for keeping this channel's spirit. great mood over the years, consistently
01:28:43 <sm> nice zzz
01:28:52 <sm> what would y'all say is the difference between LambdaCase and MultiWayIf, practically speaking ? Why would you choose one or the other ?
01:29:34 <sm> ah, \case does pattern matching, \if matches true expressions
01:29:39 <geekosaur> lambdacase is a partial workaround for not being able to do case matching on lambdas
01:29:48 <geekosaur> yes
01:30:38 <sm> thanks!
01:31:01 <sm> I kept wanting to write \if, like \case.
01:31:13 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:31:24 <monochrom> But MultiWayIf does not come with a lambda.
01:31:31 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
01:31:56 <monochrom> But you can write "if|" :)
01:32:27 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
01:32:28 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:32:41 nate4 joins (~nate@98.45.169.16)
01:33:26 <sm> drat.. big set of choices here that are a mixture of truth and patterns...
01:33:44 <zzz> sm: pattern guards?
01:34:07 <zzz> f | Just x <- y , x = ...
01:34:12 <sm> I expect so.. just a bit of work to see it clearly sometimes
01:34:35 <sm> while manually shoving big blocks of code around
01:35:02 <sm> yes that looks good, thank you
01:36:34 <sm> wow.. this seems to work:
01:36:34 <sm> | bool -> ...
01:36:34 <sm> | Just val <- mval -> ...
01:36:37 <monochrom> Compatible with MultiWayIf.
01:37:34 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
01:37:47 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds)
01:38:02 <zzz> as long as you're not hoping others to read it :D
01:39:52 <sm> well... I hope it'll be clearer overall in the end
01:39:58 <yushyin> and now add MultiWayLambda to the mix
01:40:09 <sm> and one can always comment
01:40:10 <sm> MultiWayLambda you say..
01:40:32 <sm> drat, can't have where embedded in multi-way if
01:40:34 <monochrom> yikes haha
01:41:10 <monochrom> Naw it would be an oxymoron.
01:41:31 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
01:43:15 × ss4 quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
01:44:50 × sshine quits (~simon@exocortex.online) (Read error: Software caused connection abort)
01:48:04 <sm> that's great.. haskell syntax is really clever. It takes some practice to remember the possibilities
01:49:53 <maerwald[m]> sm: yes, people always jump heads on into type families and GADTs, but don't even understand basic haskell syntax :p
01:50:06 sshine joins (~simon@exocortex.online)
01:50:41 <sm> FYI / mandatory readability check:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/07569b43dfb7ac6e8970567b52a168c99610a14e>)
01:55:17 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
01:55:28 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
01:56:06 × dagit quits (~dagit@2001:558:6025:38:6476:a063:d05a:44da) (Ping timeout: 255 seconds)
01:56:10 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
01:56:26 jinsun joins (~jinsun@user/jinsun)
01:59:57 × another-axel-bee quits (~axel-bee@alexbenishek.com) (Read error: Software caused connection abort)
02:00:05 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 260 seconds)
02:00:17 axel-bee joins (~axel-bee@alexbenishek.com)
02:01:41 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
02:01:48 × califax quits (~califax@user/califx) (Remote host closed the connection)
02:02:35 califax joins (~califax@user/califx)
02:06:09 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
02:08:39 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:11:45 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 260 seconds)
02:11:55 <zzz> you could do without multiwaif: https://paste.jrvieira.com/1667873477844
02:13:26 <sm> if is a little clearer than repeating the var, I feel
02:14:02 <zzz> also i have a typo. should be = intead of -> in the second example
02:14:15 <monochrom> "where" doesn't work in all contexts.
02:14:39 <sm> it still boggles my mind a little that ... <- ... can be used instead of a boolean here. I guess they are "guards", which can be either ?
02:15:01 × califax quits (~califax@user/califx) (Remote host closed the connection)
02:15:24 califax joins (~califax@user/califx)
02:15:34 <monochrom> MultiWayIf is really a guard syntax. And guard syntax allows pattern guards.
02:16:13 <geekosaur> isn't it really short for `case () of () |`?
02:16:34 <monochrom> Yes.
02:16:46 <sm> 👍️
02:16:50 <zzz> this is a style i enjoy: https://github.com/jrvieira/seis/blob/5396386b0a6e743c9b597532d1397d163f5b11cf/app/Main.hs#L120
02:17:07 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
02:17:15 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
02:18:22 Lord_of_Life_ is now known as Lord_of_Life
02:19:20 × mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 260 seconds)
02:25:03 tgi joins (~thegeekin@189.180.92.220)
02:25:59 × thegeekinside quits (~thegeekin@189.180.92.220) (Ping timeout: 260 seconds)
02:28:27 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
02:28:54 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
02:32:33 × califax quits (~califax@user/califx) (Remote host closed the connection)
02:32:59 califax joins (~califax@user/califx)
02:41:51 berberman joins (~berberman@user/berberman)
02:46:03 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds)
02:49:43 raehik joins (~raehik@82.21.176.157)
02:49:57 zebrag joins (~chris@user/zebrag)
02:52:30 mshv22 joins (~mshv22@76.115.19.239)
02:53:13 × tcard quits (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Remote host closed the connection)
02:58:07 tcard joins (~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9)
03:03:28 × ygsjg quits (~quassel@189.124.224.160) (Read error: Connection reset by peer)
03:03:59 ygsjg joins (~quassel@189.124.224.160)
03:04:06 mixfix41 joins (~sdeny9ee@user/mixfix41)
03:04:26 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
03:06:41 × raehik quits (~raehik@82.21.176.157) (Quit: WeeChat 3.7.1)
03:09:12 nineonine joins (~nineonine@2604:3d08:7780:cd00:997b:a50c:ac54:c195)
03:13:29 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
03:19:01 × td_ quits (~td@83.135.9.26) (Ping timeout: 252 seconds)
03:20:52 td_ joins (~td@83.135.9.57)
03:21:25 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:23:45 monaaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
03:30:31 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
03:35:06 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
03:36:11 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
03:36:56 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
03:38:19 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:38:49 × talismanick quits (~talismani@76.133.152.122) (Ping timeout: 252 seconds)
03:39:54 stiell joins (~stiell@gateway/tor-sasl/stiell)
03:53:29 × sshine quits (~simon@exocortex.online) (Ping timeout: 260 seconds)
03:53:37 sshine joins (~simon@exocortex.online)
03:53:44 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
03:54:27 sagax joins (~sagax_nb@user/sagax)
04:00:37 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
04:03:48 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
04:08:11 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
04:09:57 king_gs joins (~Thunderbi@187.201.83.115)
04:12:55 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
04:15:12 bilegeek joins (~bilegeek@2600:1008:b04f:3c92:6adf:edcc:4896:94bb)
04:18:10 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
04:21:38 mbuf joins (~Shakthi@49.205.82.149)
04:21:58 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
04:28:57 king_gs1 joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
04:28:57 × king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer)
04:28:58 king_gs1 is now known as king_gs
04:29:39 × mshv22 quits (~mshv22@76.115.19.239) (Ping timeout: 260 seconds)
04:30:30 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:33:27 mshv22 joins (~mshv22@76.115.19.239)
04:33:30 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 260 seconds)
04:37:44 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
04:41:40 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
04:46:48 × mshv22 quits (~mshv22@76.115.19.239) (Remote host closed the connection)
04:47:11 mshv22 joins (~mshv22@76.115.19.239)
04:47:11 × mshv22 quits (~mshv22@76.115.19.239) (Client Quit)
04:47:37 mshv22 joins (~mshv22@76.115.19.239)
04:48:58 vn36 joins (~vn36@123.63.203.210)
04:49:03 Feuermagier joins (~Feuermagi@user/feuermagier)
04:51:08 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
04:53:55 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 260 seconds)
04:54:08 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
04:55:54 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
04:57:20 <jackdk> I too like writing in the 404 style
05:02:40 × byorgey quits (~byorgey@155.138.238.211) (Read error: Software caused connection abort)
05:03:10 × krjst quits (~krjst@2604:a880:800:c1::16b:8001) (Read error: Software caused connection abort)
05:04:22 krjst joins (~krjst@2604:a880:800:c1::16b:8001)
05:04:25 cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107)
05:08:09 × ygsjg quits (~quassel@189.124.224.160) (Ping timeout: 260 seconds)
05:08:22 byorgey joins (~byorgey@155.138.238.211)
05:08:38 ygsjg joins (~quassel@189.124.224.160)
05:09:12 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
05:09:46 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Remote host closed the connection)
05:10:05 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
05:16:54 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds)
05:20:05 × sabx quits (~sabbas@user/sabbas) (Ping timeout: 246 seconds)
05:21:07 × cytokine_storm quits (~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 252 seconds)
05:23:48 barak joins (~barak@2a0d:6fc2:68c0:8900:b543:1b85:720f:c15)
05:26:52 <zzz> oops: https://paste.jrvieira.com/1667885201583
05:30:53 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
05:34:13 nate4 joins (~nate@98.45.169.16)
05:37:54 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
05:37:59 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
05:40:35 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
05:42:10 razetime joins (~quassel@117.254.34.130)
05:58:00 × sagax quits (~sagax_nb@user/sagax) (Read error: Connection reset by peer)
05:58:14 sagax joins (~sagax_nb@user/sagax)
05:59:15 × razetime quits (~quassel@117.254.34.130) (Ping timeout: 260 seconds)
05:59:23 Ybombinator joins (~Ybombinat@85.254.75.39)
05:59:51 razetime joins (~quassel@117.254.35.109)
06:00:54 <Ybombinator> Hi, (I'm on mobile data so sorry if I disconnect) what are type classes and type class constraints useful for in variables? I understand how they might be useful for functions but why not assign specific types for variables instead of type classes?
06:01:20 <Axman6> do you have an example?
06:01:42 <Ybombinator> what do you mean? of what?
06:02:04 <Axman6> I'm not sure what you mean by your question
06:02:28 <Ybombinator> what are type classes useful for in variables, why are they used?
06:03:40 <Axman6> :t let addSeven x = let seven = (7 :: Num a => a) in x + seven in addSeven -- like this?
06:03:41 <lambdabot> Num a => a -> a
06:04:10 <Ybombinator> I know literals have type classes with restrictions, for example, type signature of 7 is "7 :: Num p => p" not "7 :: Int"
06:04:19 <Ybombinator> but why?
06:04:52 <Axman6> the literal "7" actually means "fromInteger (7 :: Integer)" - it's part of the language definition
06:05:04 × mshv22 quits (~mshv22@76.115.19.239) (Ping timeout: 252 seconds)
06:05:05 <Axman6> maybe a better example is:
06:05:39 <Axman6> :t read "8" -- generic in what type can be returned (but might fail at runtime if you can't parse "8" as the type you want
06:05:40 <lambdabot> Read a => a
06:06:20 <Axman6> > let r8 = (read 8 :: Read a => a) in (r8 :: Int, r8 :: Double, r8 :: Bool)
06:06:21 <lambdabot> error:
06:06:21 <lambdabot> • Could not deduce (Num String) arising from the literal ‘8’
06:06:21 <lambdabot> from the context: Read a
06:06:37 <Axman6> > let r8 = (read "8" :: Read a => a) in (r8 :: Int, r8 :: Double, r8 :: Bool)
06:06:39 <lambdabot> (8,8.0,*Exception: Prelude.read: no parse
06:08:34 × pepeiborra quits (sid443799@id-443799.ilkley.irccloud.com) (Read error: Software caused connection abort)
06:08:38 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:08:45 pepeiborra joins (sid443799@id-443799.ilkley.irccloud.com)
06:09:07 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
06:10:04 × razetime quits (~quassel@117.254.35.109) (Ping timeout: 252 seconds)
06:10:23 <Ybombinator> I didn't know about the fromInteger thing, thanks
06:11:42 <Axman6> :t 7 <> mempty <> 8
06:11:43 <lambdabot> (Num a, Monoid a) => a
06:11:54 <Axman6> :t 7 <> mempty <> 8 :: Sum Integer
06:11:55 <lambdabot> Sum Integer
06:12:01 <Axman6> :t 7 <> mempty <> 8 :: Product Double
06:12:03 <lambdabot> Product Double
06:12:08 <Axman6> > 7 <> mempty <> 8 :: Product Double
06:12:09 <lambdabot> Product {getProduct = 56.0}
06:12:13 <Axman6> > 7 <> mempty <> 8 :: Product Double
06:12:14 <lambdabot> Product {getProduct = 56.0}
06:12:15 <Axman6> urgh
06:12:45 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
06:21:12 chomwitt joins (~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1)
06:22:28 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
06:22:53 × mbuf quits (~Shakthi@49.205.82.149) (Read error: Connection reset by peer)
06:23:49 razetime joins (~quassel@117.254.35.109)
06:23:50 mbuf joins (~Shakthi@49.205.82.149)
06:30:44 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
06:31:11 titibandit joins (~titibandi@xdsl-87-78-8-6.nc.de)
06:33:34 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:33:54 × razetime quits (~quassel@117.254.35.109) (Ping timeout: 260 seconds)
06:34:05 razetime joins (~quassel@117.193.2.237)
06:37:10 × barak quits (~barak@2a0d:6fc2:68c0:8900:b543:1b85:720f:c15) (Quit: Leaving)
06:42:31 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
06:43:04 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
06:43:41 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
06:46:44 × Dykam quits (Dykam@dykam.nl) (Ping timeout: 248 seconds)
06:47:06 Dykam joins (Dykam@dykam.nl)
06:47:22 manwithl- joins (~manwithlu@194.177.28.176)
06:48:52 × manwithluck quits (~manwithlu@194.177.28.176) (Ping timeout: 248 seconds)
06:49:11 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
06:49:34 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:50:05 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
06:53:08 × niko quits (niko@libera/staff/niko) (Ping timeout: 620 seconds)
06:56:11 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
06:56:25 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 260 seconds)
06:57:05 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
06:57:38 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
06:59:06 chexum joins (~quassel@gateway/tor-sasl/chexum)
07:03:13 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
07:04:06 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
07:05:10 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 260 seconds)
07:08:12 kenran joins (~user@user/kenran)
07:09:30 o joins (niko@libera/staff/niko)
07:09:51 o is now known as niko
07:10:01 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
07:10:13 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
07:11:07 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
07:13:04 × nineonine quits (~nineonine@2604:3d08:7780:cd00:997b:a50c:ac54:c195) (Remote host closed the connection)
07:17:13 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
07:18:07 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Read error: Connection reset by peer)
07:20:01 zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
07:20:30 machinedgod joins (~machinedg@clnet-p10-126.ikbnet.co.at)
07:23:51 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:24:14 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
07:28:50 × jonathanx__ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 246 seconds)
07:36:49 mncheck joins (~mncheck@193.224.205.254)
07:37:04 nate4 joins (~nate@98.45.169.16)
07:37:50 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
07:39:10 razetime_ joins (~quassel@117.193.2.237)
07:39:10 × razetime_ quits (~quassel@117.193.2.237) (Client Quit)
07:39:11 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
07:39:24 vglfr joins (~vglfr@145.224.100.100)
07:40:24 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
07:40:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:41:30 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
07:41:51 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
07:47:21 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
07:47:59 × razetime quits (~quassel@117.193.2.237) (Ping timeout: 260 seconds)
07:48:39 jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
07:52:11 × mixfix41 quits (~sdeny9ee@user/mixfix41) (Ping timeout: 248 seconds)
07:52:52 dagit joins (~dagit@2001:558:6025:38:6476:a063:d05a:44da)
07:54:25 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
07:55:15 michalz joins (~michalz@185.246.207.200)
08:02:34 × sagax quits (~sagax_nb@user/sagax) (Ping timeout: 260 seconds)
08:03:37 razetime joins (~quassel@117.193.2.237)
08:04:47 bilegeek_ joins (~bilegeek@242.sub-174-209-38.myvzw.com)
08:07:35 × bilegeek quits (~bilegeek@2600:1008:b04f:3c92:6adf:edcc:4896:94bb) (Ping timeout: 260 seconds)
08:07:46 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
08:08:59 lortabac joins (~lortabac@2a01:e0a:541:b8f0:7915:4565:2a54:1342)
08:10:22 acidjnk_new joins (~acidjnk@p200300d6e7137a80d16563246cd9a30d.dip0.t-ipconnect.de)
08:11:05 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
08:11:19 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 260 seconds)
08:11:45 × dagit quits (~dagit@2001:558:6025:38:6476:a063:d05a:44da) (Remote host closed the connection)
08:11:46 × ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving)
08:11:55 dagit joins (~dagit@2001:558:6025:38:6476:a063:d05a:44da)
08:12:48 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:4c78:c477:402b:896a)
08:13:33 × dagit quits (~dagit@2001:558:6025:38:6476:a063:d05a:44da) (Remote host closed the connection)
08:14:53 dagit joins (~dagit@2001:558:6025:38:6476:a063:d05a:44da)
08:16:28 × bilegeek_ quits (~bilegeek@242.sub-174-209-38.myvzw.com) (Quit: Leaving)
08:16:35 Kaiepi joins (~Kaiepi@108.175.84.104)
08:17:49 Batzy joins (~quassel@user/batzy)
08:18:05 × Batzy quits (~quassel@user/batzy) (Client Quit)
08:20:52 sagax joins (~sagax_nb@user/sagax)
08:22:16 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
08:23:03 MajorBiscuit joins (~MajorBisc@c-001-009-026.client.tudelft.eduvpn.nl)
08:26:59 × elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Read error: Connection reset by peer)
08:27:07 elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
08:33:07 Batzy joins (~quassel@user/batzy)
08:34:04 × titibandit quits (~titibandi@xdsl-87-78-8-6.nc.de) (Ping timeout: 260 seconds)
08:36:59 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
08:37:12 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:38:09 × razetime quits (~quassel@117.193.2.237) (Ping timeout: 260 seconds)
08:38:47 razetime joins (~quassel@117.193.2.237)
08:39:22 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
08:40:02 vn36 joins (~vn36@123.63.203.210)
08:42:02 vglfr joins (~vglfr@145.224.100.100)
08:42:19 Guest75 joins (~Guest75@178.141.177.81)
08:42:19 odnes joins (~odnes@5-203-252-50.pat.nym.cosmote.net)
08:46:00 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
08:47:25 cfricke joins (~cfricke@user/cfricke)
08:47:29 × niko quits (niko@libera/staff/niko) (Ping timeout: 615 seconds)
08:49:57 titibandit joins (~titibandi@xdsl-87-78-8-6.nc.de)
08:50:27 kuribas joins (~user@ptr-17d51eo9spiq814cpsf.18120a2.ip6.access.telenet.be)
08:51:18 × odnes quits (~odnes@5-203-252-50.pat.nym.cosmote.net) (Quit: Leaving)
08:51:24 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection)
08:51:34 danza joins (~francesco@45.red-79-153-2.dynamicip.rima-tde.net)
08:51:42 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
09:00:06 × aviladev[m] quits (~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: You have been kicked for being idle)
09:00:07 × Neosake[m] quits (~neosakema@2001:470:69fc:105::2:989e) (Quit: You have been kicked for being idle)
09:01:13 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
09:02:55 nschoe joins (~q@2a01:e0a:8e:a190:819d:bc04:2515:8096)
09:03:04 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Remote host closed the connection)
09:08:07 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:4c78:c477:402b:896a) (Remote host closed the connection)
09:08:40 × titibandit quits (~titibandi@xdsl-87-78-8-6.nc.de) (Remote host closed the connection)
09:09:41 chele joins (~chele@user/chele)
09:10:23 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:10:27 o joins (niko@libera/staff/niko)
09:10:55 o is now known as niko
09:11:57 Neuromancer joins (~Neuromanc@user/neuromancer)
09:13:09 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 260 seconds)
09:14:24 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
09:18:35 × sudden quits (~cat@user/sudden) (Ping timeout: 248 seconds)
09:19:07 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
09:19:39 sudden joins (~cat@user/sudden)
09:22:01 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
09:22:26 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
09:24:16 × potash_ quits (~foghorn@94-225-47-8.access.telenet.be) (Remote host closed the connection)
09:24:39 __monty__ joins (~toonn@user/toonn)
09:25:22 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
09:26:02 potash joins (~foghorn@user/foghorn)
09:26:39 vglfr joins (~vglfr@145.224.100.100)
09:33:34 × razetime quits (~quassel@117.193.2.237) (Ping timeout: 260 seconds)
09:33:51 <kuribas> I wonder if garbage collection is really much worse than manual management.
09:33:57 razetime joins (~quassel@117.193.2.237)
09:33:58 <kuribas> allocating data also is expensive.
09:34:19 <kuribas> This article only shows 30% decrease because of garbage collection: https://blog.akquinet.de/2021/01/03/haskell-is-faster-than-rust-wait-a-sec/
09:34:37 <kuribas> Except of course when you have lots of live data.
09:35:04 <kuribas> But are the added headaches of rust memory management worth it for small gains?
09:42:27 <merijn> kuribas: No, in many common usecases GC outperforms manual memory management
09:42:37 <merijn> because most people are terrible at manual memory management
09:42:50 <merijn> And write horribly inefficient malloc nonsense
09:43:10 <dminuoso> More importantly GC outperforms *error-free* memory management by roughly 100%
09:43:19 × vn36 quits (~vn36@123.63.203.210) (Quit: leaving)
09:43:53 <dminuoso> There's just too many programmers precoccupied by performance, when in reality 99% of the situations are not in bottlenecks, and by doing manual management they tend to introduce memory bugs every 20 lines of code (number is not real/up-to-scale)
09:44:12 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
09:45:22 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:46:35 <dminuoso> And I think any comparison of "GC vs non-GC" is difficult especially when you have handpicked a) the languages, b) the GC implementation and c) the software to benchmark against. You can, at best, compare a particular GC implementation with a particular code that assumes some of the semantics of that GC, against a particular non-GC-style code
09:47:24 CiaoSen joins (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
09:47:55 <dminuoso> But that wont tell you much about the question "Is GC generally and or not?"
09:56:57 <kuribas> merijn: that's what I would expect.
10:02:29 <kuribas> merijn: malloc isn't cheap either.
10:02:31 teo joins (~teo@user/teo)
10:03:17 <merijn> malloc is super expensive
10:03:33 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
10:05:12 <dminuoso> I wonder, on linux does malloc yield the scheduler?
10:07:21 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
10:07:39 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds)
10:07:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Ping timeout: 252 seconds)
10:11:31 × biberu quits (~biberu@user/biberu) (Ping timeout: 252 seconds)
10:11:58 <merijn> dminuoso: It Depends (TM)
10:12:18 ubert1 joins (~Thunderbi@178.115.49.179.wireless.dyn.drei.com)
10:12:37 <Athas> Wait, why would it yield?
10:12:50 <Athas> I mean in a multi-threaded environment where the malloc() lock is held, sure, but in general?
10:13:29 <merijn> Athas: even single threaded if you do a syscall you might yield, no?
10:13:41 × ubert quits (~Thunderbi@91.141.75.105.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
10:13:41 ubert1 is now known as ubert
10:14:17 <Athas> merijn: I don't think syscalls necessarily involve yielding.
10:14:35 <Athas> And many calls to malloc() should not require syscalls.
10:14:35 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
10:15:13 <merijn> Athas: I just said it *might*
10:15:37 <Franciman> lol
10:15:44 <Franciman> ops sorry, wrong chat
10:16:36 <Maxdamantus> preemption should be a much more frequent cause for yielding.
10:16:56 <Athas> Well, everything might yield, but it has more to do with the time slice being up than anything you're doing.
10:18:56 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 246 seconds)
10:19:09 <dminuoso> Athas: So if memory serves right, a lot of syscalls will at their end implicitly call into the scheduler, a kind of implicit cooperation
10:19:48 <dminuoso> Without it, you would get quite horrid latency since otherwise every execution would get (on most default installations) 4ms of uninterrupted CPU time.
10:20:03 <dminuoso> Im just not sure which syscalls this actually applies to
10:22:39 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
10:23:48 comerijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:24:11 <Maxdamantus> What does 4 ms correspond to? system calls are often much faster than that.
10:24:30 <dminuoso> Maxdamantus: Most distributions configure preemption frequency to 250Hz
10:25:15 <Maxdamantus> Sure, but system calls can be much more frequent than that (I'd usually expect in the order of a few MHz)
10:25:34 <Maxdamantus> $ dd if=/dev/zero bs=1 of=/dev/null count=1M
10:25:35 <Maxdamantus> 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.302947 s, 3.5 MB/s
10:25:48 <Maxdamantus> that's 7 million system calls per second.
10:26:04 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
10:26:20 <dminuoso> Right, and that's what Im saying. System calls produce implicit yields, so amongst some other things, at the end of (some?) system calls the scheduler is called.
10:27:03 <dminuoso> I just dont have reliable information whether a) this applies to all system calls, and b) what that interaction actually is (its presumably not an actual sched_yield, since that will unconditionally move the task to the end of the list)
10:28:02 <dminuoso> Otoh, if you are doing number crunching a tight cpu loop, that does mean you will - in the absence of interrupts - get up to 4ms of uninterrupted CPU time
10:28:28 <dminuoso> (well, "interrupts" heh. I mean the preempt timer generates interrupts)
10:29:14 <Maxdamantus> So what's the difference in latency between 4 ms of uninterrupted CPU time in user space vs. 4 ms of unterrupted CPU time in user/kernel space?
10:29:56 <dminuoso> Im just pointing out, that if you are in a tight cpu loop without syscalls, this can actually degrade system performance.
10:30:06 <dminuoso> because the preempt frequency is that low.
10:30:23 <dminuoso> the preempt frequencies are low because its assumed most software will frequently do system calls
10:30:41 <dminuoso> and it turns out, if you do a fast sysenter you may not have to do a TLB flush
10:31:10 <dminuoso> which makes it *much* faster than calling the scheduler via a timer IRQ
10:31:22 shailangsa joins (~shailangs@host109-159-108-137.range109-159.btcentralplus.com)
10:32:01 <Maxdamantus> I imagine if there's an advantage to yielding in system calls, it probably has more to do with the fact that you've already left user space (switching contexts), so there isn't as much performance advantage in switching back to that specific context.
10:32:16 <dminuoso> Maxdamantus: no the advantage is saving interrupt costs.
10:32:41 <Maxdamantus> you mean context switching costs?
10:32:47 <dminuoso> No interrupt costs.
10:33:22 <dminuoso> So back in the old days to do a syscall, you would actually explicitly cause an interrupt (on linux this would be interrupted 0x80)
10:33:40 <dminuoso> But interrupts have quite a bit of costs attached to them (because you must store and restore execution context)
10:34:13 <dminuoso> for that reason, AMD and Intel have introduced SYSENTER and SYSCALL instructions, which provide a way to do fast interrupt free jumps to specific prepared handlers
10:37:27 <dminuoso> So with that in place, it turns out that making frequent syscalls is cheap - so with that its been observed that software can very liberally and frequently do syscalls. Now, since a syscall is just kernel code, we can use the fact that we're already in kernel code, and just verify whether we should perhaps yield to the scheduler. If we for example assumed this would happen every 100 microseconds,
10:37:29 <dminuoso> this would give us timeslices of up to 100 microseconds, but without having to program the APIC timer and inducing costly interrupts every 100 microseconds
10:40:09 <dminuoso> Plus, even if there are costs attached, the thing is once we have a syscall - that cost is paid for already anyway.
10:40:21 <dminuoso> Might as well do additional kernel work while we're in the kernel. :)
10:40:39 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
10:40:52 takuan joins (~takuan@178-116-218-225.access.telenet.be)
10:42:55 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
10:42:59 × razetime quits (~quassel@117.193.2.237) (Ping timeout: 260 seconds)
10:43:03 razetime_ joins (~quassel@117.193.2.237)
10:44:05 zaquest joins (~notzaques@5.130.79.72)
10:46:50 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
10:47:07 × tgi quits (~thegeekin@189.180.92.220) (Ping timeout: 248 seconds)
10:48:47 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:53:29 × jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
10:54:02 jpds1 joins (~jpds@gateway/tor-sasl/jpds)
10:56:58 xff0x joins (~xff0x@2405:6580:b080:900:88f3:132d:4c04:2bb3)
10:59:39 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
11:02:07 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
11:04:23 × jtomas quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Quit: Leaving)
11:05:59 × hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Quit: Leaving)
11:10:54 chele_ joins (~chele@user/chele)
11:13:26 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 252 seconds)
11:13:46 cstml joins (~cstml@user/cstml)
11:13:54 × chele quits (~chele@user/chele) (Ping timeout: 260 seconds)
11:16:14 × Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 260 seconds)
11:20:37 <APic>
11:20:54 × vglfr quits (~vglfr@145.224.100.100) (Ping timeout: 260 seconds)
11:21:56 vglfr joins (~vglfr@145.224.100.100)
11:28:29 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 260 seconds)
11:28:43 __monty__ joins (~toonn@user/toonn)
11:33:46 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
11:35:25 × machinedgod quits (~machinedg@clnet-p10-126.ikbnet.co.at) (Remote host closed the connection)
11:38:13 nate4 joins (~nate@98.45.169.16)
11:42:16 × Ybombinator quits (~Ybombinat@85.254.75.39) (Ping timeout: 252 seconds)
11:42:53 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
11:43:26 <dminuoso> Heh that name. :)
11:46:01 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
11:47:01 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
11:55:02 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
11:55:12 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Quit: beteigeuze)
11:55:44 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
11:57:53 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
11:58:17 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Client Quit)
11:58:27 vglfr joins (~vglfr@145.224.100.100)
11:58:31 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
11:58:44 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
12:00:03 <ephemient> sadly syscalls are no longer cheap due to software mitigations for hardware vulnerabilities (e.g. https://www.kernel.org/doc/html/latest/x86/pti.html flushes page tables on enter and exit)
12:00:12 biberu joins (~biberu@user/biberu)
12:00:20 vglfr joins (~vglfr@145.224.100.100)
12:04:52 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
12:05:35 vglfr joins (~vglfr@145.224.100.100)
12:05:36 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
12:06:24 × teo quits (~teo@user/teo) (Ping timeout: 260 seconds)
12:06:35 teo joins (~teo@user/teo)
12:10:15 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Ping timeout: 260 seconds)
12:11:47 arjun joins (~arjun@205.254.175.154)
12:12:10 × arjun quits (~arjun@205.254.175.154) (Changing host)
12:12:10 arjun joins (~arjun@user/arjun)
12:14:34 × ubert quits (~Thunderbi@178.115.49.179.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
12:15:00 ubert joins (~Thunderbi@178.115.49.179.wireless.dyn.drei.com)
12:15:35 <dminuoso> ephemient: Thats not entirely true.
12:15:57 <dminuoso> You dont flush the entire TLB
12:16:17 <dminuoso> At least not when PCID is supported
12:16:55 <dminuoso> With a PCID TLB flush you can flush only the kernel page table entries
12:17:24 × arjun quits (~arjun@user/arjun) (Quit: Leaving)
12:17:47 × CiaoSen quits (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
12:18:57 <dminuoso> But yes, non non-PCID capable systems, with PTI enabled, each syscall/interruption/exception will do a complete TLB flush.
12:19:10 <dminuoso> (Which presumably can induce extreme performance penalties)
12:20:08 × Guest75 quits (~Guest75@178.141.177.81) (Quit: Client closed)
12:21:21 × bjourne quits (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) (Read error: Connection reset by peer)
12:24:17 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
12:24:48 kenran` joins (~user@user/kenran)
12:25:01 vglfr joins (~vglfr@145.224.100.100)
12:26:08 abhiroop joins (~abhiroop@ext-1-450.eduroam.chalmers.se)
12:29:11 × kenran` quits (~user@user/kenran) (Remote host closed the connection)
12:30:40 × abhiroop quits (~abhiroop@ext-1-450.eduroam.chalmers.se) (Ping timeout: 260 seconds)
12:38:11 abhiroop joins (~abhiroop@ext-1-450.eduroam.chalmers.se)
12:39:48 machinedgod joins (~machinedg@clnet-p10-126.ikbnet.co.at)
12:42:20 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
12:45:27 zmt00 joins (~zmt00@user/zmt00)
12:46:53 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
12:49:03 rembo10 joins (~rembo10@main.remulis.com)
12:52:34 Neuromancer joins (~Neuromanc@user/neuromancer)
12:53:06 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
12:53:45 vglfr joins (~vglfr@145.224.100.100)
12:59:32 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
13:00:07 Guest75 joins (~Guest75@178.141.177.81)
13:03:39 bjourne joins (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5)
13:05:10 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
13:05:16 Guest88 joins (~Guest88@2001:e68:5470:3aaa:b978:4b50:ca1f:1e9b)
13:06:03 vglfr joins (~vglfr@145.224.100.100)
13:06:32 × Guest88 quits (~Guest88@2001:e68:5470:3aaa:b978:4b50:ca1f:1e9b) (Client Quit)
13:17:31 × jmd_ quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
13:19:04 bcmiller parts (~bm3719@66.42.95.185) ()
13:22:47 mvk joins (~mvk@2607:fea8:5ce3:8500::4b68)
13:23:12 money is now known as polo
13:25:21 cfricke joins (~cfricke@user/cfricke)
13:25:23 jakalx joins (~jakalx@base.jakalx.net)
13:25:55 × Techcable quits (~Techcable@user/Techcable) (Remote host closed the connection)
13:28:36 Techcable joins (~Techcable@user/Techcable)
13:34:13 <freeside> so, i have just found myself doing `(fmap . fmap) myfunction <$> ...` Is there some idiom by which I can avoid quite so many fmaps?
13:35:01 <kuribas> freeside: Compose?
13:35:43 <freeside> do you mean Data.Functor.Compose?
13:35:45 <kuribas> > fmap (+1) (Compose [Just 1, Nothing])
13:35:46 <lambdabot> error:
13:35:46 <lambdabot> • Data constructor not in scope: Compose :: [Maybe a0] -> f b
13:35:46 <lambdabot> • Perhaps you meant variable ‘icompose’ (imported from Control.Lens)
13:35:52 <kuribas> yes
13:36:01 <freeside> i need to go learn Lens. :-o
13:36:09 <kuribas> > fmap (+1) (Data.Functor.Compose [Just 1, Nothing])
13:36:10 <lambdabot> error:
13:36:10 <lambdabot> Not in scope: data constructor ‘Data.Functor.Compose’
13:36:10 <lambdabot> No module named ‘Data.Functor’ is imported.
13:36:30 <kuribas> freeside: Compose is not in lens...
13:38:59 <dminuoso> freeside: You can also just write `fmap2 = fmap . fmap` and then proceed to use that.
13:39:21 <dminuoso> Which is what I frequently do, it's usually more ergonomic than roundtripping through Compose
13:40:00 <dminuoso> Making these types of surrogate bindings take minimal effort
13:40:38 <freeside> that makes sense. I just didn't want to be inventing my own idioms if there was already an accepted way of doing that
13:41:39 <freeside> i mean, we have zip, zip3, we have liftA, liftA2, liftA3
13:42:04 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 260 seconds)
13:44:17 cfricke joins (~cfricke@user/cfricke)
13:46:31 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:53:54 doyougnu joins (~doyougnu@cpe-74-69-132-225.stny.res.rr.com)
14:00:28 acidjnk_new3 joins (~acidjnk@p200300d6e7137a91c8a7e6211d36bcc5.dip0.t-ipconnect.de)
14:00:50 × acidjnk_new quits (~acidjnk@p200300d6e7137a80d16563246cd9a30d.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
14:01:25 × abhiroop quits (~abhiroop@ext-1-450.eduroam.chalmers.se) (Ping timeout: 252 seconds)
14:04:35 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
14:06:08 freeside joins (~mengwong@103.252.202.193)
14:13:22 comerijn is now known as merijn
14:17:38 thegeekinside joins (~thegeekin@189.180.92.220)
14:18:40 × Guest75 quits (~Guest75@178.141.177.81) (Quit: Client closed)
14:19:32 ksu joins (~ksu@user/prtr)
14:20:35 shriekingnoise joins (~shrieking@186.137.167.202)
14:21:27 abhiroop joins (~abhiroop@ext-1-450.eduroam.chalmers.se)
14:23:56 CiaoSen joins (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:25:40 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
14:25:56 Guest75 joins (~Guest75@178.141.177.81)
14:26:24 × teo quits (~teo@user/teo) (Ping timeout: 260 seconds)
14:26:24 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 260 seconds)
14:26:24 × cstml quits (~cstml@user/cstml) (Ping timeout: 260 seconds)
14:26:39 __monty__ joins (~toonn@user/toonn)
14:26:46 cstml joins (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net)
14:26:59 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Ping timeout: 260 seconds)
14:33:34 xilo joins (~xilo@84.32.165.17)
14:33:44 × vglfr quits (~vglfr@145.224.100.100) (Read error: Connection reset by peer)
14:34:08 teo joins (~teo@user/teo)
14:35:04 vglfr joins (~vglfr@145.224.100.100)
14:35:33 xilo parts (~xilo@84.32.165.17) ()
14:40:11 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
14:40:54 vglfr joins (~vglfr@145.224.100.100)
14:41:27 × vglfr quits (~vglfr@145.224.100.100) (Remote host closed the connection)
14:43:38 vglfr joins (~vglfr@145.224.100.100)
14:48:05 × Sauvin quits (~sauvin@user/Sauvin) (Read error: Connection reset by peer)
14:48:52 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
14:49:29 Sauvin joins (~sauvin@user/Sauvin)
14:53:54 igghibu joins (~igghibu@37.120.201.87)
14:54:54 × abhiroop quits (~abhiroop@ext-1-450.eduroam.chalmers.se) (Ping timeout: 252 seconds)
14:55:02 Sgeo joins (~Sgeo@user/sgeo)
14:56:40 jakalx parts (~jakalx@base.jakalx.net) ()
14:58:17 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
15:01:59 jakalx joins (~jakalx@base.jakalx.net)
15:12:33 king_gs joins (~Thunderbi@187.201.83.115)
15:16:57 mikoto-chan joins (~mikoto-ch@164.5.249.78)
15:17:01 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
15:21:51 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
15:32:19 × Techcable quits (~Techcable@user/Techcable) (Ping timeout: 260 seconds)
15:34:12 Techcable joins (~Techcable@user/Techcable)
15:36:01 × king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer)
15:36:31 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
15:36:59 <bjourne> anyone know how to use custom error types in alex/happy? String appears to be hardcoded...
15:38:01 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1)
15:38:45 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Quit: WeeChat 3.6)
15:39:16 × CiaoSen quits (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
15:39:20 mikoto-chan joins (~mikoto-ch@164.5.249.78)
15:39:45 nate4 joins (~nate@98.45.169.16)
15:40:31 × ygsjg quits (~quassel@189.124.224.160) (Read error: Connection reset by peer)
15:44:55 santiagopim joins (~user@90.167.66.131)
15:44:55 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
15:46:43 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
15:47:44 <bjourne> they are https://github.com/haskell/alex/issues/178
15:48:37 <Hecate> looks like you have to pester ericson2314 about https://github.com/haskell/alex/pull/174
15:48:55 <ericson2314> hehehe
15:49:09 <ericson2314> I screwed up the parser combinators
15:49:51 <Hecate> ericson2314: wanna pair on that?
15:50:04 <Hecate> maybe with bjourne so that some knowledge is transmitted outside of the inner circle
15:50:19 × mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 252 seconds)
15:50:19 × machinedgod quits (~machinedg@clnet-p10-126.ikbnet.co.at) (Ping timeout: 252 seconds)
15:52:42 cfricke joins (~cfricke@user/cfricke)
15:53:03 <ericson2314> Hecate: yeah maybe :)
15:53:22 <ericson2314> I need to catch up on some regular work things this week or so
15:53:23 <ericson2314> but then I should have more bandwidth for other stuff
15:53:33 × shailangsa quits (~shailangs@host109-159-108-137.range109-159.btcentralplus.com) (Remote host closed the connection)
15:53:41 <ericson2314> I did try to get a few admin tasks on alex/happy done over the weekend
15:54:58 shof joins (~shof@user/shof)
15:55:47 irrgit joins (~irrgit@146.70.27.250)
15:56:59 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:7915:4565:2a54:1342) (Quit: WeeChat 2.8)
15:59:09 × igghibu quits (~igghibu@37.120.201.87) (Quit: Textual IRC Client: www.textualapp.com)
16:01:50 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 260 seconds)
16:03:41 slack1256 joins (~slack1256@191.126.227.81)
16:06:30 polo is now known as money
16:08:48 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
16:09:52 <slack1256> On the async package, it is recommended to use withAsync whenever possible to get a tree thread structure. This works well for statically known amounts of threads. What about for an unknown but bounded amount of threads? So far I am using `catch` and `link` to get the same semantics, but maybe it can be done better?
16:11:38 <geekosaur> https://hackage.haskell.org/package/async-pool ?
16:12:19 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
16:13:08 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 248 seconds)
16:13:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Ping timeout: 260 seconds)
16:16:00 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Remote host closed the connection)
16:16:20 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
16:17:35 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection)
16:18:11 <bjourne> this haskell doesn't like [line, col] = getAllTextMatches (err =~ "[0-9]+") :: [String]
16:20:20 <geekosaur> @where paste
16:20:20 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
16:20:30 <geekosaur> include context and the error message
16:25:31 <slack1256> geekosaur: this!
16:28:04 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
16:28:22 slac77925 joins (~slack1256@191.125.227.88)
16:29:23 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
16:30:39 × slack1256 quits (~slack1256@191.126.227.81) (Ping timeout: 260 seconds)
16:34:49 L29Ah joins (~L29Ah@wikipedia/L29Ah)
16:37:08 abhiroop joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com)
16:37:39 × teo quits (~teo@user/teo) (Ping timeout: 260 seconds)
16:38:39 teo joins (~teo@user/teo)
16:42:51 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
16:44:42 × kenran quits (~user@user/kenran) (Remote host closed the connection)
16:47:47 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 246 seconds)
16:49:18 × acidjnk_new3 quits (~acidjnk@p200300d6e7137a91c8a7e6211d36bcc5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
16:49:40 × monaaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds)
16:51:14 Bocaneri joins (~sauvin@user/Sauvin)
16:51:21 × Sauvin quits (~sauvin@user/Sauvin) (Remote host closed the connection)
16:51:28 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
16:51:38 Bocaneri is now known as Guest6797
16:51:41 titibandit joins (~titibandi@xdsl-87-78-8-6.nc.de)
16:51:57 monaaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
16:53:01 slack1256 joins (~slack1256@191.125.227.81)
16:55:10 × slac77925 quits (~slack1256@191.125.227.88) (Ping timeout: 252 seconds)
16:58:07 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Read error: Connection reset by peer)
17:02:31 xilo joins (~xilo@84.32.165.17)
17:04:53 NehaPassiveIncom joins (~NehaPassi@2409:4089:211:37ff:8190:ef69:5139:1fa8)
17:05:58 <NehaPassiveIncom> https://earnbysellinginternetpack.blogspot.com
17:06:01 × NehaPassiveIncom quits (~NehaPassi@2409:4089:211:37ff:8190:ef69:5139:1fa8) (Client Quit)
17:07:48 <geekosaur> sadly, can't delete messages on irc like you can on matrix…
17:09:26 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:10:44 × Guest75 quits (~Guest75@178.141.177.81) (Quit: Client closed)
17:11:50 × MajorBiscuit quits (~MajorBisc@c-001-009-026.client.tudelft.eduvpn.nl) (Ping timeout: 260 seconds)
17:12:00 <EvanR> sounds like a client problem xD
17:12:28 <EvanR> (would be nice to delete message at least for your own self xD)
17:12:41 <geekosaur> there's also the question of how you';d signal it to clients in the protocol
17:13:36 <EvanR> yeah deleting messages on other people's client sounds like a big ask
17:15:08 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:15:36 abhiroop_ joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com)
17:15:42 × kuribas quits (~user@ptr-17d51eo9spiq814cpsf.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
17:16:04 × abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 252 seconds)
17:16:09 <geekosaur> flip side, doing IRC admin stuff is a massive pain from matrix, which is a large part of why I haven't migrated to element
17:16:17 king_gs joins (~Thunderbi@187.201.83.115)
17:16:36 <geekosaur> (except on my phone)
17:17:48 × titibandit quits (~titibandi@xdsl-87-78-8-6.nc.de) (Quit: Leaving.)
17:18:17 × razetime_ quits (~quassel@117.193.2.237) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
17:21:27 × slack1256 quits (~slack1256@191.125.227.81) (Read error: Connection reset by peer)
17:22:54 slack1256 joins (~slack1256@186.11.28.28)
17:23:04 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:24:19 mikoto-chan joins (~mikoto-ch@164.5.249.78)
17:26:23 × danso quits (danso@2600:3c03::f03c:91ff:fe05:6954) (Quit: ZNC - https://znc.in)
17:27:26 mvk joins (~mvk@2607:fea8:5ce3:8500::4b68)
17:27:40 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
17:27:51 Guest6797 is now known as Sauvin
17:27:55 danso joins (~danso@danso.ca)
17:28:24 <ski> @type \cases -> ()
17:28:25 <lambdabot> p -> ()
17:29:13 <dolio> Weird.
17:29:34 × monaaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
17:29:47 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 248 seconds)
17:30:02 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 268 seconds)
17:30:12 <geekosaur> ?
17:30:40 incertia joins (~incertia@209.122.71.127)
17:31:07 <EvanR> cases is a new syntax that lambdabot doesn't know about yet?
17:31:32 <[exa]> looks to me like a binding that it didn't see yet? :]
17:32:14 <geekosaur> lambdabot is 9.0.1 last I checked, not 9.4
17:32:43 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
17:33:05 <geekosaur> there's some updates needed for it to be upgraded (including some dependencies)
17:33:20 <[exa]> oh noes there's a new keyword?
17:33:23 <geekosaur> I think someone's trying to take over the deps so they can be upgraded
17:33:53 <geekosaur> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0302-cases.rst
17:33:59 <yushyin> [exa]: just an extension to lambdacase, multiway lambdas!
17:36:04 × litharge quits (litharge@libera/bot/litharge) (Quit: restarting)
17:36:28 litharge joins (litharge@libera/bot/litharge)
17:36:32 × mbuf quits (~Shakthi@49.205.82.149) (Quit: Leaving)
17:37:15 × abhiroop_ quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds)
17:38:22 <ski> "Unlike `case', `cases' is not a keyword. Only the token sequence `\ cases' is treated specially (more precisely, lexically, `cases' is a varid rather than a reservedid, and it may be used as a variable).)
17:39:27 Kaipei joins (~Kaiepi@108.175.84.104)
17:40:38 × king_gs quits (~Thunderbi@187.201.83.115) (Ping timeout: 246 seconds)
17:42:45 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds)
17:43:21 ubert1 joins (~Thunderbi@178.115.49.179.wireless.dyn.drei.com)
17:44:09 × teo quits (~teo@user/teo) (Ping timeout: 260 seconds)
17:44:10 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
17:44:18 × ubert quits (~Thunderbi@178.115.49.179.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
17:44:18 ubert1 is now known as ubert
17:48:28 <dolio> Oh right, of course.
17:48:34 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 252 seconds)
17:50:58 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:52:09 abhiroop_ joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com)
17:55:57 king_gs joins (~Thunderbi@187.201.83.115)
17:57:27 pyrex_ joins (~quassel@2601:645:8781:1c90::5cbe)
17:57:37 × nschoe quits (~q@2a01:e0a:8e:a190:819d:bc04:2515:8096) (Ping timeout: 252 seconds)
17:59:54 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 260 seconds)
18:00:50 × pyrex quits (~quassel@user/pyrex) (Ping timeout: 260 seconds)
18:02:49 <ski> still weird that it eats an extra parameter, there
18:03:11 abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
18:03:19 <ski> zzz : you could define ⌜ιMod :: (T -> T) -> (State -> State); ιMod f st = st {ι = f (ι st)}⌝, and ditto for ⌜λMod :: (Layer -> Layer) -> (T -> T)⌝,⌜φMod :: (Int -> Int) -> (T -> T)⌝,⌜τMod :: (Set' Int -> Set' Int) -> (T -> T)⌝,⌜μMod :: (Mode -> Mode) -> (State -> State)⌝, where ⌜T⌝ is whatever type the field ⌜ι⌝ has
18:03:43 <ski> zzz : .. and then say ⌜(ιMod . φMod) (move 1 W) st⌝ instead of ⌜st { ι = (ι st) { φ = move 1 W f } }⌝, ⌜(ιMod . τMod) (\f -> if f ∈ t then del f t else add f t) st⌝ (or ⌜(ιMod . τMod) (cond (∈ t) (`del` t) (`add` t)) st⌝, given ⌜cond p t e x = if p x then t x else e x⌝) instead of ⌜st { ι = (ι st) { τ = if f ∈ t then del f t else add f t } }⌝, &c.
18:03:44 ddellacosta joins (~ddellacos@86.106.143.66)
18:06:06 <ski> @where SEC
18:06:06 <lambdabot> http://conal.net/blog/posts/semantic-editor-combinators/
18:06:10 <ski> @wiki Tangible Value#IO
18:06:10 <lambdabot> https://wiki.haskell.org/Tangible_Value#IO
18:07:29 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
18:10:38 nate4 joins (~nate@98.45.169.16)
18:13:18 jakalx joins (~jakalx@base.jakalx.net)
18:16:15 king_gs1 joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
18:16:15 × king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer)
18:16:15 king_gs1 is now known as king_gs
18:19:14 acidjnk_new3 joins (~acidjnk@p200300d6e7137a91c8a7e6211d36bcc5.dip0.t-ipconnect.de)
18:19:55 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
18:21:02 gmg joins (~user@user/gehmehgeh)
18:26:34 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:27:31 ub joins (~Thunderbi@178.115.49.179.wireless.dyn.drei.com)
18:28:29 × irrgit quits (~irrgit@146.70.27.250) (Ping timeout: 260 seconds)
18:30:03 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds)
18:31:43 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
18:32:41 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
18:38:34 Tuplanolla joins (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi)
18:39:03 Guest79 joins (~Guest79@80.208.65.12)
18:41:06 irrgit joins (~irrgit@89.47.234.26)
18:41:19 × pyrex_ quits (~quassel@2601:645:8781:1c90::5cbe) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:41:36 pyrex joins (~quassel@user/pyrex)
18:43:59 <Maxdamantus> 01:00:03 < ephemient> sadly syscalls are no longer cheap due to software mitigations for hardware vulnerabilities (e.g. https://www.kernel.org/doc/html/latest/x86/pti.html flushes page tables on enter and exit)
18:44:07 <Maxdamantus> they never really were cheap anyway.
18:44:38 <Maxdamantus> I remember doing those `dd` experiments before the whole spectre/meltdown thing and it would still only do a couple of million per second.
18:45:31 <Maxdamantus> I'm fairly confident that if `read` on a /dev/zero fd were implemented in userspace, it would do a lot more than 7 million per calls per second.
18:45:41 <geekosaur> with some exceptions; IIRC certain read-only syscalls (e.g. get time) were done by mapping certain parts of kernel memory into user processes?
18:46:26 <geekosaur> but yes, I/O syscalls are never fast; save/restore processor state in particular only gets slower as they add more and fancier registers
18:46:33 <Maxdamantus> Yes, aiui there are some things implemented in the VDSO that avoid the actual system call.
18:46:35 econo joins (uid147250@user/econo)
18:46:53 <Maxdamantus> but those are things that could probably be optimised out by a smart runtime anyway.
18:47:23 titibandit joins (~titibandi@xdsl-87-78-8-6.nc.de)
18:48:14 × bjourne quits (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) (Quit: Konversation terminated!)
18:50:04 × abhiroop_ quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 260 seconds)
18:52:37 × Sauvin quits (~sauvin@user/Sauvin) (Read error: Connection reset by peer)
18:52:44 Bocaneri joins (~sauvin@user/Sauvin)
18:52:59 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
18:53:08 Bocaneri is now known as Guest186
18:53:24 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
18:54:34 jakalx joins (~jakalx@base.jakalx.net)
18:56:48 Guest186 is now known as Sauvin
18:57:45 Guest73 joins (~Guest73@80.209.95.138.static.fibianet.dk)
18:58:38 × Guest73 quits (~Guest73@80.209.95.138.static.fibianet.dk) (Client Quit)
19:00:22 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Remote host closed the connection)
19:00:42 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
19:02:31 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:04:20 × Guest79 quits (~Guest79@80.208.65.12) (Quit: Client closed)
19:05:15 × ddellacosta quits (~ddellacos@86.106.143.66) (Ping timeout: 248 seconds)
19:08:33 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
19:08:36 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:10:07 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
19:13:56 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
19:16:47 tzh_ joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
19:18:05 emergence joins (emergence@2607:5300:60:5910:dcad:beff:feef:5bc)
19:18:10 × chele_ quits (~chele@user/chele) (Remote host closed the connection)
19:19:35 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
19:19:49 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 260 seconds)
19:22:58 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
19:25:37 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Remote host closed the connection)
19:29:46 ss4 joins (~wootehfoo@user/wootehfoot)
19:32:59 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
19:33:14 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds)
19:34:13 emmanuelux joins (~emmanuelu@user/emmanuelux)
19:37:05 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
19:40:28 Kaipii joins (~Kaiepi@108.175.84.104)
19:41:42 azimut joins (~azimut@gateway/tor-sasl/azimut)
19:43:44 × Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds)
19:44:22 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
19:44:35 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
19:45:00 freeside joins (~mengwong@103.252.202.193)
19:45:24 × jargon quits (~jargon@184.101.188.35) (Ping timeout: 248 seconds)
19:45:29 × ubert quits (~Thunderbi@178.115.49.179.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
19:45:58 ubert joins (~Thunderbi@178.115.49.179.wireless.dyn.drei.com)
19:46:00 ub1 joins (~Thunderbi@178.115.49.179.wireless.dyn.drei.com)
19:47:14 × ub quits (~Thunderbi@178.115.49.179.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
19:48:16 ub1 is now known as ub
19:54:49 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
19:55:02 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:55:21 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
20:05:37 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
20:05:50 lortabac joins (~lortabac@2a01:e0a:541:b8f0:fa38:3bf7:7f25:d08f)
20:15:29 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 252 seconds)
20:16:44 × libertyprime quits (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz) (Ping timeout: 246 seconds)
20:19:09 <EvanR> a big part of the complexity of multicore programming seems to come from coherence of memory when multiple cores read and write the same shared memory. Since haskell "always writes, then reads" is there any performance improvement from side stepping all that
20:19:21 Guest75 joins (~Guest75@178.141.177.81)
20:20:10 <EvanR> i.e. you never need to read the previous value from heap objects, they only get written once
20:21:35 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:fa38:3bf7:7f25:d08f) (Quit: WeeChat 2.8)
20:21:43 <monochrom> I think yes. Especially given the stronger "if two threads write, they write the same thing anyway".
20:23:07 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:23:28 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
20:23:35 <monochrom> Indeed Simon Marlow already allows GHC the "race condition" of "in rare cases two threads evaluating the same thunk may both do writes, but I don't care".
20:25:26 <EvanR> oh, then that blows my question out of the water
20:26:32 <monochrom> There is a white-hole mark to avoid that most of the time, but the purpose is just to avoid two threads duplicating the same work, i.e., just to save time. The white-hole marking is not "thread-safe" in the normal sense because, as in above, it doesn't have to be.
20:27:28 mixfix41 joins (~sdeny9ee@user/mixfix41)
20:28:00 <monochrom> But I feel that GHC can be even more aggressive than it currently is, there are more opportunities to exploit.
20:29:20 <EvanR> even if it's correct to allow that race condition, two threads writing while others are reading means you still might still trigger some kind uh
20:29:31 <EvanR> cache coherency activity
20:30:18 <monochrom> OK so here is the white-hole workflow.
20:30:29 <EvanR> I'm a noob. But I'm waiting for this book Art of Multiprocessor Programming
20:31:34 nate4 joins (~nate@98.45.169.16)
20:31:35 <monochrom> A thread sees a thunk and wants to evalute it. First it checks whether it's already marked as a "white hole"; if yes, it means some thread got there first, so just wait for the resolution.
20:32:12 <monochrom> If no, then mark it as a white hole, do the evaluation, store the value there.
20:33:09 king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6)
20:33:20 libertyprime joins (~libertypr@118-92-78-165.dsl.dyn.ihug.co.nz)
20:33:26 <EvanR> side tangent, what mechanism is used to 'wait'
20:33:45 <monochrom> We don't guard against race conditions in this process. If two threads do the above simultaneously, sure both threads will store values there, but it's the same value, it doesn't hurt.
20:33:50 <monochrom> I forgot.
20:34:21 mmhat joins (~mmh@p200300f1c70f4195ee086bfffe095315.dip0.t-ipconnect.de)
20:34:41 <EvanR> they will store the same value, but will they store the same pointer?
20:34:54 <monochrom> No, and it still doesn't hurt.
20:35:08 <EvanR> but good to know in case you're accessing that pointer somehow xD
20:35:19 <geekosaur> if you are, it's impure
20:35:39 mesaoptimizer2 is now known as rstoenwdyuhnw
20:35:48 rstoenwdyuhnw is now known as quit
20:35:52 × quit quits (~mesaoptim@user/PapuaHardyNet) (Quit: issued !quit command)
20:36:02 <EvanR> does all this directly have to do with unsafeUnutterablePerformIO's "gotchas"
20:36:22 mesaoptimizer is now known as mesaoptimizer2
20:36:33 <monochrom> So both threads create heap objects independently. But firstly they have Leibniz-equal content. Secondly one of them loses, well that just means unreferenced heap object, i.e., normal garbage. Let GC worry about it.
20:36:49 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
20:36:59 Topsi joins (~Topsi@ipb218f755.dynamic.kabel-deutschland.de)
20:37:08 pavonia joins (~user@user/siracusa)
20:37:12 <EvanR> that it's not the same pointer even more requires there to be some kind of cache update
20:37:25 <EvanR> but because of the white hole flag I guess it's rare
20:38:12 <geekosaur> as for Unutterable, that blows up because an impure operation is unwrapped into an apparently pure one, and all sorts of things subsequently go wrong
20:38:12 × ss4 quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:38:52 <EvanR> e.g. if you take the leibniz seriously, you wouldn't even need to synchronize the pointer across cores, different cores see different pointers to the same data and it's OK xD
20:39:05 <monochrom> Yeah, that.
20:39:26 <EvanR> (but it probably is anyway, so... I think that answers my original question)
20:39:33 machinedgod joins (~machinedg@clnet-b05-118.ikbnet.co.at)
20:39:44 <monochrom> Simon Marlow felt safe doing that because supposedly you're doing referentially transparent computing.
20:40:44 <geekosaur> (with unsafePerformIO, the internals are still impure, only the result is "coerced" into apparent purity. accursedUnutterablePerformIO declares the internals as pure as well
20:40:46 <geekosaur> )
20:42:23 myme joins (~myme@40.51-175-185.customer.lyse.net)
20:43:04 × myme quits (~myme@40.51-175-185.customer.lyse.net) (Client Quit)
20:43:21 myme joins (~myme@40.51-175-185.customer.lyse.net)
20:44:30 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:44:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Remote host closed the connection)
20:46:04 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 255 seconds)
20:46:41 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
20:46:52 ft joins (~ft@p508dbd59.dip0.t-ipconnect.de)
20:47:46 gmg joins (~user@user/gehmehgeh)
20:50:49 × titibandit quits (~titibandi@xdsl-87-78-8-6.nc.de) (Ping timeout: 260 seconds)
20:51:37 titibandit joins (~titibandi@xdsl-87-78-8-6.nc.de)
20:51:56 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
20:53:58 money is now known as joe
20:54:10 ec_ joins (~ec@gateway/tor-sasl/ec)
20:54:27 joe is now known as Guest704
20:54:45 Guest704 is now known as joeyjoe
20:54:57 joeyjoe is now known as money
21:01:41 × ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Remote host closed the connection)
21:03:28 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:04:18 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
21:04:43 ft joins (~ft@p508dbd59.dip0.t-ipconnect.de)
21:05:13 gmg joins (~user@user/gehmehgeh)
21:10:10 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
21:11:23 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
21:17:58 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
21:22:17 caryhartline joins (~caryhartl@2603-8080-6a0e-8d88-f0f2-36eb-bc07-091c.res6.spectrum.com)
21:26:45 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
21:32:40 L29Ah joins (~L29Ah@wikipedia/L29Ah)
21:33:10 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
21:34:42 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
21:36:49 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
21:37:22 jcb` joins (~user@104-202-135-187.dyn.grandenetworks.net)
21:38:06 × myme quits (~myme@40.51-175-185.customer.lyse.net) (Quit: WeeChat 3.7.1)
21:39:15 jcb` parts (~user@104-202-135-187.dyn.grandenetworks.net) ()
21:41:04 deathgrindfreak joins (~user@104-202-135-187.dyn.grandenetworks.net)
21:43:54 × caryhartline quits (~caryhartl@2603-8080-6a0e-8d88-f0f2-36eb-bc07-091c.res6.spectrum.com) (Quit: caryhartline)
21:45:00 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6)
21:49:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3d74:5eb7:3590:2ac6) (Ping timeout: 260 seconds)
21:51:40 nschoe joins (~q@2a01:e0a:8e:a190:59e0:6a55:8f76:edc2)
21:51:40 × nschoe quits (~q@2a01:e0a:8e:a190:59e0:6a55:8f76:edc2) (Client Quit)
21:56:27 cheater joins (~Username@user/cheater)
21:57:33 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:01:17 × thegeekinside quits (~thegeekin@189.180.92.220) (Remote host closed the connection)
22:01:22 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:01:53 jackhill joins (~jackhill@kalessin.dragonsnail.net)
22:07:00 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
22:09:46 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
22:10:03 cheater joins (~Username@user/cheater)
22:10:23 × mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Quit: Going elsewhere)
22:11:46 mvk joins (~mvk@2607:fea8:5ce3:8500::4b68)
22:14:48 thegeekinside joins (~thegeekin@189.180.92.220)
22:15:27 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
22:19:00 × zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
22:20:59 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 246 seconds)
22:21:42 slac75772 joins (~slack1256@191.126.227.81)
22:23:39 × slack1256 quits (~slack1256@186.11.28.28) (Ping timeout: 248 seconds)
22:24:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:25:35 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:25:51 bilegeek joins (~bilegeek@2600:1008:b047:b089:cb4:8edc:1ce0:e639)
22:25:56 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
22:26:49 gmg joins (~user@user/gehmehgeh)
22:28:31 L29Ah joins (~L29Ah@wikipedia/L29Ah)
22:31:13 × gmg quits (~user@user/gehmehgeh) (Client Quit)
22:32:16 × michalz quits (~michalz@185.246.207.200) (Remote host closed the connection)
22:33:36 × machinedgod quits (~machinedg@clnet-b05-118.ikbnet.co.at) (Ping timeout: 252 seconds)
22:35:33 freeside joins (~mengwong@103.252.202.193)
22:36:13 × Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 252 seconds)
22:38:38 <ski> could one thread possibly write half its value, then the other thread writes both its halves, then the first thread writes its other half ?
22:39:33 <ski> i suppose it's always here writing a unit of memory which can be written atomically in a single instruction
22:40:15 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
22:41:04 <geekosaur> I think ghc has an invariant that pointer writes are atomic?
22:41:33 <geekosaur> (and fit in a standard register)
22:43:22 × ub quits (~Thunderbi@178.115.49.179.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
22:43:22 × ubert quits (~Thunderbi@178.115.49.179.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
22:43:35 ubert joins (~Thunderbi@178.115.40.19.wireless.dyn.drei.com)
22:43:52 <ski> (first i was thinking of the value maybe being a large pointer that wouldn't necessarily have an atomic write. but presumably processors nowadays normally makes sure that the pointer/address size can be written atomically (?). then i was also wondering about, hm, an unboxed tuple, iow multiple values (perhaps the pure computation can generate structurally distinct, but observationally equivalent, values .. i
22:43:54 <monochrom> By a happy coincidence, you may actually have cache-line-size atomicity.
22:43:54 ub joins (~Thunderbi@178.115.40.19.wireless.dyn.drei.com)
22:43:58 <ski> guess distinct addresses of allocated memory is one instance of this). but possibly, when caching such, it'd write them to a fresh memory object, and then atomically store *its* address in a thunk, rather than storing the multiple values directly there)
22:44:18 <money> Nice
22:44:27 × deathgrindfreak quits (~user@104-202-135-187.dyn.grandenetworks.net) (Ping timeout: 248 seconds)
22:45:10 <ski> atomicity for writing a whole cache-line .. hm, i suppose that makes sense. but what happens if two processors or cores modify their cache-lines at the same time, and then try to store back to memory ?
22:45:49 <monochrom> You can build a very length heap object. That doesn't hurt. You either win or lose in submitting the address of your heap object.
22:47:13 <ski> the large heap object fitting in a cache-line ?
22:47:20 <ski> (or larger still ?)
22:47:59 <monochrom> When two threads happen to evaluate the same thunk, and the result value will turn out to be a very lengthy heap object, the two threads build two independent heap objects in separate regions. During this time, no one is broadcasting any final address.
22:48:38 <monochrom> The only real race is when the two threads both say "I'm done, this is the address of my answer".
22:48:40 <ski> this happens for any object larger than what can atomically be stored ?
22:49:12 <monochrom> There is no atomicity, nor is any needed, until either thread submits one single final address.
22:49:59 <monochrom> Indeed the two threads even get separate heap regions called "nurseries", one nursery per thread.
22:50:28 <monochrom> Something I learned just today from re-reading the "GHC execution model" slides.
22:50:30 jargon joins (~jargon@184.101.188.35)
22:50:31 <ski> if threads can write a whole cache-line atomically, then they should be able to write a whole bunch of values (unboxed) into a thunk, with no problem, as long as they all fit in the cache-line simultaneously, no ?
22:50:59 <ski> (possibly GHC doesn't do this .. i'm wondering if it possibly could do something along these lines)
22:51:01 <monochrom> I brought up cache line because, only because, cache-line-level atomicity implies pointer atomicity.
22:52:30 <ski> iow, as an optimization, instead of submitting a single final address, it sounds like it would be possible to submit multiple addresses and unboxed values, as long as there aren't too many of them
22:53:46 freeside joins (~mengwong@103.252.202.193)
22:57:03 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
22:57:07 <ski> (hm, also, in the write-to-separate-fresh-memory-blocks scenario, i wonder whether each thread could have different permissions to read and write so that only that thread can write (and none can read (or perhaps only that thread, if it wants to read what it's written already)), to begin with, and after it has finished writing, that page could be marked readable by other threads (and either writable turned
22:57:13 <ski> off, if no need, or turned on for all threads), just before submitting its address to the shared thunk)
22:58:59 <ski> .. perhaps the page permissions fiddling, and making sure everything in the same page can cope with the same permissions, would make this too costly, or to awkward, to use -- i dunno
23:01:03 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
23:01:41 × Topsi quits (~Topsi@ipb218f755.dynamic.kabel-deutschland.de) (Quit: Leaving.)
23:03:03 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: Ping timeout (120 seconds))
23:03:21 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
23:17:13 <sm> @where+ numbers https://blog.plover.com/prog/haskell/numbers.html A map of Haskell's numeric types
23:17:13 <lambdabot> Done.
23:17:31 × chomwitt quits (~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 248 seconds)
23:18:25 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
23:20:30 × king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 260 seconds)
23:31:30 × slac75772 quits (~slack1256@191.126.227.81) (Remote host closed the connection)
23:33:13 × Guest75 quits (~Guest75@178.141.177.81) (Ping timeout: 260 seconds)
23:33:47 myme joins (~myme@40.51-175-185.customer.lyse.net)
23:35:37 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
23:40:01 × acidjnk_new3 quits (~acidjnk@p200300d6e7137a91c8a7e6211d36bcc5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
23:42:40 nate4 joins (~nate@98.45.169.16)
23:47:43 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
23:47:59 × catern quits (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (Remote host closed the connection)
23:48:24 × Tuplanolla quits (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Quit: Leaving.)
23:50:33 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:57:12 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 252 seconds)
23:57:15 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
23:59:13 <Axman6> @hoogle Traversable t => t a -> Maybe a
23:59:13 <lambdabot> Generic.Data.Internal.Utils coerce' :: Coercible (f x) (g x) => f x -> g x
23:59:14 <lambdabot> Protolude head :: Foldable f => f a -> Maybe a
23:59:14 <lambdabot> Protolude.List head :: Foldable f => f a -> Maybe a

All times are in UTC on 2022-11-08.