<< 19-11-2013 >>

00:13:03*mflamer quit (Ping timeout: 245 seconds)
00:15:51*mflamer joined #nimrod
00:37:44*freezerburnv quit (Quit: freezerburnv)
00:55:39*mflamer quit (Ping timeout: 246 seconds)
01:07:21*mflamer joined #nimrod
01:08:27*Ricky_Ricardo joined #nimrod
01:08:53*Ricky_Ricardo quit (Client Quit)
01:17:38*mflamer quit (Ping timeout: 245 seconds)
01:22:02*freezerburnv joined #nimrod
01:53:25*tromp__ left #nimrod ("Konversation terminated!")
02:07:32*DAddYE quit (Remote host closed the connection)
02:13:20*DAddYE joined #nimrod
03:04:08*brson quit (Quit: leaving)
03:10:24*xenagi joined #nimrod
03:15:29*freezerburnv quit (Quit: freezerburnv)
04:07:01*DAddYE quit (Remote host closed the connection)
04:16:38*xenagi quit (Quit: Leaving)
04:21:00*xenagi joined #nimrod
04:46:40*xenagi quit (Ping timeout: 264 seconds)
04:48:59*familiar125 quit (Read error: Connection reset by peer)
05:04:40mkb8
05:08:39*DAddYE joined #nimrod
05:15:02*DAddYE quit (Ping timeout: 240 seconds)
05:15:45*q66 quit (Ping timeout: 246 seconds)
05:17:30*OrionPK quit (Read error: Connection reset by peer)
05:40:33*closures999 joined #nimrod
05:42:29*q66 joined #nimrod
05:45:03*closures999 quit (Client Quit)
06:12:03*DAddYE joined #nimrod
06:18:56*DAddYE quit (Ping timeout: 272 seconds)
06:23:39*q66 quit (Ping timeout: 246 seconds)
06:26:22*q66 joined #nimrod
06:52:37*XAMPP_ joined #nimrod
06:56:27*XAMPP quit (Ping timeout: 252 seconds)
06:58:18*dymk quit (Ping timeout: 246 seconds)
07:16:06*DAddYE joined #nimrod
07:20:39*Jackneill joined #nimrod
07:22:14*DAddYE quit (Ping timeout: 240 seconds)
08:19:56*DAddYE joined #nimrod
08:21:22*Jackneill quit (Remote host closed the connection)
08:26:51*DAddYE quit (Ping timeout: 272 seconds)
09:24:30*DAddYE joined #nimrod
09:30:07*DAddYE quit (Ping timeout: 265 seconds)
09:33:59*CarpNet joined #nimrod
10:07:04Araqping zahary1
10:22:40*anton2 joined #nimrod
10:25:18NimBotAraq/Nimrod master 1d847b9 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Links algorithm module from library index.
10:25:18NimBotAraq/Nimrod master 0b44a8a Andreas Rumpf [+0 ±1 -0]: Merge pull request #666 from gradha/pr_links_algorithm_module... 2 more lines
10:27:14*DAddYE joined #nimrod
10:32:00NimBotAraq/Nimrod master 46928ea Grzegorz Adam Hankiewicz [+0 ±1 -0]: Fixes times.toSeconds to handle hours and minutes correctly.
10:32:00NimBotAraq/Nimrod master 5a636a8 Andreas Rumpf [+0 ±1 -0]: Merge pull request #677 from gradha/pr_fixes_times_calculation... 2 more lines
10:33:21Araqping Varriount
10:33:26*DAddYE quit (Ping timeout: 240 seconds)
10:34:23NimBotAraq/Nimrod master 9e207dc Clay Sweetser [+0 ±1 -0]: Prevent lambdas from crashing if given implicit generic parameters.
10:34:23NimBotAraq/Nimrod master ecde49e Clay Sweetser [+0 ±1 -0]: Prevent lambdas from crashing if given implicit generic parameters.... 2 more lines
10:34:23NimBotAraq/Nimrod master 9b058fc Clay Sweetser [+0 ±0 -0]: Merge branch 'core/fix-generic-crashes' of github.com:Varriount/Nimrod into core/fix-generic-crashes
10:34:23NimBotAraq/Nimrod master cce1198 Andreas Rumpf [+0 ±1 -0]: Merge pull request #680 from Varriount/core/fix-generic-crashes... 2 more lines
11:03:41*BitPuffin joined #nimrod
11:05:59BitPuffing'day govenors
11:07:41Araqdude it's early in the morning here :P
11:13:26BitPuffinAraq: But I tried to make you happy by not saying good morning ;_;
11:13:39BitPuffingermany is a fucked up country when it comes to time
11:13:52Araqnah, I'm just kidding
11:14:04BitPuffinI assumed so :)
11:14:13BitPuffinAraq: how's things going?
11:17:22Araqhunting bugs, working on my new vm, writing the article for drdobbs ...
11:17:37Araqthings never get boring in #nimrod land ...
11:22:39Araqsee you later
11:26:59BitPuffinIt sure doesn't
11:27:06BitPuffincool that you are writing an article for dobbs
11:27:32BitPuffinMake sure you give Andrei and Walter a good spaking up there
11:27:37BitPuffinspanking
11:29:50BitPuffinAraq: I imagine the vm is very useful also for doing compile time operations
11:30:57*DAddYE joined #nimrod
11:37:51*DAddYE quit (Ping timeout: 272 seconds)
12:07:07*anton2 quit (Quit: anton2)
12:32:24*freezerburnv joined #nimrod
12:34:42*DAddYE joined #nimrod
12:41:02*DAddYE quit (Ping timeout: 240 seconds)
12:49:30*Anton2 joined #nimrod
13:04:09*freezerburnv quit (Quit: freezerburnv)
13:11:50*Anton2 quit (Quit: Anton2)
13:22:48*Jackneill joined #nimrod
13:25:13*BitPuffin quit (Quit: WeeChat 0.4.2)
13:38:23*DAddYE joined #nimrod
13:45:25*DAddYE quit (Ping timeout: 272 seconds)
13:49:54*BitPuffin joined #nimrod
14:03:13*BitPuffin quit (Quit: WeeChat 0.4.2)
14:14:34*Ricky_Ricardo joined #nimrod
14:19:47*BitPuffin joined #nimrod
14:19:58*XAMPP_ quit (Read error: Connection reset by peer)
14:35:09*OrionPK joined #nimrod
14:41:32NimBotAraq/Nimrod master 7fcd235 Araq [+0 ±1 -0]: bugfix: '$' for TPort
14:41:32NimBotAraq/Nimrod master 49c1dc9 Araq [+0 ±1 -0]: fixes #678
14:41:32NimBotAraq/Nimrod master 9a59842 Araq [+0 ±1 -0]: garbage-in-garbage-out principle for unicode errors; fixes #674
14:41:32NimBotAraq/Nimrod master ef5c15a Araq [+0 ±1 -0]: fixes #663
14:41:32NimBot1 more commits.
14:42:02BitPuffintwo bugs down!
14:42:29BitPuffin165 to go?
14:42:45BitPuffinor no 167
14:42:47*DAddYE joined #nimrod
14:49:23*DAddYE quit (Ping timeout: 272 seconds)
14:53:39*Ricky_Ricardo quit (Quit: Ricky_Ricardo)
15:01:45*webskipper joined #nimrod
15:16:48VarriountAraq, you called?
15:17:22webskipperhi all
15:17:42VarriountHey webskipper
15:17:50VarriountHow are you?
15:18:00webskippergood, ty - and you ?
15:18:32VarriountBusy with class projects. >_<
15:20:47*BitPuffin quit (Quit: WeeChat 0.4.2)
15:32:39webskipperthe block statement has no semantic for the compiler or ?
15:36:44VarriountEh, could you rephrase that?
15:54:43*NimBot joined #nimrod
15:59:20VarriountAraq, ping
16:01:25VarriountAraq, how.. threadsafe is nimrod's gc?
16:05:09*noam_ joined #nimrod
16:08:28*noam quit (Ping timeout: 245 seconds)
16:13:34AraqVarriount: depends on your definition of threadsafe
16:14:05OrionPKAraq, have you seen this issue https://gist.github.com/onionhammer/7518186
16:14:41AraqOrionPK: barely, make a proper bug report please
16:14:48OrionPKmk
16:14:59Araqmight fix it tonight
16:15:13Araqas you can see I'm back in "bug fixing" mode
16:23:13OrionPKhttps://github.com/Araq/Nimrod/issues/681
16:23:16OrionPKyeah I noticed :0
16:44:06*OrionPK quit (Quit: Page closed)
16:44:31VarriountI know that each thread has it's own gc. Is it possible that that two threads' garbage collecter could track one shared object, and that
16:44:49VarriountThey could get tangled up?
16:45:24VarriountAraq, I got this traceback when the nimbuild bot tried re-bootstrapping things - https://gist.github.com/Varriount/7547631
16:45:44*OrionPK joined #nimrod
16:45:47VarriountAraq, also, you pinged me.. last night? What for?
16:50:26*DAddYE joined #nimrod
16:56:03*DAddYE quit (Ping timeout: 272 seconds)
17:26:32*shodan45 joined #nimrod
17:35:07*eonil joined #nimrod
17:35:27eonilHello
17:35:49eonilanyone here?
17:35:57dom96yes, hi
17:36:02eonilhi
17:36:35eonili just heard about nimrod and also here're some people who can help to to clear some questions
17:37:35eonilanyway i am not sure this is right place to ask...
17:39:20*eonil quit (Client Quit)
17:39:45*eonil joined #nimrod
17:40:14dom96just ask
17:41:11eonilit's about coroutines. i am looking for some language for in-game logic scripting, and it needs explicit, symmetric coroutine support.
17:41:33eonilnimrod seems have everything else, but coroutines
17:42:11eonilit is possible to construct some coroutines on existing language features?
17:42:36eonili mean a coroutine/fiber as a flow control, not for concurrency
17:43:00eonilit would be better to be deterministic and cooperative.
17:43:52eonilnot for parallelism.
17:48:10dom96I think first class iterators are pretty close to coroutines.
17:48:30*anton2 joined #nimrod
17:49:25dom96so you can use them
17:52:18eonili see. i am reading it on manual, and i think that's just a generator...
17:52:22*CarpNet quit (Quit: Leaving)
17:52:23Varriounteonil, first class iterators are the closest you can get, for now. What do you mean by "explicit" and "symmetric"
17:52:58*DAddYE joined #nimrod
17:53:05eonilhmm i mean *explicit* is that I can create/pause/resume/yield execution context of each coroutine.
17:53:15*brson joined #nimrod
17:53:42eoniland *symmetric* means there's no limitation on pausing/resuming coroutine context.
17:54:16Varriounteonil, do you need these coroutines to in separate threads?
17:54:23Varriount*to run in
17:54:30eonilno
17:54:44VarriountThen I think first class iterators are just what you need.
17:54:45eonilactually i ant to in a single thread
17:55:08Varriounteonil, the manual doesn't explain first class iterators quite as well as it does other things.
17:55:18eoniloh really?
17:55:25eonilwhere can i see the details?
17:55:49eonilis this right link? http://nimrod-code.org/manual.html#first-class-iterators
17:55:53Varriounteonil, you can't, they haven't been written down, that's why I'm about to explain them to you.
17:56:09VarriountI mean, it doesn't go into quite as much depth as it does other topics.
17:56:10eonilok i see
17:56:29VarriountFirst class iterators are, in essence, a function with added, hidden state arguments passed to it.
17:56:52VarriountIf you have experience with python's generators, they are much like that.
17:57:33eonilunfortunately, i haven't used python generator. but afaik, it ha some limitation on pausing and resuing
17:57:46VarriountHowever, where they differ is that in python, generators are very object-like, whereas in nimrod, generators are more function oriented.
17:58:22Varriounteonil, I don't know exactly what you mean by pausing and resuming - those are merely state conditions.
17:59:12VarriountIf what you mean is that the generators can maintain their state even when passed around and partially executed, both python and nimrod generators can do that.
17:59:23eonilit a little complicated… anyway i like to try to explain
17:59:59Varriounteonil, is there a specific language you're idea of "generator/coroutine" comes from?
18:00:01eonili have used iterator/generator in c# and I think that's quiet simiar with python's
18:00:52*tylere joined #nimrod
18:00:53VarriountFrom what wikipedia tells me, yes, they are.
18:02:00Varriounteonil, coroutines are what you are looking for. In particular, the fact that they require arguments each time they are iterated through (started?) may be of use to you.
18:03:07eonilwell currently, i can't figure out accurate difference.
18:03:12OrionPKdom96 oop, it's 12:00, i'll take a break from working on my app until 1:00 :P
18:03:31dom96OrionPK: ?
18:03:33tylereNimrod looks really sexy
18:03:44eonilwhen i used it i had big issue, so i remember that's the different of assymmtric/symmetric coroutines
18:03:53tylereFinally a high performance language that agrees with me that Python basically got it right, instead of C...
18:04:06OrionPKdom96 I'm just messing with u, i know it's not times' fault :P
18:04:06OrionPKhttps://github.com/Araq/Nimrod/issues/681
18:05:06dom96OrionPK: ahh :P
18:05:24eonili am sorry i though you guys would know that with that term… i have to come back later with accurate definition
18:05:34Araqhi eonil, tylere welcome
18:05:42eonilhello araq
18:05:48Araqeonil: it's really simple
18:06:06Araqwhen you can 'yield' anywhere, you have a coroutine
18:06:22eonilyeah i mean it unlimited pause/resume
18:06:40Araqwhen you can only 'yield' in some particular context (in Nimrod's case in the 'iterator'), you have a generator
18:06:56Araqso ... Nimrod's iterators are generators, not full coroutines
18:06:58eonili think what you're talking is very accurate
18:07:07eonilok i see
18:07:09Araqhowever
18:07:40Araqit's not nearly as bad as it seems since you can use a 'template' instead of a 'proc' and yield in there
18:07:48VarriountWhat is the difference between a generator and a coroutine?
18:07:57Araqyou have to be careful to avoid code bloat though
18:08:17AraqVarriount: I just told you :P
18:08:35eonilhmm coroutine with template?
18:08:37VarriountOh, I see.
18:08:54Araqthe best example is a recursion
18:09:05Araqyou can 'yield' recursively in a coroutine
18:09:13Araqbut you can't in an iterator/generator
18:09:40Araqso ... tree traversal is a piece of cake with coroutines and still hairy with an iterator
18:09:56eonilyeah
18:10:05eonilthat's why i need full coroutine
18:10:13eoniland that's really essential to game logic
18:10:16Araqreally?
18:10:29eonilall the game scripts must implement coroutines
18:10:32Araqnever heard game logic to be recursive
18:10:38eonilunreal-script, lua, squirrell
18:10:50eonilah i mean just coroutines
18:10:54eonilnot the recursion
18:10:54Varriounteonil, also, look at this -> https://gist.github.com/Varriount/7549683
18:11:34Varriount*magic*!
18:12:10eonilis this mean i can copy execution state?
18:12:24*faassen left #nimrod (#nimrod)
18:12:24VarriountTo be honest, I don't know.
18:13:21eonilanyway, iterators are generator, so it's not for me. i have to take a look of the template system
18:14:10Varriounteonil, I still don't see why you need coroutines, c# generators aren't, to the best of my knowledge.
18:14:38eonilit's for game logic. in other words, i need actor concurrency
18:14:55eonila lot of hundreds, thousands of actors
18:15:07tylereeonil: That's an interesting approach...most games that I've seen don't do that due to the overread.
18:15:18tylerebaically use big arrays of objects processed sequentially
18:15:25VarriountSo, you just iterate once for each actor, per event loop
18:15:35VarriountIterators can do that.
18:15:51eonilevent loop is not good for complex logic
18:15:54*anton2 left #nimrod (#nimrod)
18:16:07tylereeonil: How complex is your logic?
18:16:18VarriountErm, an event loop is what most games run on. Webservers too.
18:16:43tylereif you REALLY need that much true conncurrecy you might want to look at something like erlang, which is built from the ground up to do that sort of thing
18:16:48eonilyeah, i know, but event loop forces me to divide every execution into each frames
18:17:17Varriounteonil, you still have to split things into frames, in order to get input and act on it.
18:17:25eonilwhat i need is an ability to describe an isolated sequential logic over multiple frames
18:17:40Varriount.... which is what a generator does.
18:17:41tylereeonil: You mean a finite state machine
18:17:50eonilyeah, but coroutine can make many thing a lot simpler
18:17:58eonilah that would fit
18:17:59eonilfsm
18:18:06eonildescribing fem is real pain
18:18:10eonilfsm
18:19:31eoniland erlang, or go style concurrency
18:19:56eonilthat's what i want, but those languages doesn't good fit to soft realtime system
18:20:09VarriountI still don't understand why generators don't suit your needs.
18:20:10tylereoh, no, erlang is a VERY good fir for that
18:20:11eonilnoon, i don't now eralng,
18:20:20eonilno my fault
18:20:22eonili mean go
18:20:31tylereeonil: erlang was created by erriccson to run phonesystems, it's crazy robust
18:20:33eonili have't tried eralng
18:20:37eonili know that
18:20:50tylerehttp://stackoverflow.com/questions/1569035/what-makes-erlang-suitable-for-soft-real-time-applications
18:20:56eonilbut it doesn't seem to have good attributes for me
18:21:19eonili am looking for a language for long term use
18:21:30Varriounteonil, what game systems have you used in the past?
18:21:38Varriount*engines/frameworks
18:21:50eonilwell, i used unity3d
18:22:02VarriountThat uses an event loop.
18:22:02tylereWhat are you actually trying to accomplish
18:22:36eonili am looking for a script language which i can invest in long term manner
18:22:51eonilwhich very well integrated to c family langauge
18:22:57tylereYea, but I mean, are you trying to build an MMO, an adventure game, an RTS?
18:23:03eonilalso have static typing - so i can expect better tooling support
18:23:25eonilah, i always make real-time simulation
18:23:42eonilit would be very close to rts
18:24:36tylereI'm not sure real-time in this context means what you think it means
18:24:46eonili mean in game genre
18:24:46VarriountYeah..
18:24:53tylerehttp://en.wikipedia.org/wiki/Real-time_computing
18:25:02eonilin field term, it should be soft realtime
18:25:36tylereeonil: what you are essentially arguing is that you are write, and everyone else who has spent the last 30 years writing game engines in C/C++ is wrong
18:25:42tylere(no offense)
18:25:47Araqfyi Nimrod is getting a new VM and it's very easy to add real coroutines to that. But I think nimrod's iterators are good enough for your needs
18:25:58Varriounteonil, do you have any experience with opengl?
18:26:22eonilwell, people have been used c/c++ because they only had it
18:26:57eoniland i have used both of gl/dx. not that much high level.
18:27:22eonilwhen i describe each uni's behavior
18:27:37Varriountuni?
18:27:40eonilunit's behavior, it's real big pain that i can't describe them
18:27:45eonilin a function.
18:27:54eonilfor example, something like go() or wait()
18:28:13eonilis impossible within a function.
18:28:13Varriounteonil, would those be commands for an actor, or for a thread?
18:28:21eonilactor
18:28:43Varriounteonil, then what you want is an event loop, actors, and generators.
18:28:46eonili can implement fsm, by splitting all those state chafes for each frame
18:28:57eoniland sometimes it's required, but in many cases
18:29:13VarriountGenerators can be used to modify an actors state, progressively, each frame.
18:29:38eonilin many cases, it can be simplified by using actors
18:29:52tylereeonil: For a game you want to be computing frame by frame, as otherwise you're either computing too MUCH (wasting CPU that could be used for other things like graphics) or not enough and then thinks get weird and you have weird aliaising/sync issues
18:29:57eonilbut generators are not symmetric - i can't call yield at any point
18:30:15Varriounteonil, you can *inside* a generator.
18:31:16Varriounteonil, read http://en.wikipedia.org/wiki/Coroutine#Comparison_with_generators
18:31:19eonilthat's optimization issue, and i am talking about high level logic
18:32:00eonilgenerators are good for its use, but limited context switching - yielding - limits abstracting
18:32:03tylereeonil: Games are arguably the one area where there is no such thing as premature optimization
18:32:43eonilwell i think i have to consider architectural optimization at first,
18:32:46Varriounteonil, context switching is primarily done within threads.
18:33:33eonilbut i don't think coroutine will make some bursting issue. if it's fully deterministic i believe i can control them easily
18:33:45eonilalso i meant execution context of each coroutines
18:34:38VarriountThe question I think you need to ask yourself is, do you need that abstraction (and added complexity).
18:34:39eonili came here to ask availability of coroutine, and not arguing my opinion…
18:35:03eonilhmm
18:35:39VarriountWell, nimrod doesn't have coroutines, not in the strict definition. However for your use-case, generators sound like a good enough tool.
18:36:16eonilwell i already have used many generator based concurrency flow control
18:36:37eonilbut i always met some wall of limitation due to lack of free yielding
18:36:53eonillack of abstraction is big issue at least for me
18:40:03Araqeonil: as I said if you're fine with a virtual machine for that part, nimrod will soon have it
18:41:06eonildo you mean you have plan to implement coroutines?
18:41:51VarriountSo, Araq, about this virtual machine, does that mean that future nimrod programs will be some hybrid of statically compiled program and virtual machine?
18:42:08eonilalso i don't understand the meaning of *fine with a virtual machine*. is there any difference…?
18:45:20Varriounteonil, a virtual machine is typically a more dynamic/less limiting way of running a program, at the cost of a decrease in eficiency.
18:46:20eonilhmm to me, it's fine. because i am looking for a higher level language.
18:46:39Araqeonil: the VM will support full coroutines, yes
18:46:57eonilwow
18:47:25eonilthis is awesome?!
18:47:28AraqVarriount: nimrod will stay as it is. but there will be an API to do run"some nimrod code here"
18:47:42Hannibal_SmithAraq, a coroutine that can contain a coroutine? They will be composable?
18:47:52VarriountCompared with C, C++, and Nimrod, which are all translated and compiled into machine code, which the processor directly runs, languages which run in a virtual machine, such as java, python, and C#, are compiled bytecode, which is then read and acted upon by another program *at runtime*
18:48:33Hannibal_SmithIn C# coroutine are not composable
18:48:33eonili don't think full feledged vm is not require to run coroutines
18:49:04AraqHannibal_Smith: can't see why not. C# has not full coroutines.
18:49:20Hannibal_SmithYes, it's more like an "hack"
18:49:27OrionPKAraq useful for scripting and -i mode
18:49:29Araqeonil: indeed but a VM makes the required stack handling much easier to implement
18:49:57*BitPuffin joined #nimrod
18:50:13AraqOrionPK: yup
18:50:26OrionPKAraq and nakefiles ;)
18:51:03eonilafaik, coroutine can be implemented by splitting a subroutine into fsm (state + multiple steps)
18:51:04OrionPKexciting
18:51:43eoniland i believe that can be done by compiler… anyway, this is just my guess. nothing proven
18:52:39tylereVarriount: I think C# code actually gets compiled to native, no? There's a *runtime*, but it's not a VM or interpreter
18:52:50OrionPKI suppose you could also do unit-tests at compile with that as well
18:52:54Hannibal_Smithtylere, it compiled to CIL
18:53:01Hannibal_Smith*is
18:53:04eonilc# is compiled into MSIL and runs on a VM
18:53:36*p0nce joined #nimrod
18:53:41OrionPKMSI is compiled by the JIT
18:53:45eonil.NET performs JIT and there's an option to JIT before running the program
18:54:00OrionPKMSIL*
18:54:11Hannibal_SmithYou can also compile C# program with an AOT compiler
18:54:17Hannibal_SmithBut the result is slower
18:54:57eonilwhat was the core reason to add VM?
18:55:03Hannibal_SmithAnd if I can rembember well, some fatures are not available
18:55:09Hannibal_Smith*remember
18:56:49Araqeonil: nimrod always had a shitty "VM" for compile time function evaluation. now it's getting a better one
18:57:27Araqit's a register based bytecode VM not unlike Lua. check out the vm2 branch to see it
18:59:23eonildoes it mean nimrod won't be compiled into c anymore?
18:59:53OrionPKno
19:00:08OrionPK<Araq> Varriount: nimrod will stay as it is. but there will be an API to do run"some nimrod code here"
19:00:59Hannibal_SmithWhat are the usercase of this?
19:01:22OrionPKexecuting nimrod code without having to compile it to C and then to binary
19:01:44Trixar_zaYou mean, make it act interpretive?
19:01:48OrionPKso.. -i mode, compile time evaluation of logic, etc
19:02:26p0ncemight avoid the need to have a scripting language on top of some applications
19:03:02OrionPKright, naturally runtime evaluation of scripted logic
19:03:19Hannibal_SmithSo something like GHCi?
19:03:31OrionPKthats what -i mode is
19:03:57OrionPKopen up shell and try "nimrod i"
19:04:30Hannibal_SmithI think I should update my nimrod version :-P
19:05:21Araqdo not use "nimrod i" please. it has more bugs than it has features ...
19:05:25*brson quit (Ping timeout: 245 seconds)
19:05:47Araqreminds me to add a warning to it
19:06:10OrionPKWARNING: this will crash if you do something more advanced than var x = 5
19:06:26tylereOrionPK: Not true! I just did an integer addition and it didn't explode
19:06:31OrionPK;D
19:08:34*Araq takes OrionPK's warning
19:08:42VarriountAraq, how exactly does nimrod -i work, as of the current master branch?
19:09:30AraqVarriount: look at main.nim:133
19:11:15AraqVarriount: reason for my pining was that I'd like to know where you are standing wrt generic lambdas
19:12:18VarriountAraq, currently, generic lambdas don't exist. All I have done was make the usage of a generic lambda not crash the compiler
19:12:34Araqwell I've looked at your patch
19:12:37VarriountThrowing an Error > Compiler Segfault
19:12:46Araqand that's all that should be necessary to make them work ...
19:14:30VarriountWell, currently they don't.
19:15:22Araqwell usually you can be more specific than that :P
19:16:20VarriountAraq, a type error gets thrown. Something along the lines of "Invalid Type: proc(GenericParam):auto
19:27:22Araqalright, doesn't look hard to fix
19:28:50VarriountAraq, I've copied some of the generic processing logic from semprocaux to semlambda, however at a certain point I just get errors on how either the body isn't valid, or something else.
19:29:28VarriountI'll look into fixing it further. However, at least right now the compiler no longer crashes.
19:30:05Araqwell my plan is to get rid of semLambda since now there is hardly a difference anymore
19:30:23Araqand semprocaux already is a clusterfuck of special cases
19:30:41Araqso the case "is lambda" won't be noticable
19:30:47Araq;-)
19:31:24BitPuffinAraq: nimrod i in my <3 what are you talkin bout :P
19:32:11*eonil quit (Ping timeout: 250 seconds)
19:35:35BitPuffinAraq: it even works with generics
19:36:23BitPuffinhttps://gist.github.com/BitPuffin/7551145
19:38:03VarriountO_o
19:38:14VarriountWhat kind of witchcraft is this?
19:40:08BitPuffinVarriount: hmm?
19:40:22BitPuffinokay now it is starting to show stupidity
19:40:40Varriount?
19:40:57BitPuffinwhen doing generic procs
19:41:50BitPuffinhere's the full unabridged session to whoever is interested https://gist.github.com/BitPuffin/7551230
19:43:10VarriountAraq, what I'm concerned about at the moment, and I don't have a clue how to fix, is the fact that a generic proc can't use newSeq with one of its' generic type parameters. It prevent many parts of my itertools module from working.
19:46:11VarriountSo, Araq, should I endeaver to get generic lambdas working, or something else?
19:47:10Araqget generics lambdas working please
19:47:22AraqI'll have a look at the newSeq issue later
19:47:35VarriountThank you!
19:47:49*Varriount gives Araq a cookie
19:48:40*BitPuffin gives Varriount and Araq a coin to fight to the death over
19:52:52AraqBitPuffin: this is funny: http://www.youtube.com/watch?v=djwCXBoeZrk . sorry, you are not. :P
19:54:40BitPuffinAraq: you want me to talk about your nipples instead? I'm not sure I am comfortable doing that
19:55:34Araqseriously man ... stop it already
19:57:16BitPuffinAraq: :P
19:57:45BitPuffinYou don't have to think I'm funny, there is no universal funny, and there is no need to be a dick about it
20:00:22Araqhah, and I thought I was diplomatic ...
20:03:17BitPuffinAraq: Well sure, you can package up rotten moldy fruit in really nice and pleasant cover and maybe even isolate the terrible smell, but once you remove that beneath it will still be rotten moldy fruit
20:04:16BitPuffinie, saying something degrading will still be degrading even if you try to say it in a subtle and sneaky way
20:22:56*Hannibal_Smith quit (Quit: Sto andando via)
20:50:13*DAddYE quit (Ping timeout: 248 seconds)
20:51:06*DAddYE joined #nimrod
20:53:14*gradha joined #nimrod
21:09:47*brson joined #nimrod
21:10:52gradhaIs the builder working? Can't build docs: lib/pure/fsmonitor.nim(187, 15) Error: type mismatch: got (cint) but expected 'TSocketHandle
21:11:27gradhaoh, maybe I'm on the wrong branch
21:16:24gradhait's interesting that '\n' is not supported
21:27:13*brson quit (Ping timeout: 245 seconds)
21:27:51Varriountgradha, were you on the wrong branch?
21:28:31VarriountThat error sounds like something that got missed when socket handle types were added.
21:29:13*brson joined #nimrod
21:29:43gradhait fails on all my branches
21:31:08Araqit fails for me too
21:31:33gradhapresumably the docs on nimbuild are not being updated then?
21:31:52Araqyeah
21:32:08*gradha wonders who might be getting error emails
21:36:49Araqah gradha, what I wanted to tell you:
21:37:14AraqI think symlinks for readme will only cause problems on win or somewhere else
21:40:10gradhawant me to update pr_stackoverflow_link2 without symlink and instead duplicate the .txt as .rst? or no .rst at all?
21:40:28fowlwindows vista+ has symlinks
21:40:30Araqno .rst please
21:40:38Araqand no symlinks
21:41:16Araqand we already have that sucking md file for github which can't figure out how to render our .txt file
21:42:54gradhaif you want to keep the sucky md then you can merge https://github.com/Araq/Nimrod/pull/657 which updates the .md and .txt keeping markdown
21:43:36NimBotAraq/Nimrod master 883ad97 Grzegorz Adam Hankiewicz [+0 ±2 -0]: Adds link to stackoverflow nimrod tag in support section.
21:43:36NimBotAraq/Nimrod master 57e6ba7 Andreas Rumpf [+0 ±2 -0]: Merge pull request #657 from gradha/pr_stackoverflow_link... 2 more lines
21:45:36gradhasince vista+ has symlinks maybe we should drop xp support when Microsoft does it too, symlinks are teh rulez
21:48:02*Jackneill quit (Remote host closed the connection)
21:54:32Araqno. Symlinks are bad, mmkay?
21:54:52Araqcan be used to introduce cycles in the file system. very bad idea.
21:55:57gradhathat's why you have symlinks and hardlinks, recently Apple patched a vulnerability with hardlinks to the containing directory
21:56:24gradhabut symlinks are like .lnk files, those are in xp too
21:58:04*brson quit (Ping timeout: 264 seconds)
22:00:16gradhagood night
22:00:23*gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=2IzR_ClTE8Y again)
22:00:28fowlsymlinks are not like lnk files at all
22:00:36fowl-_-
22:05:56VarriountSymlinks are much... lower level thank .lnk files, right? lnk files are just files that are parsed by explorer.exe (and friends) to point to another directory or file. Symlinks, on the other hand, are part of the filesystem itself.
22:14:52BitPuffinis there any library for nimrod for matlab like stuff?
22:15:06BitPuffinwell I guess specifically DSP
22:15:25BitPuffinscience stuffs
22:16:26BitPuffinAraq: you mentioned that people are using nimrod for scientific computing
22:17:02BitPuffinlibsvm I guess
22:18:28Araqno I said I used it for scientific computing
22:18:40BitPuffinah
22:18:45BitPuffinwell you are a person?
22:18:46Araqit's been a while though and I lost the code :P
22:19:02BitPuffinyou plus me and we have people
22:19:05fowlVarriount, right
22:19:22Araqand it was stuff about enumerating graphs, so not exactly matlab-like stuff
22:19:38BitPuffinAraq: well I'd like to use it for audio signal processing
22:20:08BitPuffinit would be kind of cool to graph the stuff too during dev
22:20:30BitPuffinand while learning
22:27:23*dymk joined #nimrod
22:36:05VarriountAraq, just to make sure I know what I'm aiming for, could you give me an example of a generic lambda?
22:36:24VarriountI think our concepts might differ.
22:36:42dom96Araq: Did you fix the uint stuff yet?
22:36:51Araqdom96: I think so, yes
22:38:57AraqVarriount: (proc [T](a, b: T): T = a + b)[int](2, 3)
22:39:28Araqthough I guess people also expect inference of the T in many more context than is currently allowed/implemented
22:39:35Araq*contexts
22:40:15Araqso perhaps it's not useful right now
22:40:34Araqand even more inference is lots of hard work
22:40:53VarriountAraq, the thing is, currently you can't even assign a generic procedure *to* a variable
22:43:17*OrionPK quit (Ping timeout: 250 seconds)
22:45:21dom96Araq: Yep, looks like you did. Thanks.
22:47:12BitPuffinyeah it seems like the whole generic thing is because of one huge issues that causes lots of stuff
22:47:31BitPuffinpossibly also the lambdas
22:48:22VarriountBitPuffin, in this case, it's because variables *can't* contain uninstantiated, generic procedures, iterators, etc.
22:48:46fowli fail to see how var x = proc(foo) = .. could ever work
22:48:58VarriountEven if the target procedure is marked as a closure. You simply get an error stating that the generic must be instantiated.
22:50:04VarriountGeneric lambdas break this rule. "var foo = proc[T](x, y: T):T = x+y" isn't fully instantiated.
22:50:44VarriountWhat happens if you pass such a variable to another function?
22:51:44VarriountRight now, I'm getting a cgen error thrown at me, likely because the compiler is unable to get the unique type of the lambda.
22:52:40BitPuffinfowl: the same way that proc(foo) = would work
22:53:00BitPuffinVarriount: gotcha
22:53:12VarriountAraq, ^ ?
22:53:18fowlBitPuffin, which is?
22:53:57*brson joined #nimrod
22:54:01fowli thought generic functions dont even exist at all, they can only be instantiated
22:54:58BitPuffinfowl: implicitly generic?
22:55:06BitPuffininstantiated for each way it is called
22:55:16Varriountfowl, a lambda is syntactic suger. "var x = proc(x,y:int):int = x+y" is the same as "proc f(x, y: int):int = x+y" and "var z = f"
22:55:18*OrionPK joined #nimrod
22:56:56fowli'll believe it when i see it
22:57:07*Varriount slaps fowl around a bit with a small mackeral.
22:57:24*shodan45 quit (Quit: Konversation terminated!)
23:17:11BitPuffinyay pa worked like a charm through c2nim!
23:17:24Varriountpa?
23:22:52fowlhttp://rt.com/usa/hawaii-sledgehammer-homeless-possessions-986
23:25:45BitPuffinVarriount: portaudio
23:44:15BitPuffinI'm gonna try and hack together a binding and wrapper tomorrow
23:45:23BitPuffinno fowl I won't pay you to do it :P
23:45:49fowl$5? 0.09 btc?
23:46:41BitPuffinis it even legal to charge $5 :P
23:46:58fowlwhy wouldnt it be
23:47:21BitPuffindunno
23:47:27BitPuffinminimum wage and so on
23:48:49BitPuffinjust so you know what I mean is a binding (low lever wrapper in strange nimspeak) and a wrapper (high level wrapper nimrodified so to say)
23:49:06BitPuffinfowl: you'd do that for $5?
23:49:10fowlno
23:49:13fowli'll do each for $5
23:49:23BitPuffinno deal!
23:49:35fowlbecause binding and wrapper are really the same thing
23:49:36BitPuffinever $5 is much for me at this point :P
23:49:43BitPuffineven*
23:50:15BitPuffinwell I think wrapper sounds more like it has already been transformed to feel native
23:50:20BitPuffinbut that's just me maybe
23:50:20fowlyou dont need a higher level thing, then you lose the ability to use the original c documentation/examples for guidance
23:50:37BitPuffinwell yeah that's why I want both
23:51:00BitPuffinbut I want to wrap it with constructor + destructor stuff around it
23:51:04BitPuffinetc