<< 03-01-2014 >>

00:00:15AraqcreateFoo operates on fresh data, no need for any locks, but "protected" makes us acquire a lock
00:01:26JehanIIWell, yes. The problem here is that result could be passed to another thread before the function returns.
00:01:26JehanIIIf you can guarantee that doesn't happen, you can optimize the lock away.
00:01:56Araqhmm
00:02:07JehanIIThe bigger problem is that initialization in any imperative language is a bit of a mess.
00:02:37Araqjup :D
00:03:37Araqwell createFoo should operate on "shared" and then we need some mechanism to bless it to "protected"
00:04:41JehanIISo, shared ptrs point to the shared heap, but cannot be transmitted to a different thread?
00:05:19Araqyes, they need to be converted to protected first
00:05:37JehanIIWhat it comes down to is that in order for that to be safe, a shared ptr must not be aliased.
00:06:23Araqtrue.
00:06:23*eigenlicht quit (Ping timeout: 272 seconds)
00:06:59Araqbut we can try to count references in debug mode and ensure it's not aliased at runtime
00:07:13Araqor give it some move semantics
00:07:13OrionPKwheres dom
00:07:25gradhadoes a tyBool -> string proc exist?
00:07:40Araqgradha: typeToString
00:08:20gradhacool
00:09:49AraqJehanII: obviously "cast" is the cheap way out, but I think we need something better
00:10:02JehanIIYeah, I'd agree.
00:11:22*OrionPK quit (Remote host closed the connection)
00:11:33Araqbtw we may need a different term for "protected", what's common in the literature?
00:11:43JehanIIOne alternative would be to get clever with locks.
00:12:03JehanIIUse a simple, cheap lock (basically just an int) while it's shared, make it a real one when it's promoted.
00:12:34JehanIII'm not sure there's a universally accepted term.
00:13:03JehanIII think I've seen shared, guarded, separate at least.
00:14:16JehanIIsynchronized, too.
00:14:52*JehanII left #nimrod ("Leaving")
00:15:05*JehanII joined #nimrod
00:15:26JehanIISigh, OS X needs focus-follows-mouse.
00:16:47Araq"guarded" seems very good
00:17:15Araqmaybe the keyword should even be "guard" and not "lock" then
00:17:27gradhagood night, honey badgers
00:17:27*gradha quit (Quit: bbl, need to watch http://www.youtube.com/watch?v=dEf4PJZXBxA again)
00:17:33JehanIIGuarded statements are traditionally something different, though.
00:17:52JehanIIatomic would be an alternative.
00:18:08Araqoh yeah
00:18:12Araq"atomic" smells like STM
00:18:48Araqanyway
00:18:48*OrionPK joined #nimrod
00:18:53AraqI don't understand your "be clever with locks" proposal
00:19:10JehanIIOh.
00:19:28OrionPKhm
00:19:29JehanIIOkay, basically make locks a sum type, int | mutex.
00:19:41JehanIIIt starts out as an int, 0 for unlocked, 1 for locked.
00:20:03JehanIIThat makes lock and unlock operations negligibly cheap.
00:20:49JehanIIAs soon as you promote it to protected, you replace it with a pointer to a proper mutex/rwlock/etc.
00:20:52JehanIIYou can safely do it, because up to this point, no other thread has access to it.
00:21:10JehanIIHmm, hang on, we'd still need to encode the owning thread in it.
00:21:31JehanIINo, never mind, other threads can't see it.
00:21:33JehanIIAfter this, you can do a normal lock/unlock.
00:21:39Araqwhy do we need the cheap lock in the first place?
00:22:07JehanIISo that we can auto-lock result during object creation without incurring the overhead for a full lock.
00:22:52JehanIIHmm, hang on, I think I outsmarted myself there.
00:22:52Araqbut why, result is not yet shared
00:23:04Araqwell its type is "shared" but it can't been seen by other threads yet
00:23:18JehanIIYeah, I was actually thinking about the case where we are starting out with a protected ptr right away.
00:23:55JehanIIYeah, that won't help.
00:24:12AraqI think the transition from shared -> protected needs to be implicit for convenience but should trigger some runtime check
00:24:53*joelmo joined #nimrod
00:24:53Araqthe runtime check needs to ensure it's not aliased
00:25:13JehanIIYeah.
00:25:33JehanIIThe alternative is to prohibit assignments from one shared ptr to another.
00:26:05JehanIIHmm, no matter how one does it, it'd be hairy.
00:26:18Araqor perhaps we can do that statically
00:26:32Araqthat's not feasable I think
00:26:32JehanIISee, this is why I have multiple shared heaps myself, gets rid of the problem. :)
00:27:14AraqI can't follow but it's late
00:27:14JehanIIStatically means you'd be basically reinventing Rust as a sublanguage of Nimrod?
00:27:27JehanIIEh, shared heaps that have a lock.
00:27:33Araqyeah ...
00:27:43JehanIIObjects get created in the heap where they belong while you have a lock for the heap.
00:27:57Araqaha
00:28:16Araqso you extend the heap lock
00:28:35Araqwhereas my allocshared returns without the heap lock
00:28:45Araqyours does not?
00:28:55JehanIIYeah. Or I create it in the thread-local heap and put it in the shared heap via a deep copy.
00:29:15JehanIIIn order to create the object, I need a lock on the heap already.
00:29:36Araqyeah same here
00:29:56JehanIIThere is some trickiness with creating the first object in a heap.
00:30:57Araqoh btw I forgot 1 thing that's not really relevant there but important anyway: nothing "in" a shared ptr can be seq/strings/refs aka GC'ed memory as that's thread local
00:31:25JehanIIYeah, I think I mentioned that in my email: That strikes me as a bit of a problem.
00:31:57JehanIIIf you can't have shared GCed memory, then that limits what you can share.
00:32:58Araqyeah but I don't think it's too much of a problem
00:33:18Araqshared memory is for speed and so not using a GC makes sense
00:33:51JehanIIHmm, I'd disagree there.
00:34:19JehanIIThink of a shared username -> password table (simple example).
00:34:39JehanIIThat's shared not because of speed, because it's shared global knowledge required by multiple threads.
00:35:00Araqoh that's what you mean
00:36:22JehanIIOr think of a web browser. You may have a GUI thread and an I/O thread, and both manipulate the same document.
00:37:22JehanIIAdmittedly, I may be biased by my current application domain.
00:38:02JehanIII do computer algebra, and there you have a lot of shared data that is structured, often in a rather complicated fashion.
00:39:02Araqwell surely the most general mechanism is a GC that can deal with threads
00:39:43JehanIIYeah. Which is why my solution so far when I needed it has been to use the Boehm GC. :)
00:39:50Araqyeah well we might get one
00:40:00Araqbut the bigger problem is that then we either
00:40:14Araq(a) have "shared ref" in addition to all the other pointer types
00:40:14JehanIIPause times generally aren't important for me (that the Boehm GC is non-generational is a bigger problem).
00:40:41Araq(b) conflate "shared ref" with "ref" (which I don't like at all)
00:41:04Araqso not supporting "shared ref" makes things simpler :P
00:41:44JehanIIFor what it's worth, I do not disagree.
00:41:44EXetoC"lib/system.nim(1362, 7) Error: ambiguous call; both system.<(x: float, y: float): bool and system.<(x: float32, y: float32): bool match for: (float32, float)" did anything related change recently?
00:41:59JehanIIConcurrent Garbage Collection is a painful problem.
00:42:45Araqyeah but it's also a painful type system design problem
00:43:05EXetoCthis worked before
00:43:25AraqEXetoC: do you use "devel"?
00:43:25JehanIII'm not a type theorist by trade.
00:44:50JehanIIAnyhow, I need to head off to bed, or I'll sleepwalk to work tomorrow.
00:45:07JehanIIGood night, folks. :)
00:45:15*JehanII quit (Quit: Leaving)
00:45:56Araqsame here, good night
00:46:45EXetoCdid I use it before? I'll try it
00:47:14EXetoCcya
00:50:03EXetoCAraq: yeah that was it
00:51:31VarriountHuh. I'm shocked at how... simple/unoptimized boost's implementation of directory removal is.
01:09:22Demosdoes speed even matter for directory removal?
01:09:42shevyonly if you want to delete the whole internetz!
01:10:43Demoslike if you are working with directories you are probably doing something IO bound in the first place
01:25:03*wan quit (Remote host closed the connection)
01:28:31*ddl_smurf quit (Quit: ddl_smurf)
01:42:33VarriountDemos, speed, maybe not
01:42:43VarriountBut open handles? Yes
01:46:04VarriountPersonally, I'm quite surprised that neither the Posix specification, the Linux api, nor the Win32 api have functions for recursive removal of a directory - it's a common enough need.
01:47:07*Raynes quit (Ping timeout: 246 seconds)
01:53:49*darkf quit (Read error: Connection reset by peer)
01:54:25*darkf joined #nimrod
01:59:12*Raynes joined #nimrod
01:59:26*Raynes quit (Changing host)
01:59:26*Raynes joined #nimrod
02:06:49*eigenlicht joined #nimrod
02:11:40*DAddYE quit (Remote host closed the connection)
02:27:07*Kooda quit (Ping timeout: 246 seconds)
02:40:55*Kooda joined #nimrod
03:12:55*DAddYE joined #nimrod
03:15:29*brson quit (Quit: leaving)
03:17:19*DAddYE quit (Ping timeout: 246 seconds)
03:33:06*DAddYE joined #nimrod
03:58:24*jcrubino joined #nimrod
05:27:40*Endy joined #nimrod
07:03:30*Demos quit (Ping timeout: 245 seconds)
07:33:27*DAddYE quit (Ping timeout: 240 seconds)
07:37:52*DAddYE joined #nimrod
08:50:18*Endy quit (Ping timeout: 246 seconds)
09:00:12*shevy quit (Ping timeout: 272 seconds)
09:12:50*shevy joined #nimrod
09:16:24*DAddYE quit ()
09:32:15*Araq_ joined #nimrod
09:47:08*Endy joined #nimrod
09:52:47*ddl_smurf joined #nimrod
09:55:17*BitPuffin joined #nimrod
09:55:49BitPuffinhey!
09:55:49BitPuffinAraq_: can I read ze article? :)
09:55:49dom96hello
09:56:28BitPuffinohai dom diddely dom96
09:59:04Araq_no it's not finished, but read the logs
09:59:32Araq_Jehan was here and he is a concurrency expert :P
10:05:11*[1]Endy joined #nimrod
10:07:38*Endy quit (Ping timeout: 264 seconds)
10:07:58*[1]Endy is now known as Endy
10:08:18BitPuffinAraq_: Well I understand it's not finished ofc :)
10:08:18BitPuffinI just wanna know about the basic idea
10:13:04*io2 joined #nimrod
10:19:27*Endy quit (Ping timeout: 240 seconds)
10:20:15*jcrubino quit (Ping timeout: 246 seconds)
10:23:09*zielmicha joined #nimrod
10:25:49*Araq_ quit (Read error: Connection timed out)
10:28:12*Araq_ joined #nimrod
10:41:26*Araq_ quit (Ping timeout: 240 seconds)
10:44:21*Araq_ joined #nimrod
10:48:43*wan joined #nimrod
10:59:57*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 26.0/20131205075310])
11:00:12BitPuffindom96: how was the formals or whatever prom is called in your silly country?
11:00:12dom96formal
11:00:12dom96It was great.
11:00:12dom96Only got back like 2 hours ago
11:00:12dom96because I stayed over with my friends
11:00:32dom96BitPuffin: Are you at work now?
11:00:54BitPuffindom96: ah I see! It's cool... I only waited up for you to play dota with me.. But I guess your friends are more important..
11:02:28BitPuffindom96: si
11:02:28dom96BitPuffin: Even if I didn't stay over with my friends I would have only gotten back at like 4am :P
11:02:28BitPuffindom96: yes, but that I expected
11:03:33dom96so you were here at 5am? lol
11:03:33dom96(your time)
11:05:06BitPuffinyes
11:05:06BitPuffinbecause I thought we were playing dota
11:05:06BitPuffin</3
11:05:06dom96awwww, you're dedicated
11:05:06dom96Sorry
11:05:12dom96I don't think playing dota drunk would go well though
11:05:19BitPuffindom96: haha
11:17:42*NimBot joined #nimrod
11:17:50DedicatedPuffinlol NimBot
11:17:52dom96DedicatedPuffin: sure
11:18:00*DedicatedPuffin is now known as BitPuffin
11:19:10*zielmicha8 joined #nimrod
11:20:52BitPuffindom96: sweet
11:21:02*BitPuffin is the dota 2 addict these days
11:23:05*dom96 shouldn't be feeding this addiction
11:26:42*aftershave quit (Quit: Textual IRC Client: www.textualapp.com)
11:27:06dom96oh! New Sherlock!
11:27:40*aftershave joined #nimrod
11:43:06BitPuffindom96: no shit sherlock
11:43:29BitPuffinhar har
11:43:44dom96oh you
11:45:37BitPuffinu luv it
11:46:07BitPuffinif only I could play dota 2 at work
11:52:25BitPuffindom96: http://www.reddit.com/r/DotA2/comments/1i6udf/
11:55:05*darkf quit (Quit: Leaving)
12:03:46*fntzr joined #nimrod
12:04:46BitPuffindom96: http://critwhale.com/DotaMap.jpg woa dat advantage for dire mid
12:04:52BitPuffinwith secret shop access on mid lane
12:07:48*Araq_ joined #nimrod
12:09:08*dirkk0 joined #nimrod
12:10:50BitPuffinAraq_: the conversation was gerat and all, but didn't say anything about what the model is about
12:11:59Araq_well the model is about making locks safe and making you insert locks where they are needed
12:14:54BitPuffinAraq_: or not compile?
12:17:26*Araq_ quit (Ping timeout: 240 seconds)
12:27:29BitPuffindom96: I wonder if they have added new items since that guy made an overview of items
12:39:12*zielmicha8 quit (Ping timeout: 246 seconds)
12:39:33*zielmicha quit (Ping timeout: 246 seconds)
12:49:30*Araq_ joined #nimrod
12:54:06*[1]Endy joined #nimrod
13:08:20*Araq_ quit (Write error: Broken pipe)
13:09:45*Araq_ joined #nimrod
13:11:46*aftersha_ joined #nimrod
13:15:18*aftersha_ quit (Client Quit)
13:23:17*psquid quit (Quit: work)
14:02:36OrionPKdom96 you should send built up response headers in jester when you call "sendHeaders"
14:02:59OrionPKdefault the headers parameter to the response.data[3] or whatever
14:05:18*io2 quit (Ping timeout: 246 seconds)
14:18:45dom96hrm, sure.
14:18:52dom96OrionPK: Make an issue
14:19:36dom96btw the assert failure you experienced is something I put in in case the compiler chooses the wrong trySendEx implementation
14:19:47dom96Possibly a compiler bug actually
14:20:15dom96I haven't had a chance to test async because I was on Windows, and on Windows async httpserver is broken
14:27:07*zielmicha joined #nimrod
14:33:02OrionPKmm ok
14:34:44*zielmicha quit (Ping timeout: 260 seconds)
14:35:14*zielmicha joined #nimrod
14:35:50*fntzr quit (Quit: Leaving)
14:45:44*OrionPK quit (Remote host closed the connection)
14:46:33BitPuffindom96: only nubs use windows
14:50:06*OrionPK joined #nimrod
14:56:41*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 26.0/20131205075310])
14:57:13OrionPKdom96 not sure yet if changing to writing directly to sockets has been worth it
14:57:23*zielmicha quit (Ping timeout: 272 seconds)
14:59:56*aftersha_ joined #nimrod
15:14:07*zielmicha joined #nimrod
15:15:38*Mat3 joined #nimrod
15:15:40Mat3hi all
15:18:33BitPuffinyo Mat3
15:20:30Mat3hi BitPuffin
15:22:22BitPuffinMat3: wassa?
15:27:56Mat3not much, low-level coding
15:32:42*aftersha_ quit (Quit: Computer has gone to sleep.)
15:36:38BitPuffinMat3: interesting!
15:51:03shevyBitPuffin: liar !
15:51:05shevy;P
15:57:52BitPuffinshevy: no I like das low levels
15:58:43*zielmicha8 joined #nimrod
16:59:16*Mat3 quit (Quit: Verlassend)
17:05:42*aftersha_ joined #nimrod
17:16:49*ddl_smurf quit (Quit: ddl_smurf)
17:20:24*brson joined #nimrod
17:34:19*aftersha_ quit (Quit: Computer has gone to sleep.)
17:38:47*dirkk0 quit (Quit: This computer has gone to sleep)
17:41:03*Demos joined #nimrod
17:41:12*io2 joined #nimrod
17:52:17*zauberparacelsus joined #nimrod
17:52:40zauberparacelsusHow much work is required to create a nimrod binding for a C or C++ library?
18:05:55OrionPKzauberparacelsus a bit more for a C++ library, assuming you dont want to force people to compile their nimrod to c++
18:06:21zauberparacelsusok, though what about C?
18:06:37OrionPKit varies on the complexity of the library; if it uses a lot of macros etc
18:06:43OrionPKbut usually its fairly easy
18:06:58zauberparacelsusok
18:07:56zauberparacelsusthough it looks like one of the libraries I was thinking of, Irrlicht, might already have bindings
18:08:18OrionPKthere's a lot of examples in the nimrod repo
18:08:28OrionPKhttps://github.com/Araq/Nimrod/tree/master/lib/wrappers
18:08:36zauberparacelsusI'll have to poke around, thanks!
18:08:45OrionPKyep
18:09:01OrionPKtake a look at the documentation for c2nim as well
18:09:09zauberparacelsusok
18:09:48zauberparacelsusone other question: is there anything for Nimrod that's equivalent to the Flask library for Python?
18:10:42OrionPKsorry, no idea what flask is. I'm not a python programmer
18:11:15OrionPKit's for web development?
18:11:24zauberparacelsusaye, a web microframework
18:11:38*BitPuffin quit (Ping timeout: 264 seconds)
18:11:57zauberparacelsusI wrote a wiki engine in Python and Flask, and I'm thinking of converting it to Nimrod (or attempting to do so) as a learning project.
18:12:10OrionPKyou should look into Jester
18:12:28OrionPKI've also been working on a templating API that works quite well with jester
18:12:45zauberparacelsusoh? Interesting
18:13:06zauberparacelsusWhat's it based on? I had been using Jinja2 templating with Flask.
18:13:21OrionPKhttps://dl.dropboxusercontent.com/u/417554/template.png
18:13:45OrionPKit's compile-time template, so it uses nimrods own compiler to do the templating
18:14:04zauberparacelsusoh, I see
18:14:21OrionPKso you can do looping, if/elif/else, etc
18:14:30OrionPKand it transforms your string at compile time into a series of statements
18:14:40OrionPKmakes it fairly efficient at runtime
18:17:12zauberparacelsusyeah, though personally I'd prefer something more dynamic for templating.
18:17:31OrionPKmore dynamic?
18:17:47zauberparacelsusloading the templates from text files external to the executable
18:18:10OrionPKah
18:18:29OrionPKthat will be doable if nimrod ever gets a JIT compiler
18:18:43OrionPKbut it would be less powerful IMO
18:19:08OrionPKto do it without compiler support i mean
18:19:25OrionPKhttps://dl.dropboxusercontent.com/u/417554/logic_example.png
18:19:35OrionPKthis allows you to do much more complex logic right inside the template
18:19:41OrionPKsimilar to razor in ASP.NET MVC
18:20:05OrionPKand in sublime, at least, we have support for syntax highlighting of the templates
18:20:08*aftersha_ joined #nimrod
18:20:22zauberparacelsusok
18:24:42Araqhi zauberparacelsus welcome
18:24:48zauberparacelsusheyo
18:25:05AraqOrionPK: we will have a scripting API soon, no need to JIT string templates
18:25:25zauberparacelsus\o/
18:25:51*dirkk0 joined #nimrod
18:25:56OrionPKaraq I still like compiled templates ;)
18:26:18Araqin fact ... I had it wrapped into a module but can't find the code :P
18:27:01OrionPKdoh
18:27:26OrionPKgiven my templates module, how hard would it be for me to support the scripting module
18:27:42Araqdunno
18:29:22*DAddYE joined #nimrod
18:30:26zauberparacelsusoh, another question: does Nimrod have increment and decrement operators? I had missed those when working with Python
18:31:10OrionPKyou generally would use Inc and dec
18:32:40OrionPKthere's no ++ or -- built in
18:33:13*gradha joined #nimrod
18:33:26zauberparacelsusok
18:35:03*aftersha_ quit (Quit: Computer has gone to sleep.)
18:36:44Araqzauberparacelsus: you can easily define your own operators in nimrod so if you really "need" them, you can define ++ and -- easily
18:37:01OrionPKaraq what about ++op vs. op++
18:37:38Araqwell ok you can only do ++op :-)
18:38:31Araq... and op.`++`
18:39:08Araqand with a macro you can even have different semantics for the two
18:39:18Araqbut that's a hack
18:40:41OrionPKcan do and should do are very different here ;)
18:41:33Demosunary operators like that are the devil though
18:51:37Araqping zahary
18:53:42*shodan45 joined #nimrod
18:55:42*dirkk0 quit (Quit: Leaving)
18:56:55zauberparacelsusAraq: So, what form would the scripting API take?
18:58:19Araqproc execute(code: string): PJson
18:58:40Araqnot really PJson but it conveys the right idea
18:59:05zauberparacelsuswhat's PJson?
18:59:31Araqnimrod's way to describe data in the JSON format
18:59:43zauberparacelsusok
19:00:47Araqyou can then lay proc execute[T](code: string): T on top of that
19:01:11Araqbut the low level API cannot be typed
19:17:37OrionPKso araq where is this execute proc at?
19:17:52AraqI lost it :-/
19:18:00OrionPKdoh, gone forever?
19:18:47Araqwell perhaps it's on my other computer
19:18:52OrionPKdoes it just allow you to do the things you can currently do w/ compiletime procs & macros?
19:19:09Araqyes it's a wrapper around vm2
19:19:14OrionPKmmk
19:38:15gradhahah, this is interesting, when I change the default parameter from "-" to "," the compiler says: "Error: overloaded 'renderParamTypes' leads to ambiguous calls"
19:38:52Araqyeah yeah yeah
19:39:01AraqI know this check ain't perfect
19:39:08Araqbetter than nothing though
19:39:15gradhaaaah, cool, it's because the forward declaration has a different default value
20:10:56*DAddYE_ joined #nimrod
20:10:56*DAddYE quit (Read error: Connection reset by peer)
20:15:58*Demos quit (Quit: Leaving)
20:16:25*Demos joined #nimrod
20:23:19*shodan45 quit (Quit: Konversation terminated!)
20:25:08*shodan45 joined #nimrod
21:01:25OrionPKanyone used zlib's TZStream?
21:09:28AraqI only had one small test program for zlib iirc
21:11:02*[1]Endy quit (Ping timeout: 240 seconds)
21:20:39EXetoChas anything changed with regards to overload resolution? "proc foo*[T](x, y: T) = bar(x, y)" seems to look if bar is available only where foo is defined, and not where it is instantiated
21:24:50Araqthat's symbol lookup in generics, not overload resolution but ugh
21:25:01AraqI told zahary to not change this
21:25:23AraqI guess I need to revert his changes if he doesn't show up here soon
21:25:52EXetoCoh
21:26:02Araqhowever
21:26:15Araqcould also be that's documented behaviour :P
21:26:28Araqif "bar" is not overloaded it defaults to "bind"
21:26:40Araqif it's overloaded it's a "mixin"
21:26:59Araqyou can always explicitly state what you want though
21:27:35Araqcheck the manual :P
21:36:54EXetoCI'd rather not have to resort to templates every time, but hopefully it's just a temporary limitation. template + mixin works in this case
21:42:43*DAddYE_ quit (Ping timeout: 272 seconds)
21:42:47*DAddYE joined #nimrod
21:46:24*Varriount|Mobile joined #nimrod
22:11:18*CarpNet joined #nimrod
22:11:42*CarpNet quit (Client Quit)
22:11:53AraqEXetoC: you can use a 'mixin' directly in the generic, no need for a template
22:19:50*Varriount|Mobile quit (Remote host closed the connection)
22:20:06*Varriount|Mobile joined #nimrod
22:22:44OrionPKgot it working araq
22:24:31Araqgood
22:24:50AraqOrionPK: finished my concurrency model
22:25:00OrionPKgood
22:29:47*aftersha_ joined #nimrod
22:34:46OrionPKstart to get lots of lovely errors after gzip to much though
22:42:40*Mat3 joined #nimrod
22:42:54Mat3hi
22:43:10gradhahey
22:43:19Mat3hi gradha
22:44:22Araqhi Mat3
22:50:52Mat3hi Araq
22:53:52Mat3what's new ?
22:54:23AraqI think I finished nimrod's concurrency model for version 1
22:54:49Mat3great news, where cane I find informations about it ?
22:55:01Mat3^can
22:55:16Araqwell I'm still writing the blog posts
22:56:13gradhaAraq: you are doing it wrong
22:56:21*Mat3 reminds me finishing my documentation
22:56:24gradhaMat3: for a small fee you can take a sneak peak
22:56:35Araqlol
22:56:57Mat3gradha: dream on *g*
22:57:44*darkf joined #nimrod
22:57:55Araqit ensures freedom of data races and deadlocks at compile time and introduces a notion of implicitly unique pointers
22:58:26Araqlol
22:58:38Araqsounds like good marketing
22:58:58Mat3marketsprech
23:00:22Araqbut you'll like it, it's all based on non GC'ed memory
23:00:40Araqshould be good for embedded stuff
23:00:44Mat3great
23:01:25dom96Araq: If I have a converter getSocket(s: PAsyncSocket): TSocket, and then a proc foo(sock: TSocket | PAsyncSocket) = when sock is TSocket: ... Should this be true when I pass a PAsyncSocket to foo?
23:01:49Araqlol no
23:02:16Araqbut it's pointless code
23:02:28Araqproc foo(sock: TSocket) = ...
23:02:37Araqproc foo(sock: PAsyncSocket) = ...
23:02:47Araqyou might as well use overloading, you know
23:03:05Araqcommon implementation can be put into a template
23:03:16dom96hrm, true.
23:03:24*shevy left #nimrod ("I'll be back ... maybe")
23:03:34dom96I think it currently is true though.
23:03:57dom96I guess the compiler will pick the TSocket overload too.
23:04:12dom96or maybe it's just an issue with `is`
23:05:00Mat3hi dom96
23:05:16Araqmy bet it's "is"
23:10:28*PortablePuffin joined #nimrod
23:10:31*psquid joined #nimrod
23:10:44dom96PortablePuffin: DOTA
23:10:51dom96PortablePuffin: WHERE R U
23:10:59PortablePuffindom96: SOON
23:11:07Mat3Araq: Is "write tracking" implemented, as intended in your blog ?
23:11:28Araqno
23:11:41*Boscop is now known as Boscop__
23:11:46Mat3hmm
23:12:01dom96hi Mat3
23:12:22Araqand it's not necessary for the concurrency model anymore either
23:12:49PortablePuffinwoot
23:12:56Mat3ok, hope you finish your writing soon
23:13:22Araqa simpler variant of it is necessary though
23:13:59PortablePuffinAraq: I'm really excited about it and I'll adopt it immediately in probably two projects initially
23:14:19Mat3(I think to have an idea of your implementation, let's see)
23:14:37PortablePuffineven though I don't know what it is yet
23:14:45PortablePuffinlol :p
23:15:06Araqlol well it's good some people try to write read world programs with it
23:15:13Araq*real
23:15:31*Mat3 downloading internet ... please wait *lol*
23:18:57PortablePuffinAraq precisely my thought
23:19:31Mat3get some sleep ciao
23:19:38*Mat3 quit (Quit: Verlassend)
23:20:21*Boscop__ quit (Quit: Page closed)
23:27:41gradhagood night, honey badgers
23:27:46*gradha quit (Quit: bbl, need to watch http://www.youtube.com/watch?v=dEf4PJZXBxA again)
23:47:45*BitPuffin joined #nimrod
23:59:28*DAddYE_ joined #nimrod
23:59:28*DAddYE quit (Read error: Connection reset by peer)
23:59:34BitPuffindom96: okay just a sec :D