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:40 | mkb | 8 |
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:04 | Araq | ping zahary1 |
10:22:40 | * | anton2 joined #nimrod |
10:25:18 | NimBot | Araq/Nimrod master 1d847b9 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Links algorithm module from library index. |
10:25:18 | NimBot | Araq/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:00 | NimBot | Araq/Nimrod master 46928ea Grzegorz Adam Hankiewicz [+0 ±1 -0]: Fixes times.toSeconds to handle hours and minutes correctly. |
10:32:00 | NimBot | Araq/Nimrod master 5a636a8 Andreas Rumpf [+0 ±1 -0]: Merge pull request #677 from gradha/pr_fixes_times_calculation... 2 more lines |
10:33:21 | Araq | ping Varriount |
10:33:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
10:34:23 | NimBot | Araq/Nimrod master 9e207dc Clay Sweetser [+0 ±1 -0]: Prevent lambdas from crashing if given implicit generic parameters. |
10:34:23 | NimBot | Araq/Nimrod master ecde49e Clay Sweetser [+0 ±1 -0]: Prevent lambdas from crashing if given implicit generic parameters.... 2 more lines |
10:34:23 | NimBot | Araq/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:23 | NimBot | Araq/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:59 | BitPuffin | g'day govenors |
11:07:41 | Araq | dude it's early in the morning here :P |
11:13:26 | BitPuffin | Araq: But I tried to make you happy by not saying good morning ;_; |
11:13:39 | BitPuffin | germany is a fucked up country when it comes to time |
11:13:52 | Araq | nah, I'm just kidding |
11:14:04 | BitPuffin | I assumed so :) |
11:14:13 | BitPuffin | Araq: how's things going? |
11:17:22 | Araq | hunting bugs, working on my new vm, writing the article for drdobbs ... |
11:17:37 | Araq | things never get boring in #nimrod land ... |
11:22:39 | Araq | see you later |
11:26:59 | BitPuffin | It sure doesn't |
11:27:06 | BitPuffin | cool that you are writing an article for dobbs |
11:27:32 | BitPuffin | Make sure you give Andrei and Walter a good spaking up there |
11:27:37 | BitPuffin | spanking |
11:29:50 | BitPuffin | Araq: 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:32 | NimBot | Araq/Nimrod master 7fcd235 Araq [+0 ±1 -0]: bugfix: '$' for TPort |
14:41:32 | NimBot | Araq/Nimrod master 49c1dc9 Araq [+0 ±1 -0]: fixes #678 |
14:41:32 | NimBot | Araq/Nimrod master 9a59842 Araq [+0 ±1 -0]: garbage-in-garbage-out principle for unicode errors; fixes #674 |
14:41:32 | NimBot | Araq/Nimrod master ef5c15a Araq [+0 ±1 -0]: fixes #663 |
14:41:32 | NimBot | 1 more commits. |
14:42:02 | BitPuffin | two bugs down! |
14:42:29 | BitPuffin | 165 to go? |
14:42:45 | BitPuffin | or 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:48 | Varriount | Araq, you called? |
15:17:22 | webskipper | hi all |
15:17:42 | Varriount | Hey webskipper |
15:17:50 | Varriount | How are you? |
15:18:00 | webskipper | good, ty - and you ? |
15:18:32 | Varriount | Busy with class projects. >_< |
15:20:47 | * | BitPuffin quit (Quit: WeeChat 0.4.2) |
15:32:39 | webskipper | the block statement has no semantic for the compiler or ? |
15:36:44 | Varriount | Eh, could you rephrase that? |
15:54:43 | * | NimBot joined #nimrod |
15:59:20 | Varriount | Araq, ping |
16:01:25 | Varriount | Araq, how.. threadsafe is nimrod's gc? |
16:05:09 | * | noam_ joined #nimrod |
16:08:28 | * | noam quit (Ping timeout: 245 seconds) |
16:13:34 | Araq | Varriount: depends on your definition of threadsafe |
16:14:05 | OrionPK | Araq, have you seen this issue https://gist.github.com/onionhammer/7518186 |
16:14:41 | Araq | OrionPK: barely, make a proper bug report please |
16:14:48 | OrionPK | mk |
16:14:59 | Araq | might fix it tonight |
16:15:13 | Araq | as you can see I'm back in "bug fixing" mode |
16:23:13 | OrionPK | https://github.com/Araq/Nimrod/issues/681 |
16:23:16 | OrionPK | yeah I noticed :0 |
16:44:06 | * | OrionPK quit (Quit: Page closed) |
16:44:31 | Varriount | I 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:49 | Varriount | They could get tangled up? |
16:45:24 | Varriount | Araq, 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:47 | Varriount | Araq, 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:27 | eonil | Hello |
17:35:49 | eonil | anyone here? |
17:35:57 | dom96 | yes, hi |
17:36:02 | eonil | hi |
17:36:35 | eonil | i just heard about nimrod and also here're some people who can help to to clear some questions |
17:37:35 | eonil | anyway 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:14 | dom96 | just ask |
17:41:11 | eonil | it's about coroutines. i am looking for some language for in-game logic scripting, and it needs explicit, symmetric coroutine support. |
17:41:33 | eonil | nimrod seems have everything else, but coroutines |
17:42:11 | eonil | it is possible to construct some coroutines on existing language features? |
17:42:36 | eonil | i mean a coroutine/fiber as a flow control, not for concurrency |
17:43:00 | eonil | it would be better to be deterministic and cooperative. |
17:43:52 | eonil | not for parallelism. |
17:48:10 | dom96 | I think first class iterators are pretty close to coroutines. |
17:48:30 | * | anton2 joined #nimrod |
17:49:25 | dom96 | so you can use them |
17:52:18 | eonil | i see. i am reading it on manual, and i think that's just a generator... |
17:52:22 | * | CarpNet quit (Quit: Leaving) |
17:52:23 | Varriount | eonil, 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:05 | eonil | hmm i mean *explicit* is that I can create/pause/resume/yield execution context of each coroutine. |
17:53:15 | * | brson joined #nimrod |
17:53:42 | eonil | and *symmetric* means there's no limitation on pausing/resuming coroutine context. |
17:54:16 | Varriount | eonil, do you need these coroutines to in separate threads? |
17:54:23 | Varriount | *to run in |
17:54:30 | eonil | no |
17:54:44 | Varriount | Then I think first class iterators are just what you need. |
17:54:45 | eonil | actually i ant to in a single thread |
17:55:08 | Varriount | eonil, the manual doesn't explain first class iterators quite as well as it does other things. |
17:55:18 | eonil | oh really? |
17:55:25 | eonil | where can i see the details? |
17:55:49 | eonil | is this right link? http://nimrod-code.org/manual.html#first-class-iterators |
17:55:53 | Varriount | eonil, you can't, they haven't been written down, that's why I'm about to explain them to you. |
17:56:09 | Varriount | I mean, it doesn't go into quite as much depth as it does other topics. |
17:56:10 | eonil | ok i see |
17:56:29 | Varriount | First class iterators are, in essence, a function with added, hidden state arguments passed to it. |
17:56:52 | Varriount | If you have experience with python's generators, they are much like that. |
17:57:33 | eonil | unfortunately, i haven't used python generator. but afaik, it ha some limitation on pausing and resuing |
17:57:46 | Varriount | However, where they differ is that in python, generators are very object-like, whereas in nimrod, generators are more function oriented. |
17:58:22 | Varriount | eonil, I don't know exactly what you mean by pausing and resuming - those are merely state conditions. |
17:59:12 | Varriount | If 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:23 | eonil | it a little complicated… anyway i like to try to explain |
17:59:59 | Varriount | eonil, is there a specific language you're idea of "generator/coroutine" comes from? |
18:00:01 | eonil | i have used iterator/generator in c# and I think that's quiet simiar with python's |
18:00:52 | * | tylere joined #nimrod |
18:00:53 | Varriount | From what wikipedia tells me, yes, they are. |
18:02:00 | Varriount | eonil, 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:07 | eonil | well currently, i can't figure out accurate difference. |
18:03:12 | OrionPK | dom96 oop, it's 12:00, i'll take a break from working on my app until 1:00 :P |
18:03:31 | dom96 | OrionPK: ? |
18:03:33 | tylere | Nimrod looks really sexy |
18:03:44 | eonil | when i used it i had big issue, so i remember that's the different of assymmtric/symmetric coroutines |
18:03:53 | tylere | Finally a high performance language that agrees with me that Python basically got it right, instead of C... |
18:04:06 | OrionPK | dom96 I'm just messing with u, i know it's not times' fault :P |
18:04:06 | OrionPK | https://github.com/Araq/Nimrod/issues/681 |
18:05:06 | dom96 | OrionPK: ahh :P |
18:05:24 | eonil | i am sorry i though you guys would know that with that term… i have to come back later with accurate definition |
18:05:34 | Araq | hi eonil, tylere welcome |
18:05:42 | eonil | hello araq |
18:05:48 | Araq | eonil: it's really simple |
18:06:06 | Araq | when you can 'yield' anywhere, you have a coroutine |
18:06:22 | eonil | yeah i mean it unlimited pause/resume |
18:06:40 | Araq | when you can only 'yield' in some particular context (in Nimrod's case in the 'iterator'), you have a generator |
18:06:56 | Araq | so ... Nimrod's iterators are generators, not full coroutines |
18:06:58 | eonil | i think what you're talking is very accurate |
18:07:07 | eonil | ok i see |
18:07:09 | Araq | however |
18:07:40 | Araq | it's not nearly as bad as it seems since you can use a 'template' instead of a 'proc' and yield in there |
18:07:48 | Varriount | What is the difference between a generator and a coroutine? |
18:07:57 | Araq | you have to be careful to avoid code bloat though |
18:08:17 | Araq | Varriount: I just told you :P |
18:08:35 | eonil | hmm coroutine with template? |
18:08:37 | Varriount | Oh, I see. |
18:08:54 | Araq | the best example is a recursion |
18:09:05 | Araq | you can 'yield' recursively in a coroutine |
18:09:13 | Araq | but you can't in an iterator/generator |
18:09:40 | Araq | so ... tree traversal is a piece of cake with coroutines and still hairy with an iterator |
18:09:56 | eonil | yeah |
18:10:05 | eonil | that's why i need full coroutine |
18:10:13 | eonil | and that's really essential to game logic |
18:10:16 | Araq | really? |
18:10:29 | eonil | all the game scripts must implement coroutines |
18:10:32 | Araq | never heard game logic to be recursive |
18:10:38 | eonil | unreal-script, lua, squirrell |
18:10:50 | eonil | ah i mean just coroutines |
18:10:54 | eonil | not the recursion |
18:10:54 | Varriount | eonil, also, look at this -> https://gist.github.com/Varriount/7549683 |
18:11:34 | Varriount | *magic*! |
18:12:10 | eonil | is this mean i can copy execution state? |
18:12:24 | * | faassen left #nimrod (#nimrod) |
18:12:24 | Varriount | To be honest, I don't know. |
18:13:21 | eonil | anyway, iterators are generator, so it's not for me. i have to take a look of the template system |
18:14:10 | Varriount | eonil, I still don't see why you need coroutines, c# generators aren't, to the best of my knowledge. |
18:14:38 | eonil | it's for game logic. in other words, i need actor concurrency |
18:14:55 | eonil | a lot of hundreds, thousands of actors |
18:15:07 | tylere | eonil: That's an interesting approach...most games that I've seen don't do that due to the overread. |
18:15:18 | tylere | baically use big arrays of objects processed sequentially |
18:15:25 | Varriount | So, you just iterate once for each actor, per event loop |
18:15:35 | Varriount | Iterators can do that. |
18:15:51 | eonil | event loop is not good for complex logic |
18:15:54 | * | anton2 left #nimrod (#nimrod) |
18:16:07 | tylere | eonil: How complex is your logic? |
18:16:18 | Varriount | Erm, an event loop is what most games run on. Webservers too. |
18:16:43 | tylere | if 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:48 | eonil | yeah, i know, but event loop forces me to divide every execution into each frames |
18:17:17 | Varriount | eonil, you still have to split things into frames, in order to get input and act on it. |
18:17:25 | eonil | what i need is an ability to describe an isolated sequential logic over multiple frames |
18:17:40 | Varriount | .... which is what a generator does. |
18:17:41 | tylere | eonil: You mean a finite state machine |
18:17:50 | eonil | yeah, but coroutine can make many thing a lot simpler |
18:17:58 | eonil | ah that would fit |
18:17:59 | eonil | fsm |
18:18:06 | eonil | describing fem is real pain |
18:18:10 | eonil | fsm |
18:19:31 | eonil | and erlang, or go style concurrency |
18:19:56 | eonil | that's what i want, but those languages doesn't good fit to soft realtime system |
18:20:09 | Varriount | I still don't understand why generators don't suit your needs. |
18:20:10 | tylere | oh, no, erlang is a VERY good fir for that |
18:20:11 | eonil | noon, i don't now eralng, |
18:20:20 | eonil | no my fault |
18:20:22 | eonil | i mean go |
18:20:31 | tylere | eonil: erlang was created by erriccson to run phonesystems, it's crazy robust |
18:20:33 | eonil | i have't tried eralng |
18:20:37 | eonil | i know that |
18:20:50 | tylere | http://stackoverflow.com/questions/1569035/what-makes-erlang-suitable-for-soft-real-time-applications |
18:20:56 | eonil | but it doesn't seem to have good attributes for me |
18:21:19 | eonil | i am looking for a language for long term use |
18:21:30 | Varriount | eonil, what game systems have you used in the past? |
18:21:38 | Varriount | *engines/frameworks |
18:21:50 | eonil | well, i used unity3d |
18:22:02 | Varriount | That uses an event loop. |
18:22:02 | tylere | What are you actually trying to accomplish |
18:22:36 | eonil | i am looking for a script language which i can invest in long term manner |
18:22:51 | eonil | which very well integrated to c family langauge |
18:22:57 | tylere | Yea, but I mean, are you trying to build an MMO, an adventure game, an RTS? |
18:23:03 | eonil | also have static typing - so i can expect better tooling support |
18:23:25 | eonil | ah, i always make real-time simulation |
18:23:42 | eonil | it would be very close to rts |
18:24:36 | tylere | I'm not sure real-time in this context means what you think it means |
18:24:46 | eonil | i mean in game genre |
18:24:46 | Varriount | Yeah.. |
18:24:53 | tylere | http://en.wikipedia.org/wiki/Real-time_computing |
18:25:02 | eonil | in field term, it should be soft realtime |
18:25:36 | tylere | eonil: 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:42 | tylere | (no offense) |
18:25:47 | Araq | fyi 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:58 | Varriount | eonil, do you have any experience with opengl? |
18:26:22 | eonil | well, people have been used c/c++ because they only had it |
18:26:57 | eonil | and i have used both of gl/dx. not that much high level. |
18:27:22 | eonil | when i describe each uni's behavior |
18:27:37 | Varriount | uni? |
18:27:40 | eonil | unit's behavior, it's real big pain that i can't describe them |
18:27:45 | eonil | in a function. |
18:27:54 | eonil | for example, something like go() or wait() |
18:28:13 | eonil | is impossible within a function. |
18:28:13 | Varriount | eonil, would those be commands for an actor, or for a thread? |
18:28:21 | eonil | actor |
18:28:43 | Varriount | eonil, then what you want is an event loop, actors, and generators. |
18:28:46 | eonil | i can implement fsm, by splitting all those state chafes for each frame |
18:28:57 | eonil | and sometimes it's required, but in many cases |
18:29:13 | Varriount | Generators can be used to modify an actors state, progressively, each frame. |
18:29:38 | eonil | in many cases, it can be simplified by using actors |
18:29:52 | tylere | eonil: 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:57 | eonil | but generators are not symmetric - i can't call yield at any point |
18:30:15 | Varriount | eonil, you can *inside* a generator. |
18:31:16 | Varriount | eonil, read http://en.wikipedia.org/wiki/Coroutine#Comparison_with_generators |
18:31:19 | eonil | that's optimization issue, and i am talking about high level logic |
18:32:00 | eonil | generators are good for its use, but limited context switching - yielding - limits abstracting |
18:32:03 | tylere | eonil: Games are arguably the one area where there is no such thing as premature optimization |
18:32:43 | eonil | well i think i have to consider architectural optimization at first, |
18:32:46 | Varriount | eonil, context switching is primarily done within threads. |
18:33:33 | eonil | but i don't think coroutine will make some bursting issue. if it's fully deterministic i believe i can control them easily |
18:33:45 | eonil | also i meant execution context of each coroutines |
18:34:38 | Varriount | The question I think you need to ask yourself is, do you need that abstraction (and added complexity). |
18:34:39 | eonil | i came here to ask availability of coroutine, and not arguing my opinion… |
18:35:03 | eonil | hmm |
18:35:39 | Varriount | Well, nimrod doesn't have coroutines, not in the strict definition. However for your use-case, generators sound like a good enough tool. |
18:36:16 | eonil | well i already have used many generator based concurrency flow control |
18:36:37 | eonil | but i always met some wall of limitation due to lack of free yielding |
18:36:53 | eonil | lack of abstraction is big issue at least for me |
18:40:03 | Araq | eonil: as I said if you're fine with a virtual machine for that part, nimrod will soon have it |
18:41:06 | eonil | do you mean you have plan to implement coroutines? |
18:41:51 | Varriount | So, 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:08 | eonil | also i don't understand the meaning of *fine with a virtual machine*. is there any difference…? |
18:45:20 | Varriount | eonil, 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:20 | eonil | hmm to me, it's fine. because i am looking for a higher level language. |
18:46:39 | Araq | eonil: the VM will support full coroutines, yes |
18:46:57 | eonil | wow |
18:47:25 | eonil | this is awesome?! |
18:47:28 | Araq | Varriount: nimrod will stay as it is. but there will be an API to do run"some nimrod code here" |
18:47:42 | Hannibal_Smith | Araq, a coroutine that can contain a coroutine? They will be composable? |
18:47:52 | Varriount | Compared 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:33 | Hannibal_Smith | In C# coroutine are not composable |
18:48:33 | eonil | i don't think full feledged vm is not require to run coroutines |
18:49:04 | Araq | Hannibal_Smith: can't see why not. C# has not full coroutines. |
18:49:20 | Hannibal_Smith | Yes, it's more like an "hack" |
18:49:27 | OrionPK | Araq useful for scripting and -i mode |
18:49:29 | Araq | eonil: indeed but a VM makes the required stack handling much easier to implement |
18:49:57 | * | BitPuffin joined #nimrod |
18:50:13 | Araq | OrionPK: yup |
18:50:26 | OrionPK | Araq and nakefiles ;) |
18:51:03 | eonil | afaik, coroutine can be implemented by splitting a subroutine into fsm (state + multiple steps) |
18:51:04 | OrionPK | exciting |
18:51:43 | eonil | and i believe that can be done by compiler… anyway, this is just my guess. nothing proven |
18:52:39 | tylere | Varriount: I think C# code actually gets compiled to native, no? There's a *runtime*, but it's not a VM or interpreter |
18:52:50 | OrionPK | I suppose you could also do unit-tests at compile with that as well |
18:52:54 | Hannibal_Smith | tylere, it compiled to CIL |
18:53:01 | Hannibal_Smith | *is |
18:53:04 | eonil | c# is compiled into MSIL and runs on a VM |
18:53:36 | * | p0nce joined #nimrod |
18:53:41 | OrionPK | MSI is compiled by the JIT |
18:53:45 | eonil | .NET performs JIT and there's an option to JIT before running the program |
18:54:00 | OrionPK | MSIL* |
18:54:11 | Hannibal_Smith | You can also compile C# program with an AOT compiler |
18:54:17 | Hannibal_Smith | But the result is slower |
18:54:57 | eonil | what was the core reason to add VM? |
18:55:03 | Hannibal_Smith | And if I can rembember well, some fatures are not available |
18:55:09 | Hannibal_Smith | *remember |
18:56:49 | Araq | eonil: nimrod always had a shitty "VM" for compile time function evaluation. now it's getting a better one |
18:57:27 | Araq | it's a register based bytecode VM not unlike Lua. check out the vm2 branch to see it |
18:59:23 | eonil | does it mean nimrod won't be compiled into c anymore? |
18:59:53 | OrionPK | no |
19:00:08 | OrionPK | <Araq> Varriount: nimrod will stay as it is. but there will be an API to do run"some nimrod code here" |
19:00:59 | Hannibal_Smith | What are the usercase of this? |
19:01:22 | OrionPK | executing nimrod code without having to compile it to C and then to binary |
19:01:44 | Trixar_za | You mean, make it act interpretive? |
19:01:48 | OrionPK | so.. -i mode, compile time evaluation of logic, etc |
19:02:26 | p0nce | might avoid the need to have a scripting language on top of some applications |
19:03:02 | OrionPK | right, naturally runtime evaluation of scripted logic |
19:03:19 | Hannibal_Smith | So something like GHCi? |
19:03:31 | OrionPK | thats what -i mode is |
19:03:57 | OrionPK | open up shell and try "nimrod i" |
19:04:30 | Hannibal_Smith | I think I should update my nimrod version :-P |
19:05:21 | Araq | do not use "nimrod i" please. it has more bugs than it has features ... |
19:05:25 | * | brson quit (Ping timeout: 245 seconds) |
19:05:47 | Araq | reminds me to add a warning to it |
19:06:10 | OrionPK | WARNING: this will crash if you do something more advanced than var x = 5 |
19:06:26 | tylere | OrionPK: Not true! I just did an integer addition and it didn't explode |
19:06:31 | OrionPK | ;D |
19:08:34 | * | Araq takes OrionPK's warning |
19:08:42 | Varriount | Araq, how exactly does nimrod -i work, as of the current master branch? |
19:09:30 | Araq | Varriount: look at main.nim:133 |
19:11:15 | Araq | Varriount: reason for my pining was that I'd like to know where you are standing wrt generic lambdas |
19:12:18 | Varriount | Araq, currently, generic lambdas don't exist. All I have done was make the usage of a generic lambda not crash the compiler |
19:12:34 | Araq | well I've looked at your patch |
19:12:37 | Varriount | Throwing an Error > Compiler Segfault |
19:12:46 | Araq | and that's all that should be necessary to make them work ... |
19:14:30 | Varriount | Well, currently they don't. |
19:15:22 | Araq | well usually you can be more specific than that :P |
19:16:20 | Varriount | Araq, a type error gets thrown. Something along the lines of "Invalid Type: proc(GenericParam):auto |
19:27:22 | Araq | alright, doesn't look hard to fix |
19:28:50 | Varriount | Araq, 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:28 | Varriount | I'll look into fixing it further. However, at least right now the compiler no longer crashes. |
19:30:05 | Araq | well my plan is to get rid of semLambda since now there is hardly a difference anymore |
19:30:23 | Araq | and semprocaux already is a clusterfuck of special cases |
19:30:41 | Araq | so the case "is lambda" won't be noticable |
19:30:47 | Araq | ;-) |
19:31:24 | BitPuffin | Araq: nimrod i in my <3 what are you talkin bout :P |
19:32:11 | * | eonil quit (Ping timeout: 250 seconds) |
19:35:35 | BitPuffin | Araq: it even works with generics |
19:36:23 | BitPuffin | https://gist.github.com/BitPuffin/7551145 |
19:38:03 | Varriount | O_o |
19:38:14 | Varriount | What kind of witchcraft is this? |
19:40:08 | BitPuffin | Varriount: hmm? |
19:40:22 | BitPuffin | okay now it is starting to show stupidity |
19:40:40 | Varriount | ? |
19:40:57 | BitPuffin | when doing generic procs |
19:41:50 | BitPuffin | here's the full unabridged session to whoever is interested https://gist.github.com/BitPuffin/7551230 |
19:43:10 | Varriount | Araq, 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:11 | Varriount | So, Araq, should I endeaver to get generic lambdas working, or something else? |
19:47:10 | Araq | get generics lambdas working please |
19:47:22 | Araq | I'll have a look at the newSeq issue later |
19:47:35 | Varriount | Thank 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:52 | Araq | BitPuffin: this is funny: http://www.youtube.com/watch?v=djwCXBoeZrk . sorry, you are not. :P |
19:54:40 | BitPuffin | Araq: you want me to talk about your nipples instead? I'm not sure I am comfortable doing that |
19:55:34 | Araq | seriously man ... stop it already |
19:57:16 | BitPuffin | Araq: :P |
19:57:45 | BitPuffin | You 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:22 | Araq | hah, and I thought I was diplomatic ... |
20:03:17 | BitPuffin | Araq: 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:16 | BitPuffin | ie, 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:52 | gradha | Is the builder working? Can't build docs: lib/pure/fsmonitor.nim(187, 15) Error: type mismatch: got (cint) but expected 'TSocketHandle |
21:11:27 | gradha | oh, maybe I'm on the wrong branch |
21:16:24 | gradha | it's interesting that '\n' is not supported |
21:27:13 | * | brson quit (Ping timeout: 245 seconds) |
21:27:51 | Varriount | gradha, were you on the wrong branch? |
21:28:31 | Varriount | That error sounds like something that got missed when socket handle types were added. |
21:29:13 | * | brson joined #nimrod |
21:29:43 | gradha | it fails on all my branches |
21:31:08 | Araq | it fails for me too |
21:31:33 | gradha | presumably the docs on nimbuild are not being updated then? |
21:31:52 | Araq | yeah |
21:32:08 | * | gradha wonders who might be getting error emails |
21:36:49 | Araq | ah gradha, what I wanted to tell you: |
21:37:14 | Araq | I think symlinks for readme will only cause problems on win or somewhere else |
21:40:10 | gradha | want me to update pr_stackoverflow_link2 without symlink and instead duplicate the .txt as .rst? or no .rst at all? |
21:40:28 | fowl | windows vista+ has symlinks |
21:40:30 | Araq | no .rst please |
21:40:38 | Araq | and no symlinks |
21:41:16 | Araq | and we already have that sucking md file for github which can't figure out how to render our .txt file |
21:42:54 | gradha | if 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:36 | NimBot | Araq/Nimrod master 883ad97 Grzegorz Adam Hankiewicz [+0 ±2 -0]: Adds link to stackoverflow nimrod tag in support section. |
21:43:36 | NimBot | Araq/Nimrod master 57e6ba7 Andreas Rumpf [+0 ±2 -0]: Merge pull request #657 from gradha/pr_stackoverflow_link... 2 more lines |
21:45:36 | gradha | since 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:32 | Araq | no. Symlinks are bad, mmkay? |
21:54:52 | Araq | can be used to introduce cycles in the file system. very bad idea. |
21:55:57 | gradha | that's why you have symlinks and hardlinks, recently Apple patched a vulnerability with hardlinks to the containing directory |
21:56:24 | gradha | but symlinks are like .lnk files, those are in xp too |
21:58:04 | * | brson quit (Ping timeout: 264 seconds) |
22:00:16 | gradha | good night |
22:00:23 | * | gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=2IzR_ClTE8Y again) |
22:00:28 | fowl | symlinks are not like lnk files at all |
22:00:36 | fowl | -_- |
22:05:56 | Varriount | Symlinks 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:52 | BitPuffin | is there any library for nimrod for matlab like stuff? |
22:15:06 | BitPuffin | well I guess specifically DSP |
22:15:25 | BitPuffin | science stuffs |
22:16:26 | BitPuffin | Araq: you mentioned that people are using nimrod for scientific computing |
22:17:02 | BitPuffin | libsvm I guess |
22:18:28 | Araq | no I said I used it for scientific computing |
22:18:40 | BitPuffin | ah |
22:18:45 | BitPuffin | well you are a person? |
22:18:46 | Araq | it's been a while though and I lost the code :P |
22:19:02 | BitPuffin | you plus me and we have people |
22:19:05 | fowl | Varriount, right |
22:19:22 | Araq | and it was stuff about enumerating graphs, so not exactly matlab-like stuff |
22:19:38 | BitPuffin | Araq: well I'd like to use it for audio signal processing |
22:20:08 | BitPuffin | it would be kind of cool to graph the stuff too during dev |
22:20:30 | BitPuffin | and while learning |
22:27:23 | * | dymk joined #nimrod |
22:36:05 | Varriount | Araq, just to make sure I know what I'm aiming for, could you give me an example of a generic lambda? |
22:36:24 | Varriount | I think our concepts might differ. |
22:36:42 | dom96 | Araq: Did you fix the uint stuff yet? |
22:36:51 | Araq | dom96: I think so, yes |
22:38:57 | Araq | Varriount: (proc [T](a, b: T): T = a + b)[int](2, 3) |
22:39:28 | Araq | though I guess people also expect inference of the T in many more context than is currently allowed/implemented |
22:39:35 | Araq | *contexts |
22:40:15 | Araq | so perhaps it's not useful right now |
22:40:34 | Araq | and even more inference is lots of hard work |
22:40:53 | Varriount | Araq, 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:21 | dom96 | Araq: Yep, looks like you did. Thanks. |
22:47:12 | BitPuffin | yeah it seems like the whole generic thing is because of one huge issues that causes lots of stuff |
22:47:31 | BitPuffin | possibly also the lambdas |
22:48:22 | Varriount | BitPuffin, in this case, it's because variables *can't* contain uninstantiated, generic procedures, iterators, etc. |
22:48:46 | fowl | i fail to see how var x = proc(foo) = .. could ever work |
22:48:58 | Varriount | Even if the target procedure is marked as a closure. You simply get an error stating that the generic must be instantiated. |
22:50:04 | Varriount | Generic lambdas break this rule. "var foo = proc[T](x, y: T):T = x+y" isn't fully instantiated. |
22:50:44 | Varriount | What happens if you pass such a variable to another function? |
22:51:44 | Varriount | Right 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:40 | BitPuffin | fowl: the same way that proc(foo) = would work |
22:53:00 | BitPuffin | Varriount: gotcha |
22:53:12 | Varriount | Araq, ^ ? |
22:53:18 | fowl | BitPuffin, which is? |
22:53:57 | * | brson joined #nimrod |
22:54:01 | fowl | i thought generic functions dont even exist at all, they can only be instantiated |
22:54:58 | BitPuffin | fowl: implicitly generic? |
22:55:06 | BitPuffin | instantiated for each way it is called |
22:55:16 | Varriount | fowl, 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:56 | fowl | i'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:11 | BitPuffin | yay pa worked like a charm through c2nim! |
23:17:24 | Varriount | pa? |
23:22:52 | fowl | http://rt.com/usa/hawaii-sledgehammer-homeless-possessions-986 |
23:25:45 | BitPuffin | Varriount: portaudio |
23:44:15 | BitPuffin | I'm gonna try and hack together a binding and wrapper tomorrow |
23:45:23 | BitPuffin | no fowl I won't pay you to do it :P |
23:45:49 | fowl | $5? 0.09 btc? |
23:46:41 | BitPuffin | is it even legal to charge $5 :P |
23:46:58 | fowl | why wouldnt it be |
23:47:21 | BitPuffin | dunno |
23:47:27 | BitPuffin | minimum wage and so on |
23:48:49 | BitPuffin | just 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:06 | BitPuffin | fowl: you'd do that for $5? |
23:49:10 | fowl | no |
23:49:13 | fowl | i'll do each for $5 |
23:49:23 | BitPuffin | no deal! |
23:49:35 | fowl | because binding and wrapper are really the same thing |
23:49:36 | BitPuffin | ever $5 is much for me at this point :P |
23:49:43 | BitPuffin | even* |
23:50:15 | BitPuffin | well I think wrapper sounds more like it has already been transformed to feel native |
23:50:20 | BitPuffin | but that's just me maybe |
23:50:20 | fowl | you dont need a higher level thing, then you lose the ability to use the original c documentation/examples for guidance |
23:50:37 | BitPuffin | well yeah that's why I want both |
23:51:00 | BitPuffin | but I want to wrap it with constructor + destructor stuff around it |
23:51:04 | BitPuffin | etc |