<< 01-10-2014 >>

00:02:14*milosn joined #nimrod
00:04:29*saml_ joined #nimrod
00:13:31*Jehan_ quit (Quit: Leaving)
00:13:45*fowlmouth quit (Quit: Leaving)
00:14:48Onionhammeraraq around?
00:14:52Onionhammerpretty late i guess.
00:33:56*Demos joined #nimrod
01:14:13*willwillson quit (Remote host closed the connection)
01:17:53*francisl joined #nimrod
01:17:59*Jesin joined #nimrod
01:55:32*bogen joined #nimrod
02:15:45*flaviu1 quit (Remote host closed the connection)
02:18:33*brson quit (Quit: leaving)
02:28:54*boydgreenfield quit (Quit: boydgreenfield)
02:41:54*vissborg quit (Max SendQ exceeded)
02:44:36*vissborg joined #nimrod
02:45:21*wkoch quit (Quit: wkoch)
02:54:24*flaviu1 joined #nimrod
02:55:23*Demos quit (Quit: Leaving)
03:02:07*boydgreenfield joined #nimrod
03:05:13*francisl quit (Quit: francisl)
03:19:42*boydgreenfield quit (Quit: boydgreenfield)
03:29:52*saml_ quit (Quit: Leaving)
03:36:16*francisl joined #nimrod
03:49:39*boydgreenfield joined #nimrod
04:27:01*francisl quit (Quit: francisl)
04:52:29*xenagi quit (Quit: Leaving)
04:52:55*kshlm joined #nimrod
04:53:05*kshlm quit (Client Quit)
05:01:34*darkf_ joined #nimrod
05:01:56*johnsoft quit (Ping timeout: 260 seconds)
05:02:29*rpag quit (Ping timeout: 260 seconds)
05:02:35*johnsoft joined #nimrod
05:03:26*darkf quit (Ping timeout: 272 seconds)
05:04:43*darkf joined #nimrod
05:06:36*darkf_ quit (Ping timeout: 272 seconds)
05:15:17*rpag joined #nimrod
05:16:28*darkf_ joined #nimrod
05:18:00*darkf quit (Ping timeout: 272 seconds)
05:18:16*BlaXpirit joined #nimrod
05:22:05*darkf_ is now known as darkf
05:25:36*bjz quit (Ping timeout: 272 seconds)
05:28:38*bjz joined #nimrod
05:37:35*bjz_ joined #nimrod
05:37:37*dirkk0 joined #nimrod
05:40:42*bjz quit (Ping timeout: 245 seconds)
05:58:31*dirkk0 quit (Quit: Leaving)
06:08:53*nande quit (Remote host closed the connection)
06:27:03*boydgreenfield quit (Quit: boydgreenfield)
06:33:01*BlaXpirit quit (Quit: Quit Konversation)
06:42:00*boydgreenfield joined #nimrod
07:07:28*io2 joined #nimrod
07:17:48*filwit joined #nimrod
07:53:55*Trustable joined #nimrod
08:19:01*boydgreenfield quit (Quit: boydgreenfield)
08:37:45*endou quit (Ping timeout: 244 seconds)
08:56:00*dirkk0 joined #nimrod
09:07:58*BlaXpirit joined #nimrod
09:15:23*Boscop joined #nimrod
09:15:23*Boscop quit (Changing host)
09:15:23*Boscop joined #nimrod
09:15:59*Boscop__ quit (Ping timeout: 244 seconds)
09:16:50*Boscop_ joined #nimrod
09:19:58*hsuh quit (Ping timeout: 258 seconds)
09:20:44*Boscop quit (Ping timeout: 258 seconds)
09:27:06*hsuh joined #nimrod
09:37:02*clone1018 quit (Ping timeout: 272 seconds)
09:37:54*clone1018 joined #nimrod
09:46:50*filwit quit (Quit: Leaving)
10:16:56*comex quit (Ping timeout: 272 seconds)
10:18:32*comex joined #nimrod
10:20:44*Boscop__ joined #nimrod
10:24:17*Boscop_ quit (Ping timeout: 272 seconds)
10:25:24*edayo joined #nimrod
10:31:09*edayo_ joined #nimrod
10:32:08*dirkk0 quit (Quit: This computer has gone to sleep)
10:34:36*edayo quit (Ping timeout: 250 seconds)
10:36:26*flaviu1 quit (Remote host closed the connection)
11:21:25*rpag quit (Ping timeout: 260 seconds)
11:29:45*BitPuffin joined #nimrod
11:37:02*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
11:52:03*filwit joined #nimrod
11:52:55*dirkk0 joined #nimrod
11:56:23*dirkk0 quit (Client Quit)
12:09:31*xcombelle joined #nimrod
12:11:00*dirkk0 joined #nimrod
12:13:40*dirkk_ joined #nimrod
12:13:40*dirkk0 quit (Read error: Connection reset by peer)
12:14:17*dirkk_ quit (Client Quit)
12:14:35*dirkk0 joined #nimrod
12:57:37*darkf quit (Quit: Leaving)
12:57:46*filwit quit (Quit: Leaving)
13:14:41*prosper_ joined #nimrod
13:27:36*untitaker quit (Ping timeout: 246 seconds)
13:33:32*untitaker joined #nimrod
14:02:29*perturbation joined #nimrod
14:04:20*prosper_ quit (Ping timeout: 250 seconds)
14:06:23*def- quit (Ping timeout: 240 seconds)
14:10:49*def- joined #nimrod
14:15:37*def- quit (Ping timeout: 245 seconds)
14:19:56*xcombelle quit (Quit: Quitte)
14:20:19*def- joined #nimrod
14:21:39*edayo_ quit (Read error: Connection reset by peer)
14:23:10*edayo_ joined #nimrod
14:37:34*prosper_ joined #nimrod
14:39:06*[CBR]Unspoken1 quit (Read error: Connection reset by peer)
14:42:47*wkoch joined #nimrod
14:44:00*[CBR]Unspoken joined #nimrod
14:45:08*bogen quit (Quit: Leaving.)
14:51:57*prosper_ quit (Ping timeout: 245 seconds)
14:57:58*boydgreenfield joined #nimrod
15:09:43*Orson joined #nimrod
15:10:05*Orson is now known as Orson1984
15:13:00*Orson1984 left #nimrod (#nimrod)
15:36:50*edayo_ quit (Quit: Leaving)
15:46:31*boydgreenfield quit (Quit: boydgreenfield)
15:59:44*shodan45 quit (Quit: Konversation terminated!)
16:01:36*brson joined #nimrod
16:15:12*z3744617276842 joined #nimrod
16:15:24*wkoch1 joined #nimrod
16:15:24*hsuh_ joined #nimrod
16:16:41*boydgreenfield joined #nimrod
16:17:34*cyraxjoe joined #nimrod
16:17:43*wkoch quit (Ping timeout: 244 seconds)
16:17:43*hsuh quit (Ping timeout: 244 seconds)
16:17:43*z3744614276842 quit (Ping timeout: 244 seconds)
16:17:44*untitaker quit (Ping timeout: 244 seconds)
16:17:44*johnsoft quit (Ping timeout: 244 seconds)
16:17:44*MightyJoe quit (Ping timeout: 244 seconds)
16:17:45*betawaffle quit (Ping timeout: 244 seconds)
16:17:45*Jesin quit (Ping timeout: 244 seconds)
16:18:37*johnsoft joined #nimrod
16:18:44*untitaker joined #nimrod
16:19:03*betawaffle joined #nimrod
16:19:38*Jesin joined #nimrod
16:20:21*prosper_ joined #nimrod
16:21:56*boydgreenfield quit (Quit: boydgreenfield)
16:33:05*dirkk0 quit (Quit: This computer has gone to sleep)
16:35:22*prosper_ quit (Remote host closed the connection)
16:37:20*Jesin quit (Ping timeout: 272 seconds)
16:40:25*xcombelle joined #nimrod
16:40:40*Jesin joined #nimrod
16:41:08*Matthias247 joined #nimrod
16:42:37*boydgreenfield joined #nimrod
16:48:06*johnsoft quit (Ping timeout: 272 seconds)
16:48:22*johnsoft joined #nimrod
16:51:12*prosper_ joined #nimrod
16:51:40*Joe_knock joined #nimrod
16:57:36*prosper_ quit (Ping timeout: 246 seconds)
17:10:14*q66[lap] quit (Ping timeout: 250 seconds)
17:11:33*gverilla joined #nimrod
17:12:04*q66 joined #nimrod
17:13:24*q66[lap] joined #nimrod
17:14:47*gverilla quit (Client Quit)
17:17:23*dirkk0 joined #nimrod
17:18:13*willwillson joined #nimrod
17:23:36*kuzy000 joined #nimrod
17:31:17*EXetoC joined #nimrod
17:51:15*noam_ joined #nimrod
17:51:52*noam quit (Ping timeout: 245 seconds)
17:57:00*prosper_ joined #nimrod
17:58:01*prosper__ joined #nimrod
18:01:44*prosper_ quit (Ping timeout: 260 seconds)
18:12:10*io2 joined #nimrod
18:23:07*Mat3 joined #nimrod
18:23:11Mat3hello
18:24:18perturbationhello Mat3
18:28:50*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
18:31:04Mat3hi perturbation
18:38:45*filwit joined #nimrod
18:41:39*Matthias247 quit (Read error: Connection reset by peer)
18:42:13*Matthias247 joined #nimrod
18:42:22*filwit quit (Client Quit)
18:50:33*prosper__ quit (Remote host closed the connection)
18:50:34*wkoch1 quit (Ping timeout: 272 seconds)
18:51:17*wkoch joined #nimrod
18:54:17*prosper_ joined #nimrod
18:58:05*filwit joined #nimrod
19:05:48*wkoch1 joined #nimrod
19:06:11*wkoch quit (Ping timeout: 272 seconds)
19:06:16*wkoch1 quit (Client Quit)
19:07:54*perturbation quit (Quit: Leaving)
19:09:57*johnsoft quit (Ping timeout: 260 seconds)
19:10:07*johnsoft joined #nimrod
19:18:44*dirkk0 quit (Quit: Leaving)
19:32:30*io2 joined #nimrod
19:33:53Mat3have someone here experiences with the SDL2 bindings from Fowl ?
19:35:09Araqhi Mat3
19:35:22filwitMat3, I'm still using my own SDL2 bindings, but they're based off fowls.. what's your problem?
19:35:37filwitoh Araq, you are around :)
19:35:44Araqfinally
19:36:02Mat3hi Araq
19:36:02filwityeah sorry man, been a busy 2 1/2 weeks for me
19:37:29Mat3filwit: I can compile my test code but the Nimrod compiler can't link to the shared library because the libraries can't be found (some C test sources compile fine however)
19:37:48AraqMat3: oh that should be easily solved
19:38:12Araquse --dynlibOverride:sdl2 and then --passL with whatever you do for the C code
19:39:05filwitsounds like fowl's SDL2 lib needs to be patched, or your SDL2 install is funky
19:39:25Mat3Araq: thanks
19:40:18Mat3filwit: I hope to not need patching the wrapper code
19:42:47AraqI'm writing docs for the new concurrrency system ...
19:43:01Araqapart from that it's pretty much done
19:43:24Araqand that means Nim itself is almost feature complete and so I can focus on bugs ;-)
19:43:35Mat3good news
19:46:05filwitAraq: nice. I just responded to a /r/nimrod question about concurrency in Nim: http://www.reddit.com/r/nimrod/comments/2i0l1i/nimrod_and_opemmp/
19:46:38filwitAraq: you might want to double-check what I said or post a link to the any ThreadPool docs you might have.
19:47:14Araqmeh I'm pissed off by people that assume reddit is some generic website to get information
19:47:34filwitlol
19:47:37Araqif people want to talk to me, they know where to find me
19:48:34*boydgreenfield quit (Quit: boydgreenfield)
19:49:52Mat3I think Reddit can help increasing Nim's popularity
19:51:10Mat3someone should post a commentary about how to use ICQ
19:51:27*noam_ is now known as noam
19:51:44Mat3(and how a programming language differs from an operating system)
19:52:51Araqhuh? is ICQ still alive?
19:53:48Mat3somehat
19:53:52Mat3^somewhat
19:54:28Mat3as we can see...
19:58:31Araqwell this is IRC
19:58:48Araq;-)
20:00:31Mat3no, I mean the *ICQ* protocol
20:00:51*Ven joined #nimrod
20:01:32Mat3(misleading translation), an introduction to IRC would probably be helpful too I think
20:02:47Mat3is the current Nimrod version usable under Max OS X ?
20:03:23Araqsure Jehan uses nothing else afaict
20:03:39Mat3fine
20:05:26Mat3I convinced the author of Retro to give it a try. Probably he decide to work on a Nimrod port
20:05:31filwiti tried Nim on Mac OSX 10.9 (Intel), 10.6 (PPC) a little while ago. Worked good (simple test)
20:06:12*prosper_ quit (Remote host closed the connection)
20:06:52*flaviu1 joined #nimrod
20:07:11AraqMat3: ok, but we don't need a port? it's already ported
20:07:18Araqhi flaviu1
20:07:31flaviu1hey!
20:08:55Araqdo you feel to write lengthy explanations of how an enforced compile-time lock order works and why it is a good idea?
20:09:02Araq*feel like writing
20:09:59flaviu1Sure, if I knew what you were talking about. The new concurrency system?
20:11:17*Majestik0ne joined #nimrod
20:12:11Araqyeah
20:12:15Araqhi Majestik0ne welcome
20:12:16Mat3Araq: I mean he possibly think about porting his Retro sources from C to Nim
20:12:47Araqohhh nice
20:14:19*BlaXpirit quit (Quit: Quit Konversation)
20:16:01*BlaXpirit joined #nimrod
20:16:50*skyfex quit (Quit: Computer has gone to sleep.)
20:17:27*skyfex joined #nimrod
20:18:03Araqflaviu1: I'm preparing the first version of the docs. and perhaps you can it enhance it then
20:21:58*zahary joined #nimrod
20:22:06EXetoCzahary: sup
20:26:55*Majestik0ne quit ()
20:27:40*Jehan_ joined #nimrod
20:29:48*boydgreenfield joined #nimrod
20:30:22*xcombelle quit (Quit: Quitte)
20:32:31Jehan_Mat3: I'm currently using Nim (bigbreak) for work, with the caveat that I make only very little use of the libraries other than the basic stuff.
20:32:48Jehan_That's on OS X 10.8.5.
20:37:07Mat3hmm, should work for him then
20:38:03Mat3falviul: I assume your SDL wrapper version is more complete than Fowl's ?
20:39:24Mat3flaviu1: I assume your SDL wrapper version is more complete than Fowl's ?
20:40:00*untitaker quit (Quit: ZNC - http://znc.in)
20:41:16*untitaker joined #nimrod
20:47:39AraqJehan_: btw I considered parametric modules but decided it's enough to do:
20:47:59Araqwhen not declared(foo): proc foo = ...
20:48:04Araqand then you can do:
20:48:10Araqproc foo =
20:48:23Araqinclude implementation
20:49:22Araqthis is called "module injection by include instead of import" ... :-)
20:49:38Jehan_Hmm, how can you put an include inside a proc?
20:49:52Araqnah, not what I meant
20:50:04Araqproc foo = ... # override implementation
20:50:08Jehan_Oh, I see.
20:50:10Jehan_Yes.
20:50:17flaviu1Mat3: I don't actually have an SDL wrapper
20:50:36AraqMat3: I think you mean filwit
20:50:36Jehan_You don't even have to do the "if declared" unless you want to be able to compile the module by itself.
20:50:47Jehan_As I explained in my post.
20:50:50filwitMat3: if you meant my SDL2 wrapper... it's a bit more complete, but not much.
20:51:17Araqhrm I missed that part
20:51:22Jehan_I honestly don't know if it's worth having a separate syntax, since you can already do what you need as long as you're willing to have two-line modules for each instantiation.
20:52:14Mat3filwit: is it --cs:partial save (the current SDL2 sources on Babel are not) ?
20:52:51AraqJehan_: ok, but you use .basics and .implementation, I like my solution better
20:53:11filwitMat3: yes, but getting it there is very easy
20:53:13Araqbecause the module explicitly marks what can be overriden
20:53:22Jehan_Araq: Well, I don't think how that can be avoided.
20:53:46Jehan_The import of btree.basics is to use the enum, not to override it.
20:53:47filwitMat3: i think it boils down too fixing a couple of 'Byte' -> 'byte' names is all
20:54:24Mat3yes, anyhow where can I found your sources ?
20:54:25Jehan_Unless there's a way to do a forward declaration of types/enums/constants that I don't know of.
20:54:41Araqnah, there isn't, you're right
20:54:49Araqbut you can do:
20:55:16Araqwhen fileExists("overriden.nim"): include overriden
20:55:30Araqwith the most recent VM updates
20:55:47*boydgreenfield quit (Quit: boydgreenfield)
20:55:55filwitMat3: i can upload it for you, but keep in mind mine is also a stripped down version (it only has the OpenGL parts I need + a few SLD_img procs)
20:56:11Jehan_Yeah, but that works the other way around from what I want to do.
20:56:27Jehan_Basically, I'm using include to implement ML-functor-like semantics.
20:56:39filwitMat3: so you want to use the built-in renderer, or even sound, mine isn't ready yet.
20:56:53Jehan_Which means that I parameterize a module by an arbitrary other module (that defines certain things).
20:57:05filwitMat3: still want me to upload?
20:57:15Jehan_The "fileExists()" thing allows me to only use a specific module as a parameter.
20:57:39Araqyeah, it's different
20:57:57filwitMat3: ps.. I've also changed the names of things (removed the 'sdl' prefix)
20:58:07*BitPuffin quit (Ping timeout: 245 seconds)
21:00:25filwitbrb
21:06:03Jehan_Hmm, can one write files at compile time? Other than through staticExec() with an external program?
21:06:25*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:06:34Mat3hmm, no but thanks
21:06:40AraqJehan_: not yet
21:07:04Jehan_Araq: No pressure, I was just suddenly getting curious.
21:07:14Jehan_I.e. whether I could generate a file and then import it.
21:09:08willwillsonyou know in c2nims nimrod.cfg, it sets: path: "$nimrod/compiler", how is it supposed to find the src of compiler?
21:09:47willwillsonat the moment I just hardcoded it, but was wondering if there was a better way...
21:10:56*boydgreenfield joined #nimrod
21:12:27*jagillion joined #nimrod
21:15:00Araqwillwillson: well the compiler knows how to expand $nimrod
21:15:10Araqwhat's the problem?
21:15:21willwillsonI'm trying to compile with big break
21:15:33willwillsonI've done the case fixes
21:15:51willwillsonbut I have to hardcode the path to the compiler
21:15:59willwillsoncompiler src that is
21:17:09willwillsonotherwise, you get: c2nim.nim(11, 33) Error: cannot open 'llstream'
21:20:25willwillsonbasically, I was wondering, how is it supposed to function as a babel package :D
21:20:54Joe_knockHi there, is dom96 around?
21:24:53*kuzy000 quit (Ping timeout: 240 seconds)
21:37:15*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
21:37:21Araqwillwillson: ok, will look into it
21:37:42AraqJoe_knock: no.
21:38:15willwillsonAraq: thanks
21:40:50*jagillion quit (Quit: jagillion)
21:42:47*BlaXpirit quit (Quit: Quit Konversation)
21:43:01Joe_knockAraq: Based on dom96s web framework, is there any modules/libraries that provide for building REST APIs?
21:44:00AraqJoe_knock: well we have a json module and asyncronous sockets. what more do you have in mind?
21:45:23Joe_knockAraq: I'm looking to use Nimrod as the backend for a project I have in mind. I need it to have a REST API so I can run the app on devices/web.
21:48:44AraqJoe_knock: yes well. I don't know what you're missing. The API has to be defined by you
21:48:53*TingPing joined #nimrod
21:48:59Araqhi TingPing welcome
21:49:49Joe_knockAraq: Maybe my understanding is convulated, but I am looking towards a library/module that simplifies the CRUD situation.
21:50:27*Boscop__ is now known as Boscop
21:50:35AraqJoe_knock: maybe you're looking for marshal.nim
21:51:06*Boscop quit (Changing host)
21:51:06*Boscop joined #nimrod
21:56:06Joe_knockAraq: Link to that?
21:57:53Araqhttp://nimrod-lang.org/marshal.html
21:59:48*fowl joined #nimrod
22:00:10TingPingAraq, personal greeting, how lovely :P
22:03:29Varriountmeep
22:06:14AraqJehan_: (locks: N) <: (locks: M) iff (M < N), right?
22:06:28AraqI always get these definitions wrong :P
22:06:56Araqhrm should be M <= N
22:07:19TingPingis babel an official project?
22:07:25Araqyes
22:07:35Araqhi Varriount ... what's up?
22:09:05Joe_knockAraq: Thanks, but I don't think marshall is it. I think working through dom96s web framework might help. Maybe it is similar to flask with routes.
22:09:23VarriountAraq: I *think* I have a fix for that prototype bug.
22:09:33Jehan_Araq: Not sure without context, I'm afraid.
22:09:45Araqwell we have:
22:09:56Araqproc foo() {.locks: 0.}
22:10:04Araqif it doesn't acquire any lock
22:10:12Araqand in general the number is the lock level
22:10:29Araqand now there is a natural subtyping rule for proc type compatibility
22:10:53Araqand there is a subtype relation if M <= N
22:11:01Araqor the other way round :P
22:11:32Jehan_Assuming numbers go up with nesting level, yeah.
22:11:39Jehan_Hmm, wait.
22:12:16Araqthe numbers go up, but you can acquire 2 when you already acquired 3, but not the other way round
22:12:47AraqIMHO that is the natural order when we assume that allocMem requires lock level 1
22:12:48Jehan_Hmm.
22:12:48fowlis this channel changing to #nim ?
22:12:57Araqfowl: yeah
22:13:22Jehan_I'm too tired to think straight, second.
22:13:28TingPingis there a reason http://nimrod-lang.org/download/nimrod_0.9.4.zip does not exist but 0.9.2 does?
22:13:34flaviu1Is it possible to have two GCs in a single program?
22:13:49flaviu1And decide per-object which to use?
22:13:59Jehan_flaviu1: If the GCs are designed for it, in principle, yes.
22:14:08flaviu1I know, but in Nim
22:14:18Jehan_It also depends on how references interact.
22:14:51Jehan_In Nim, in principle, as long as the heaps are kept separate, I'd say (you'd still have to write code to have both present at the same time).
22:15:05Araqflaviu1: currently that is not possible
22:15:20VarriountAraq: Pushed a fix for that showstopper bug.
22:15:29AraqVarriount: ok great
22:16:30flaviu1Ok, shame though. You could use atomic refrence counting for multi-heap stuff, and something else for single-heap objects
22:17:43Jehan_Araq: I'm not sure you can construct a subtype relation there. That's because a procedure type may assume both at least lock level N, but also at most lock level N.
22:18:09Jehan_Depending on whether as caller or callee, for example.
22:18:18AraqJehan_: hrm that is not how it's currently designed
22:18:39Araqcurrently locks: M means locks *any* level up to M
22:18:44Jehan_Not sure how it's designed, I was making an (educated|wild-ass) guess as to what's intended.
22:19:11Joe_knockAraq: I am currently using v0.94 of nim. Is this the stable version?
22:19:32AraqJoe_knock: yes
22:19:54Araqflaviu1: no, this doesn't really work for lots of reasons
22:20:01Joe_knockawesome, thanks!
22:20:23AraqVarriount: your patch looks correct. applying.
22:20:23Jehan_Hmm, so basically it's locks: 0..M and you're looking at a subset relation to infer the subtype relation.
22:20:37Jehan_In this case, my concern would be whether that's too restrictive.
22:20:52Jehan_And how co-/contravariance issues play into it.
22:21:02Araqwell even if it would be locks: a..b this still would define a natural subtyping rule
22:21:21Araqwhen c..d is a subset of a..b
22:21:26Jehan_yeah.
22:22:29Araqwell conceptually allocShared needs a lock
22:22:40flaviu1Araq: Can you elaborate? I don't see why it wouldn't. Of course, you'd have to allocate and delete everything inside the object with the same system, but that's it
22:22:52Araqand this is very low level, so it should get lock level 1
22:23:02Mat3ciao
22:23:12Araqand so locks: 4..8 means it cannot even call allocShared
22:23:21*Mat3 quit (Quit: Verlassend)
22:23:27Araqso ... what's the point of a range?
22:24:14Jehan_Example: Code with lock level N calls a procvar which calls a code with lock level M. What is a legal lock-level declaration for the procvar?
22:25:33Araqlock level M
22:25:47Araqor anything above M
22:26:37Araqwhether that it compatible with N depends
22:26:47Araqon the concrete values
22:27:22Jehan_allocShared() and such is where you realize that you don't have to have a total order, but a partial order is just fine, and assign allocShared()'s lock a minimal element. :)
22:27:44Araqflaviu1: it depends on the details, but you don't really have a chance but to increase the code-size of the write barrier
22:28:17Jehan_The problem is now when you have a procvar with lock level M, what procs can you assign to it?
22:28:21Araqno matter what you do, you almost always end up with a slower write barrier and this is critical, flaviu1
22:28:59Jehan_if you can assign anything <= M, then you run into a problem with the code that the proccvar calls.
22:29:19Jehan_If you can assign anything > M, then also >N, and you run into problems with the code that calls the procvar.
22:29:42Araqwell it's pretty obvious isn't it?
22:29:46Jehan_Hence, subtyping for purposes of assignment to procvars would have to mean equality of lock level.
22:30:15Araqthe procvar promises to lock up to level M, so anything that locks less than that is fine?
22:30:29Araq*less than or equal to
22:30:34Jehan_Umm, what do you mean by "locks up to level M"?
22:31:07Araqwell the procvar is allowed to lock level M and any level below
22:31:19Araqthat is what locks: M means
22:31:49Jehan_And the proc it calls can also do that. So with M = 2 either the procvar locks 1, the called proc locks 2 or the opposite is both possible.
22:32:12Jehan_So, deadlock if one thread does one and one does the other.
22:32:44Araqhrm
22:33:24Jehan_I'll have to dig up Boyapati's paper again because I can't remember how he solved this.
22:33:40Jehan_If he did at all. :)
22:33:42Araqok, I'm still not sure my solution is wrong :-)
22:34:06Araqbecause for nested locking I really require M strictly greater than N
22:34:26Jehan_But: "can lock anything below X" can't work in general, I think.
22:35:56Araqwell the subtype relation is not the relation that you use for the actual nesting
22:36:51flaviu1tbh, this all sounds far too complicated
22:37:56Jehan_flaviu1: Heh. :)
22:38:10AraqI don't think it's complicated in practice
22:38:29NimBotAraq/Nimrod devel 55c78af Clay Sweetser [+0 ±1 -0]: Fixes #1529
22:38:29NimBotAraq/Nimrod devel 2154906 Andreas Rumpf [+0 ±1 -0]: Merge pull request #1549 from Varriount/fix-1529... 2 more lines
22:38:48AraqJehan_: can you gist an example please?
22:39:10Jehan_Araq: Can it wait until tomorrow? I've had a long day and need sleep soonish.
22:39:29Araqok sure
22:39:36*jagillion joined #nimrod
22:40:00AraqI consider your remark invalid until you come up with an example that breaks my system :P
22:41:10Jehan_Araq: Maybe. Maybe I'm also misunderstanding what you're trying to say.
22:43:55Araqflaviu1: the system can be simplified very easily but the more complete solution is worth a try, IMO
22:44:57flaviu1ok
22:45:25*Jesin quit (Quit: Leaving)
22:45:45Araqunless Jehan_ is right ... then we really shouldn't do it ...
22:45:48*nande joined #nimrod
22:49:10Jehan_Araq: I'm thinking something like this: https://gist.github.com/rbehrends/b5e02be8f68aa27823e4
22:49:21*Jesin joined #nimrod
22:49:26Jehan_I'm not sure if I've got the order right, if necessary, just flip them around.
22:49:51Jehan_And I don't have any actual lock statements in there, since I don't know how they currently work.
22:50:39*Trustable quit (Quit: Leaving)
22:51:36Araqyes ok, but I don't see the problem
22:51:43Araqmiddle = f1 is allowed
22:51:48Araqmiddle = f2 is not
22:52:19Jehan_If middle = f1 is allowed, then both bottom and f1 lock #1.
22:52:42Araqcorrect
22:53:09Jehan_This looks like a deadlock situation to me.
22:53:34Araqhow so? there is no nested locking whatsoever
22:53:41Jehan_Have two different locks at level 1.
22:53:55Jehan_One thread locks them in one order, one in the opposite order.
22:53:57Jehan_Deadlock.
22:54:56Araqcannot happen
22:55:21Araqyou cannot lock bottom and f1 in any nested way
22:55:30Jehan_Make f1 = if threadno == 1: lock(A): bottom() else: lock(B): bottom() and bottom = if threadno == 1: lock(B) else: lock(A)
22:55:39Jehan_with both A and B having lock level 1.
22:56:20Jehan_Thread 1 will acquire A then B, thread 2 will acquire B then A.
22:56:45AraqI need the indentations
22:57:01Joe_knockwhere is the gtk2 github files for nim? I can't find them :(
22:57:03Jehan_Let me edit.
22:57:28fowlJoe_knock, its owned by nimrod-code organization, nimrod-code/gtk2
22:57:40flaviu1Araq: nimrod pretty?
22:57:40Joe_knockfowl: thanks!
22:58:20Jehan_Updated.
22:59:09Jehan_Made up syntax, lock(L): … means: do "…" while lock L is being held.
22:59:18Araqyeah ofc
22:59:42Araqok here is the thing:
22:59:43TingPingwhy does everything seem to install to random dirs, like `koch install` in the main repo shoves a random /nimrod suffix at the end that i have to patch out, `babel install` installs to ~/.babel with no obvious way to change it?
23:00:23Araqin 'f1' when you lock (A) or (B), you're not allowed to call 'bottom', Jehan_
23:00:45Araqbecause bottom is of the same lock level
23:01:04*askatasuna quit (Ping timeout: 258 seconds)
23:01:08Joe_knockWhat happens when you have a package installed, then run babel again? Is that package re-installed/overwritten?
23:01:27Jehan_What if I pass bottom in as a procvar/closure argument?
23:01:50Araqwell procvars are annotated with the locklevel too
23:02:15filwitJoe_knock, if you `babel install ...` then it's overwritten I believe (in my experience)
23:02:45Jehan_Yeah, I know.
23:02:58Joe_knockSo babel is a package manager that runs global...
23:03:02Jehan_As I said, I really need to look at it with an untired mind.
23:03:15*Joe_knock note to self, babel needs a venv-type thing
23:03:43Araqok, good, so it's not obviously wrong :-)
23:03:59Jehan_Araq: Heh. :)
23:04:09Jehan_Well, I was initially inclined to agree with you.
23:04:27Jehan_But I've been up since 4 am, so … not thinking straight.
23:04:52Jehan_Joe_knock: Yeah, agreed. I need to get around to wrap up my PR for babel.
23:06:07flaviu1Someone should kick Jehan_ so he can get some sleep
23:06:14Joe_knockUnless... There is a tool that installs multiple versions of nim, with their own babels.
23:06:18Jehan_Leaving now. Good night. :)
23:06:24Araqgood night
23:06:26*Jehan_ quit (Quit: Leaving)
23:06:28Joe_knockgood night.
23:07:17AraqJoe_knock: for me babel doesn't require sudo if that's what you mean
23:07:54AraqTingPing: not sure what you mean, but speading everything over everywhere is Unix's way of doing things?
23:07:58Joe_knockAraq: which part are you referring to?
23:08:40AraqJoe_knock: it's already .babel in your home directory. what's the purpose ... oh ok, never mind
23:08:42TingPingAraq, /usr/local/nimrod/bin/nimrod is not the unix way, it should be /usr/local/bin/nimrod
23:09:35AraqTingPing: I'm quite sure that's a regression then
23:09:37*Matthias247 quit (Read error: Connection reset by peer)
23:09:58TingPingbabel installing to $HOME/.babel is annoying, but i can understand some use cases for it, at least make it configurable
23:10:09Joe_knockAraq: Stability of the dependencies/nim itself. If I am on 0.94, running v0.2 some-lib, I don't want to break it if I decide to use babel again for another project which requires v0.3 some-lib
23:10:09Araqiirc it already is
23:10:34flaviu1TingPing: Not using your package manager is also not the ideal way of installing stuff
23:10:43TingPingflaviu1, i am making packages..
23:11:08flaviu1TingPing: Ah, ok
23:11:23TingPingwhich is why broken urls, strange build systems, and wrong paths are extra annoying :P
23:11:40flaviu1TingPing: Is https://aur.archlinux.org/packages/ni/nimrod-git/PKGBUILD helpful?
23:12:30AraqTingPing: Nim fits right into the open source world :P
23:12:43TingPingwell they took the approach of moving things after install, i patched install.sh directly
23:12:46*bogen joined #nimrod
23:12:53TingPinganyway its finished, id just hope next release is more sane :P
23:13:19TingPingthe fact install.sh is generated is also strange, i dont see where it comes from either like any template
23:14:00Araqtools/niminst/install.tmpl
23:14:07Joe_knockInstead of making babel configurable with a venv, perhaps a wrapper for installing nims using nim would be a better way to do things.
23:14:29*boydgreenfield quit (Quit: boydgreenfield)
23:14:43TingPingalso csources should allow binDir to be configurable
23:15:05TingPingthough just having a standard release zip for the latest version with it included would fix that
23:15:05AraqTingPing: can you please make PRs?
23:15:12TingPingyea ill look into it
23:18:24Araqhrm
23:18:28Araq cp bin/nimrod $bindir/nimrod
23:18:28TingPingoh it expects /bin on the end of the prefix
23:18:33TingPingthats why it does it
23:19:02Araqyeah the script looks fine to me
23:19:13TingPingprefix should never include /bin
23:19:18TingPingbut once you know that it works
23:19:39Araqthere is no prefix here
23:19:52Araqthe --help is clear about it
23:20:11TingPingkoch install /usr is wrong, kock install /usr/bin is right
23:21:15Araqkoch install's help could be better, yes
23:21:33TingPingi would suggest it follow all other build systems
23:21:34Araqbut koch install is stupid to begin with
23:22:07Araqso what build system deals with the massive recursive dependency also known as bootstrapping?
23:22:21Araqcan't think of any, so I wrote my own tool
23:22:34flaviu1Araq: I think you misread
23:22:35TingPingi just mean the definition of 'prefix'
23:22:42flaviu1yep ^
23:22:59TingPingas you can see arch misunderstood it as well
23:23:06TingPingyou have to read the source to realize what it does
23:23:22Araqthe help is clear enough IMO
23:23:33Araq'prefix' is not a concept that we use
23:23:44Araqand when you look at the code
23:24:02TingPingpackagers do not look at code, they understand what a prefix is though
23:24:05Araqyou'll see 'prefix' is not a concept at all anyway
23:25:02Joe_knockI made my first PR to nim :D
23:25:09TingPingthe website uses `koch install [dir]`, i read this as prefix even if it was not intended as such
23:25:43TingPingyou could say [bindir]
23:26:04Araqok, that's a good improvement
23:27:14AraqI think if we change it now to install.sh prefix the other packagers will be pissed
23:27:31TingPingit would not be rocket science to support both
23:27:41Joe_knockyikes, this gtk code is confusing as shit
23:27:58AraqJoe_knock: we have examples somewhere
23:28:21Joe_knockAraq: I am working through the examples to try to simplify them.
23:28:36AraqTingPing: ok, how would you support both?
23:29:26TingPingok, well if somebody does depend on the completely strange behavior of doing $prefix/$proj/bin then you could not support everything
23:29:50Araqbtw this bullshit should have been replaced by Gobo Linux's way 2 decades ago
23:29:52TingPingbut if you just want to support $bindir or $prefix it would be simple by ignoring /bin
23:32:10Araqyeah, sounds good enough, TingPing
23:34:46Araqplease make it happen
23:36:02NimBotAraq/Nimrod devel f99c40f Reimer Behrends [+0 ±4 -0]: Improve setjmp()/longjmp() performance.... 9 more lines
23:36:02NimBotAraq/Nimrod devel cb6441e Reimer Behrends [+0 ±1 -0]: Use _setjmp()/_longjmp() only on BSD-like systems for now.
23:36:02NimBotAraq/Nimrod devel c17c8e9 Andreas Rumpf [+0 ±4 -0]: Merge pull request #1545 from rbehrends/setjmp-perf... 2 more lines
23:38:11TingPingand on another 'goes against everything else' you have the arg syntax of -d:stuff
23:38:30Araqyeah but for good reasons
23:38:55AraqI usually improve what I see
23:39:02AraqI call it "progress"
23:39:26TingPingsounds scary, lets just do what we did in the 60, k
23:39:31TingPing60s*
23:39:36Araq;-)
23:39:41flaviu1TingPing: Be glad he didn't decide to use windows syntax ;)
23:40:16TingPingflaviu1, with spaces everywhere "Debug Build"
23:40:17Joe_knockAraq: So currently there exists no virtual environment workaround for Nim, yes?
23:41:26flaviu1Does babel use $XDG_CONFIG_HOME?
23:42:11AraqJoe_knock: not sure what you mean, I can have 2 Nim installations already
23:42:31flaviu1Joe_knock: You have to switch your path manually
23:43:17Joe_knockAraq: So I can have any number of nimrods living on my system manually?
23:43:36flaviu1Joe_knock: Sure. You use whatever's in your PATH
23:45:10Joe_knockflaviu1: Where (again) does the symlink for nimrod live on ubuntu/debian?
23:47:09Joe_knockokay, found it /usr/bin/
23:48:23Joe_knockflaviu1: So I must change the link in /usr/bin/ each time manually for different nimrods?
23:49:13flaviu1Joe_knock: That, or remove the package manager version and do set PATH=/new/bin/path:$PATH to whichever local installation you want
23:50:02Joe_knockflaviu1: But how do I then deal with .babel living in my HOME directory (as a global)?
23:50:32flaviu1No idea about that part, sorry. Patching it should be possible though
23:50:54Araq--babelPath can be set
23:51:26Joe_knockflaviu1: That is the part I am trying to figure out how to work-around with.
23:52:13Joe_knockAraq: I was thinking of something like this: https://github.com/pybank/pythonbrew
23:52:17*francisl joined #nimrod
23:55:30*xenagi joined #nimrod
23:55:39*darkf joined #nimrod