| 00:01:48 | * | Boscop quit (Ping timeout: 255 seconds) |
| 00:02:25 | Araq | btw with 'raiseHook' plus a stack of callbacks (with closures) we can get Lisp's condition system :-) |
| 00:02:44 | Araq | and it still maps nicely to C++ :-) |
| 00:04:03 | zahary | yeah, it would be really cool - I remember the axis of eval blog you posted once about it :) |
| 00:05:29 | Araq | for the others then: http://axisofeval.blogspot.de/2011/04/whats-condition-system-and-why-do-you.html |
| 00:05:35 | Araq | here is it again |
| 00:10:55 | zahary | btw yield is supposed to come to javascript at some point in the future |
| 00:10:55 | zahary | I stumbled on this library, which is a perfect match for what I've been trying to explain before about async futures + yield |
| 00:10:56 | zahary | http://taskjs.org/ |
| 00:11:04 | zahary | also this https://github.com/mozilla/task.js |
| 00:13:29 | Araq | I still don't get the asyncio stuff |
| 00:14:01 | Araq | I mean, I'd rather have Go-like lightweight tasks/threads/whatever |
| 00:14:10 | Araq | and do sequential programming with those |
| 00:14:31 | Araq | it's not like you can do anything useful when waiting for a webpage to arrive ... |
| 00:15:40 | Araq | node.js requires manually CPS coding |
| 00:15:46 | * | q66 quit (Quit: Leaving..) |
| 00:15:50 | Araq | it's obvious that's just stupid |
| 00:17:26 | zahary | well, doesn't this yield + futures code look exactly like synchronous programming to you? lightweigh tasks for me means "execution stacks that don't consume too much memory" and generators/couroutines are supposed to be exactly that |
| 00:17:36 | Araq | ah but that's what taskjs is about |
| 00:17:43 | Araq | so yeah I agree |
| 00:18:55 | Araq | speaking of which |
| 00:19:08 | Araq | on a 64bit machine you could have 4 billion stacks of size 4GB |
| 00:19:18 | Araq | the address space allows for that I mean |
| 00:19:42 | Araq | so why is it that we need segmented stacks for lightweight concurrency? |
| 00:19:52 | zahary | you need 3 components for this to work - async event loop that dispatches completion events to their coroutine, working coroutines and a good futures library with all the combinators that are super in creating algorithms for manipulation tasks |
| 00:20:01 | zahary | super useful |
| 00:25:11 | zahary | about the unlimited threads on 64-bit system… I've thought about this too - I don't know enough about all the costs of additional threads for the OS scheduler, etc |
| 00:26:17 | zahary | but in practice if you look at the web servers market for example, it's clear that the async servers are doing better performance-wise even on 64bit systems |
| 00:31:24 | Araq | true but that may be because they better interact with the OS: they tell the OS "look I'm waiting for these things" whereas the thread based solution does that implicitely |
| 00:34:47 | Araq | but I have to sleep now |
| 00:34:49 | Araq | good night |
| 00:35:42 | zahary | good night |
| 00:39:50 | * | Bosc0p is now known as Boscop |
| 00:39:50 | * | Boscop quit (Changing host) |
| 00:39:50 | * | Boscop joined #nimrod |
| 00:58:57 | * | Amrykid quit (Quit: Goodbye!) |
| 01:01:37 | * | Amrykid joined #nimrod |
| 01:01:45 | * | Amrykid quit (Changing host) |
| 01:01:45 | * | Amrykid joined #nimrod |
| 05:33:08 | * | Boscop quit (*.net *.split) |
| 05:33:09 | * | jyyou quit (*.net *.split) |
| 05:33:09 | * | zahary quit (*.net *.split) |
| 05:33:10 | * | Trix[a]r_za quit (*.net *.split) |
| 05:33:10 | * | CodeBlock quit (*.net *.split) |
| 05:33:11 | * | comex quit (*.net *.split) |
| 05:33:13 | * | Reisen quit (*.net *.split) |
| 05:33:13 | * | Nafai quit (*.net *.split) |
| 05:33:13 | * | ccssnet quit (*.net *.split) |
| 05:33:14 | * | silven quit (*.net *.split) |
| 05:33:14 | * | Araq quit (*.net *.split) |
| 05:33:15 | * | XAMPP quit (*.net *.split) |
| 05:33:16 | * | fowl quit (*.net *.split) |
| 05:33:17 | * | shevy quit (*.net *.split) |
| 05:33:17 | * | mal`` quit (*.net *.split) |
| 05:33:18 | * | JStoker quit (*.net *.split) |
| 05:33:18 | * | dom96 quit (*.net *.split) |
| 05:33:19 | * | Roin quit (*.net *.split) |
| 05:33:19 | * | Amrykid quit (*.net *.split) |
| 05:33:20 | * | Tasser quit (*.net *.split) |
| 05:42:47 | * | Roin joined #nimrod |
| 05:42:47 | * | fowl joined #nimrod |
| 05:42:47 | * | XAMPP joined #nimrod |
| 05:42:47 | * | jyyou joined #nimrod |
| 05:42:47 | * | Boscop joined #nimrod |
| 05:42:47 | * | dom96 joined #nimrod |
| 05:42:47 | * | Araq joined #nimrod |
| 05:42:47 | * | silven joined #nimrod |
| 05:42:47 | * | comex joined #nimrod |
| 05:42:47 | * | CodeBlock joined #nimrod |
| 05:42:47 | * | Reisen joined #nimrod |
| 05:42:47 | * | Nafai joined #nimrod |
| 05:42:47 | * | ccssnet joined #nimrod |
| 05:42:47 | * | JStoker joined #nimrod |
| 05:42:47 | * | Tasser joined #nimrod |
| 05:43:04 | * | shevy joined #nimrod |
| 05:43:04 | * | mal`` joined #nimrod |
| 05:43:07 | * | Amrykid joined #nimrod |
| 05:43:12 | * | zahary joined #nimrod |
| 05:43:12 | * | Trix[a]r_za joined #nimrod |
| 08:57:19 | * | q66 joined #nimrod |
| 10:51:53 | dom96 | This would be pretty cool for Nimrod's JS backend: http://www.reddit.com/r/haskell/comments/wxi3l/fay_programming_language_a_strict_subset_of/c5hbvss |
| 12:08:25 | * | Bosc0p joined #nimrod |
| 12:11:04 | * | Boscop quit (Ping timeout: 255 seconds) |
| 13:56:06 | * | Trix[a]r_za is now known as Trixar_za |
| 14:02:05 | Araq | dom96: all that it takes is proper documentation |
| 14:02:14 | Araq | and good compiler error messages |
| 14:02:34 | dom96 | huh what? |
| 14:02:37 | Araq | we can only translate a subset to JS anyway; 'cast' for example cannot be supported |
| 14:02:41 | Trixar_za | Btw Araq, somebody finally packaged Nimrod (although the old stable) for SliTaz |
| 14:02:50 | dom96 | oh, you're talking about that. |
| 14:03:31 | Araq | Trixar_za: that's .... nice I guess |
| 14:04:13 | Trixar_za | Yeah, seems when I don't try to strong arm the use of Nimrod into SliTaz, but rather start an open conversation (and Q&A) about it, people are more willing to accept it |
| 14:04:18 | Trixar_za | People are weird |
| 14:06:41 | Araq | people don't actually can't grasp arguments |
| 14:06:52 | Araq | (lol, broken sentence ...) |
| 14:07:35 | Trixar_za | You talk like you code |
| 14:07:36 | Trixar_za | :P |
| 14:07:37 | * | Trixar_za runs |
| 14:09:37 | Araq | my code is a piece of art :P |
| 14:10:30 | Trixar_za | http://listengine.tuxfamily.org/lists.tuxfamily.org/slitaz/2012/07/msg00014.html |
| 14:10:44 | Trixar_za | See - weird how it combined those two threads though |
| 14:10:58 | Trixar_za | That's what I get for clicking reply rather than starting a new thread |
| 14:10:58 | Trixar_za | :P |
| 14:11:50 | Araq | I never read what others say about nimrod :P |
| 14:12:09 | Araq | danger is too high that I get annoyed |
| 14:12:30 | dom96 | Trixar_za: Do people actually use Aporia for things other than Nimrod, because if they do then I will try to make it more saner for other common languages I suppose. :) |
| 14:12:56 | dom96 | Mailing lists confuse the hell out of me... |
| 14:12:57 | Trixar_za | Not that I would know dom96, but I use it for working with python code too |
| 14:13:04 | dom96 | Trixar_za: cool |
| 14:13:13 | Trixar_za | Nah, it's my bad mailing list practices |
| 14:13:22 | Trixar_za | I should rather start new threads than use reply |
| 14:13:33 | dom96 | Why don't they create a saner viewer? |
| 14:13:42 | dom96 | This feels like 70s technology... :P |
| 14:13:51 | Trixar_za | lol, it's a free service |
| 14:14:48 | dom96 | But anyway, i'm surprised that you find Aporia better than gedit. |
| 14:15:04 | Araq | dom96: it's the 'search' feature :D |
| 14:15:09 | Araq | it kicks ass |
| 14:15:13 | Trixar_za | Well, I can't use gedit with SliTaz, since gedit by design is WAY too integrated into GNOME |
| 14:15:36 | Araq | as it doesn't open in a window overlaying your code XD |
| 14:15:38 | Trixar_za | And recently geany has become resources heavy and slow |
| 14:15:56 | Trixar_za | And Beaver just sucks :P |
| 14:16:03 | Araq | I looked at geany's source browsing feature |
| 14:16:03 | dom96 | I see. In that case I will make sure I never do anything to integrate Aporia at all with GNOME :D |
| 14:16:23 | dom96 | Araq: Actually, the new gedit has that feature now too. |
| 14:16:28 | Trixar_za | GTK is alright, since that's what we use :P |
| 14:16:34 | dom96 | But the stupid thing disappears when there are no more results... |
| 14:16:54 | dom96 | Causing you to insert many new lines into your code and causing me to get pissed off :P |
| 14:17:04 | Araq | they can't even design a search widget |
| 14:17:17 | Araq | like most other text editors |
| 14:17:23 | dom96 | Araq: And you still need to test the new error list feature!!! |
| 14:17:32 | Trixar_za | A feature I would like dom96, is a tabulation to spaces converter |
| 14:17:34 | Araq | yeah I know, sorry |
| 14:17:39 | Trixar_za | like geany has. Then it can do everything I need |
| 14:17:39 | Trixar_za | :p |
| 14:18:01 | dom96 | Trixar_za: Submit an issue on github and I shall get to it eventually :) |
| 14:18:38 | dom96 | Do you just want a simple thing which basically does s/\t/ / ? |
| 14:18:47 | dom96 | or rather a couple of spaces. |
| 14:20:22 | Trixar_za | Well, the one in geany ops up and asks you how many spaces an tabulation should be replaced with |
| 14:20:34 | Trixar_za | pops up a dialog* |
| 14:21:00 | Trixar_za | Great, I'm speaking like Araq now |
| 14:24:13 | Araq | Trixar_za: I had 3 beers already :P |
| 14:24:37 | Araq | so I'm allowed to stutter |
| 14:25:01 | Trixar_za | Hopefully you're not at the drunk-dialing stage |
| 14:25:12 | Araq | far from it |
| 14:25:26 | Araq | I'm at the "dont care about single letters" stage |
| 14:39:12 | dom96 | cool: http://hg.slitaz.org/nim-tools/file/088ebb05975c |
| 14:39:15 | * | dom96 looks at the code |
| 14:39:54 | dom96 | Araq: Look what he wrote: http://hg.slitaz.org/nim-tools/file/088ebb05975c/tazpkg-web/i18n.nim |
| 14:40:34 | Trixar_za | His understanding of Nimrod amazes and confuses me at the same time :P |
| 14:41:13 | dom96 | He could use Nimrod's templating system for this: http://hg.slitaz.org/nim-tools/file/088ebb05975c/tazpkg-web/page.nim |
| 14:41:36 | dom96 | Trixar_za: Does he hang out on IRC at all? |
| 14:41:59 | Trixar_za | Sometimes. He's more active on the forums though |
| 14:42:24 | dom96 | Does he know about Nimrod's forum? |
| 14:42:30 | Trixar_za | Yes |
| 14:42:46 | Trixar_za | I pointed it out once as an example of what Nimrod can do |
| 14:44:14 | dom96 | This is pretty cool. |
| 14:44:25 | dom96 | I need to check out SliTaz sometime. |
| 14:44:49 | Trixar_za | lol, you are idling in the channel |
| 14:45:09 | Trixar_za | We're actually having a cross-pollination of the two projects now |
| 14:45:17 | dom96 | I idle in way too many channels :P |
| 14:49:50 | dom96 | Trixar_za: Can SliTaz run on ARM? :P |
| 14:50:04 | Trixar_za | They're experimenting with the idea @ dom96 |
| 14:50:26 | Trixar_za | pankso also wrote some cross-compiling tools |
| 14:50:46 | dom96 | From the description on the site it seems like it would be a perfect distro for the Raspberry Pi. |
| 14:53:30 | * | shevy quit (Ping timeout: 264 seconds) |
| 15:07:14 | * | shevy joined #nimrod |
| 15:07:27 | Araq | nice ... you can write a forum in nimrod ... |
| 15:07:39 | Araq | that's surely way more impressive than a *compiler* ... |
| 15:07:54 | dom96 | of course it is. :D |
| 15:08:17 | Araq | or the whole stdlib including a world-class garbage collector ... |
| 15:09:10 | Trixar_za | Which means absolutely nothing to the layman |
| 15:09:28 | Trixar_za | You have to show the natives pretty trinkets to get their attention |
| 15:10:03 | Araq | I see alright |
| 15:24:59 | dom96 | Trixar_za: What GTK theme, icon theme et al. does SliTaz use in this screenshot? http://upload.wikimedia.org/wikipedia/commons/e/ee/Slitaz-4.0.png |
| 15:26:10 | Trixar_za | Not exactly sure dom96. The icon theme is the new SliTaz standard, but it's based on the Ubuntu boxes icon theme I think |
| 15:26:30 | * | dom96 likes the look of it heh |
| 15:26:40 | dom96 | I want to copy it for my desktop now... |
| 15:26:47 | Trixar_za | The panels are using the SliTaz Brown theme |
| 15:27:04 | Trixar_za | And it's two Lxpanel panels :P |
| 15:27:42 | Trixar_za | It also uses the polar mouse cursor theme, which you don't see in the screenshots |
| 15:27:54 | dom96 | hrm, i'm running xfce. Any ideas how to get the exact same look and feel? :P |
| 15:29:46 | Trixar_za | Ah |
| 15:29:48 | Trixar_za | I checked |
| 15:29:55 | Trixar_za | The icon theme is called Faenza |
| 15:31:47 | Trixar_za | As for the Brown theme, it's mostly just an orange and brown replacement of the standard Clearlooks |
| 15:31:55 | Trixar_za | :P |
| 15:32:14 | dom96 | I see. |
| 15:32:16 | dom96 | thanks |
| 15:34:58 | dom96 | Faenza is quite nice :D |
| 15:36:40 | Trixar_za | It's better than the old one we were using :P |
| 15:37:20 | Trixar_za | Which was like a standard gtk theme |
| 15:37:21 | Trixar_za | I forget it's name |
| 15:37:22 | Trixar_za | :P |
| 15:37:44 | Trixar_za | Tango |
| 15:37:48 | Trixar_za | that was it's name |
| 15:43:17 | dom96 | ooh, Aporia has nice icons now too :P |
| 15:44:26 | Trixar_za | Yeah, I kind of just added that one from the Faenza icon set |
| 15:44:26 | Trixar_za | :P |
| 15:44:28 | * | apriori_ joined #nimrod |
| 15:45:20 | apriori_ | hey guys |
| 15:45:31 | Trixar_za | Hey apriori_ |
| 15:45:34 | apriori_ | did something change with the type system in the last say 2 weeks? |
| 15:46:12 | apriori_ | I've got a strange case in which nimrod seems to implicitly cast a cint into int and won't allow a call to a function which takes a cint |
| 15:46:39 | dom96 | Yes, new "integer promotion" rules have been introduced |
| 15:47:18 | apriori_ | so.. I guess one should only use cint on external interfaces then and rather use normal ints in new code? |
| 15:48:59 | dom96 | I think so. Take a look here for more info: http://forum.nimrod-code.org/t/48 |
| 15:49:18 | apriori_ | dom96: thank you |
| 15:49:27 | dom96 | Unsigned ints are also available now. So you may need to use cuint in some places. |
| 15:49:52 | dom96 | It depends on what you are wrapping. In normal Nimrod code you probably should only use only the int types. |
| 15:50:26 | apriori_ | well, this results in some type inconsistenties |
| 15:50:49 | apriori_ | say, I wrap OpenCL, which has several functions taking ints (one needs cint for the wrapper) |
| 15:51:06 | apriori_ | with the current promotion rules I can't reuse the type aliases used in the wrapper |
| 15:51:19 | apriori_ | and need to "guess" what happened to those types used in the interface |
| 15:52:48 | dom96 | I think Araq is still looking for feedback on this, I recall him saying that if it becomes too much of a pain he will remove it. |
| 15:53:14 | dom96 | You're going to have to wait until he shows up unfortunately. I'm not sure if he's here or not. |
| 15:54:21 | apriori_ | okay |
| 15:59:45 | Trixar_za | He may be passed out by now |
| 15:59:59 | Trixar_za | We all know Germans are weak drinkers :P |
| 16:00:08 | apriori_ | Trixar_za: he drunk? |
| 16:00:21 | Trixar_za | Last we heard, he was on 3 beers |
| 16:00:24 | apriori_ | Trixar_za: and.. I'm half-german, too ;) |
| 16:00:51 | dom96 | The Polish are obviously the best drinkers. :P |
| 16:01:01 | Trixar_za | Nope, South Africans are |
| 16:01:02 | Trixar_za | :P |
| 16:01:20 | apriori_ | don't try to compete with russians |
| 16:01:22 | Trixar_za | Although we sometimes voluntarily go sit under the table |
| 16:01:25 | Trixar_za | Especially the women |
| 16:04:06 | apriori_ | I was once invited to a drink by a russian group... 4 people in total |
| 16:04:42 | Trixar_za | Ouch, Russians are in a league of their own |
| 16:05:01 | Trixar_za | Although I do admit to rolling around in the snow naked once |
| 16:05:15 | apriori_ | after 3 series of 20 tequila shots and 3.5 l bacardi cola I had to give up.. an really, I was totally beaten by a russian women of about 99 lbs |
| 16:05:24 | apriori_ | (those amounts as a group, not only me) |
| 16:05:46 | Trixar_za | Yeah, Russian women can kick ass |
| 16:08:45 | Araq | back |
| 16:08:50 | Araq | (an sober :P ) |
| 16:08:54 | Araq | damn |
| 16:08:56 | apriori_ | :P |
| 16:08:57 | Araq | XD |
| 16:08:57 | apriori_ | fail |
| 16:08:59 | apriori_ | :D |
| 16:09:40 | Araq | apriori_: the compiler used to allow implicit conversions from 'int' to 'int32' (= cint) |
| 16:09:53 | Araq | but since this loses information, I disallowed it |
| 16:10:14 | Araq | however the compiler now gives int literals their own type to lessen the pain |
| 16:10:32 | apriori_ | yeah, literals... |
| 16:10:47 | apriori_ | but the question, what would be the proper way to solve the showed issue |
| 16:11:06 | Araq | which issue? the wrappers need to use what's necessary |
| 16:11:18 | apriori_ | wait a sec |
| 16:13:16 | apriori_ | http://pastebin.com/zfCkxG8K |
| 16:14:44 | Araq | sorry have to go |
| 16:14:49 | apriori_ | ok |
| 16:14:51 | Araq | I'll be back in about an hour |
| 16:14:57 | apriori_ | okay |
| 16:14:58 | Araq | bye |
| 16:15:00 | apriori_ | bye |
| 16:16:03 | dom96 | hrm, that seems like a compiler bug. It happens on `clError(error)` right? |
| 16:16:47 | apriori_ | y |
| 16:17:06 | apriori_ | like.. it converts TCLInt (cint) -> int and can't convert that back to cint again |
| 16:17:17 | apriori_ | which is somewhat right.. but why did it convert cint -> int in the first place? |
| 16:17:32 | dom96 | I see. |
| 16:17:41 | dom96 | So error is declared as: var error: int |
| 16:17:49 | apriori_ | nope, type inferred |
| 16:17:59 | dom96 | where is error declared? |
| 16:18:01 | apriori_ | oh, hell no |
| 16:18:03 | apriori_ | var error = 0 |
| 16:18:06 | apriori_ | that's the error |
| 16:18:26 | dom96 | Yes. Just make it `0.cint` |
| 16:18:32 | dom96 | I guess. |
| 16:19:05 | apriori_ | yeah, that works |
| 16:19:20 | apriori_ | so my error was the initialization.. and the resulting type inference |
| 16:20:20 | dom96 | yeah |
| 16:56:49 | dom96 | apriori_: Done anything interesting in OpenCL using Nimrod yet? |
| 16:56:58 | apriori_ | not quite, due to lack of time |
| 16:57:16 | apriori_ | currently I'm thinking about writing an API on top of my opencl binding |
| 16:57:22 | apriori_ | because I hate the usual C-API so much |
| 16:58:34 | dom96 | great idea. |
| 17:00:41 | apriori_ | yeah, but I need to think more about that.. how to design it etc. |
| 17:00:50 | apriori_ | because I can't really fix the design flaws in OpenCL |
| 17:04:14 | apriori_ | funny thing is.. even khronos realized what a fucked up mess their C API is.. and wrote a C++ API, which heavily uses template metaprogramming to build a sane API |
| 17:05:31 | dom96 | It seems to me that most C APIs are fucked up in some way or another unfortunately. |
| 17:11:24 | apriori_ | yeah, well.. it actually makes sense, because the C API is usually the absolute basic layer of an API |
| 17:11:37 | apriori_ | I really doubt that its actually intended to be used directly |
| 17:12:45 | apriori_ | one could, of course.. but it's really unconvenient |
| 17:13:26 | Araq | back |
| 17:14:16 | Araq | so you found the problem, apriori_ ? |
| 17:14:46 | apriori_ | Araq: yup, my error.. initialized a variable with 0 and expected it to be compatible to cint, while it wasn't |
| 17:15:21 | apriori_ | cint->int was working, but of course not int->cint |
| 17:24:36 | * | Bosc0p is now known as Boscop |
| 17:24:36 | * | Boscop quit (Changing host) |
| 17:24:36 | * | Boscop joined #nimrod |
| 17:31:06 | * | Trixar_za is now known as Trix[a]r_za |
| 17:49:16 | Araq | so apriori_, I'm willing to make the codegen support opencl |
| 17:49:29 | Araq | but you need to tell me what you need and test it :-) |
| 17:49:58 | apriori_ | Araq: as germans say: "das macht ein dickes fass auf" |
| 17:50:17 | apriori_ | I've thought about that quite a bit.. and it's really far from being easy. |
| 17:50:50 | apriori_ | the problem was with..macros getting the AST of e.g. a block.. but maybe it will need a hell lot more context |
| 17:50:58 | apriori_ | like the declaration of variables mentioned in the AST etc. |
| 17:51:18 | Araq | I'm not talking about macros |
| 17:51:31 | Araq | I'm talking about an 'opencl' pragma for procs |
| 17:51:40 | Araq | that are compiled into some other file |
| 17:51:47 | apriori_ | yeah, ok... |
| 17:51:57 | apriori_ | but that's not even easy, either ;) |
| 17:52:27 | apriori_ | for such a thing to work properly, one needs to add some annotations to that proc.. some meta information |
| 17:53:02 | apriori_ | because, as you of course know, there is no single way to do parallelism properly.. a compiler nearly always needs some extra info |
| 17:53:12 | apriori_ | but anyway.. I'll think more about it, when I have time. |
| 17:57:39 | Araq | alright |
| 17:58:32 | apriori_ | but you're of course right.. some openmp like annotations for procs for opencl would be awesome |
| 18:07:51 | Araq | well before you implement a macro that traverses the Nimrod AST and produces "opencl C", we should re-use the compiler's existing C code generator |
| 18:08:10 | Araq | that's my point |
| 18:16:57 | apriori_ | okay |
| 18:26:40 | apriori_ | I need to go now |
| 18:26:42 | apriori_ | bye |
| 18:26:43 | * | apriori_ quit (Quit: Konversation terminated!) |
| 19:36:43 | * | shevy quit (Remote host closed the connection) |
| 20:15:16 | Araq | ping zahary |
| 20:19:11 | zahary | hi |
| 20:19:25 | Araq | I'm puzzled by the DLL problems |
| 20:19:52 | Araq | I tested the server.nim and it failed to load nimrtl_popFrame |
| 20:20:47 | Araq | well it crashed with a nil error (call to a nil proc pointer) |
| 20:21:00 | Araq | argh ... hard to explain |
| 20:21:25 | Araq | well the problem amounts to: tinkering with this code seems to trigger "cannot load XYZ" errors randomly |
| 20:21:41 | Araq | it's deterministic |
| 20:21:56 | Araq | but some changes trigger it |
| 20:22:03 | Araq | for instance if I do in system.nim: |
| 20:22:09 | Araq | when defined(useNimRtl): |
| 20:22:17 | Araq | {.deadCodeElim: on.} |
| 20:22:31 | Araq | then the error pops up ... which doesn't make much sense |
| 20:23:32 | zahary | are you getting random failures of the system function like dlsym or just the initialization code for some proc disappears? |
| 20:24:18 | Araq | random failures of dlsym |
| 20:27:04 | zahary | sounds crazy |
| 20:29:38 | Araq | nm lists 'nimrtl_popFrame' and the client imports it too |
| 20:29:43 | Araq | and now it works .. |
| 20:37:31 | Araq | btw I'm checking out various coroutine libraries for C/C++ |
| 20:37:45 | Araq | as I want the stack flipping |
| 20:38:02 | Araq | and then I'll see how to abstract over that with languages features |
| 20:38:28 | Araq | I remember iterating over all bernoulli graphs in python and it was a PITA |
| 20:38:46 | Araq | don't want that in Nimrod |
| 20:44:21 | zahary | well, the APIs are pretty straight forward I think - asymmetric coroutines have a type like Corotoutine[In, Out], you pass them around as values and they have yield and resume methods |
| 20:46:22 | Araq | well as I said I need to modify the implementation for the GC |
| 20:46:37 | zahary | you need to wrap it a little bit |
| 20:47:34 | Araq | I may also rewrite it in Nimrod ;-) |
| 20:47:59 | zahary | if you want more code to support :) |
| 20:48:55 | Araq | it's likely not more than 100 lines |
| 20:49:56 | Araq | most C/C++ code consists of lots of tamtam ;-) |
| 20:50:59 | zahary | fibers on windows are very annoying because there is a initialization function you are supposed to call exactly once per thread |
| 20:51:27 | zahary | so, if you make a dumbed down library, you must use thread local storage and less efficient creation code |
| 20:52:37 | Araq | I have to use thread local storage for the linked lists of stacks already |
| 20:52:46 | Araq | the GC needs to traverse all the stacks |
| 20:53:12 | Araq | the nice thing though is that no locks are required and we have no concurrency issues with coroutines |
| 20:54:18 | Araq | I think it's a fundamental error to have "leight weight" concurrency |
| 20:55:04 | Araq | it seems much more preferable to have coroutines + threads and not mix these two |
| 20:55:50 | Araq | if you conflate them a la erlang and go you have locking issues even in the "coroutines" |
| 20:55:55 | Araq | (if you know what I mean) |
| 20:57:36 | zahary | I usually vote for plurality of implementations - the programmer (or some fancier system architect) should be educated enough to decide what's the best approach for his problem |
| 21:03:35 | Araq | I know that's your opinion, can't see how it applies here though |
| 21:04:54 | Araq | I'm arguing that coroutines + threads separated > erlang styled concurrency |
| 21:05:56 | zahary | what do you mean by separated? |
| 21:06:40 | zahary | they are usually separated in the sense that when you use coroutines, you have a single thread (or multiple threads, but without data sharing) |
| 21:07:26 | Araq | well yes, I'm arguing this "old" way is nice |
| 21:08:00 | Araq | ok admittedly, erlang has no shared state so it's a non issue there too |
| 21:08:10 | Araq | but Go does |
| 21:08:22 | zahary | what's special about erlang besides the message passing emphasis? |
| 21:11:46 | Araq | the erlang runtime provides light weight processes |
| 21:12:02 | Araq | these are implemented as coroutines running on a thread pool |
| 21:12:37 | Araq | which means that every coroutine is exposed to non deterministic behaviour |
| 21:13:14 | zahary | and erlang uses cooperative scheduling? |
| 21:14:00 | Araq | no |
| 21:14:30 | zahary | so it uses what is called green threads? the "threads" are scheduled by the erlang VM |
| 21:14:36 | Araq | exactly |
| 21:15:23 | zahary | well, that's just regular threads with some additional diagnostics and introspection support - I'm not exited much about it either |
| 21:15:38 | zahary | not to mention that languages with green threads usually have global locks and the like |
| 21:16:05 | Araq | the usual argument is that their overhead is so small that you use millions of them |
| 21:16:20 | Araq | changing the way to program |
| 21:19:30 | zahary | dunno, there is no faster way to implement preemptive scheduling than what the OS is doing (copying a bunch of registers and signal handlers) |
| 21:20:02 | zahary | and million of preemptive threads is certainly not easier, but harder (but that's your point I think) |
| 21:20:15 | Araq | (yes) |
| 21:20:34 | Araq | er no not really |
| 21:20:55 | Araq | er yes |
| 21:21:06 | zahary | data parallel code is the story where you want more threads (and possible the ability to transparently distribute computations to other machines too) |
| 21:21:37 | Araq | I mean cooperative is much easier than preemptive |
| 21:21:50 | Araq | and I think nobody disagrees really |
| 21:22:06 | Araq | preemptive is of course more efficient for multiple cores |
| 21:23:01 | Araq | but data parallel is only an optimization |
| 21:23:04 | zahary | well, preemptive was invented to deal with blocking and bad programs (a single bad program in cooperative system brings all others to a halt) |
| 21:23:33 | Araq | you could do it sequentially and in fact that would be preferable (easier code) |
| 21:24:36 | Araq | preemptive introduces nondeterminism |
| 21:24:47 | zahary | well, what other justifications for concurrency exist besides performance - that's the whole point |
| 21:25:36 | Araq | nondeterminism is far worse unless you are talking about an operating system |
| 21:26:16 | zahary | but yeah - I've shown you yesterday what I believe is better than blocking multi-threaded code |
| 21:26:47 | Araq | for an OS of course cooperative is stupid |
| 21:27:32 | zahary | in the game engines, we try to have a replay feature where every user and network input is recorded and even tho parallelism is used in some part of the engine, you still want to have deterministic replays |
| 21:27:44 | zahary | it's good for debugging and it's good for performance testing |
| 21:29:06 | zahary | furthermore, the network protocols of some games send only delta updates or commands that must have the exact same side effect on all connected systems |
| 21:29:39 | Araq | I can image that |
| 21:29:51 | Araq | wouldn't do anything else either :-) |
| 21:30:07 | zahary | and yet, I've not seen a game in the recent years that doesn't max out all CPUs - as I've explained there is plenty of opportunities for data parallelism and that's where you must put your efforts |
| 21:30:45 | Araq | that's new, I remember you saying the opposite |
| 21:30:57 | zahary | hmm, don't think so |
| 21:31:16 | Araq | alright |
| 21:31:43 | zahary | I explained that we dont' have "wild" multi-threading? only for specific data parallel algorithms |
| 21:31:56 | Araq | yeah I guess that's it |
| 21:34:28 | Araq | speaking of which ... in Dialbo 3 my character is often "beamed back" a bit |
| 21:34:46 | Araq | I guess the server forces its world view on my machine |
| 21:35:00 | Araq | to prevent discrepancies |
| 21:35:11 | Araq | it's however quite noticable |
| 21:35:41 | Araq | the speculative logic must really suck :D |
| 21:36:00 | zahary | yeah, this is called client side prediction - if you waited all input to be confirmed by the server then there would be significant latency after each key stroke |
| 21:36:28 | zahary | so you computer speculates what the server is going to answer, but if it didn't guess right you must fix this somehow |
| 21:37:13 | zahary | some games try to gradually interpolate your position until you are aligned with the server, but obviously it really depends on lag, the accumulated error, etc |
| 21:37:39 | Araq | yeah I remember reading about it |
| 21:38:00 | Araq | was already done back in the quake days afaik |
| 21:38:11 | zahary | yep |
| 21:38:39 | zahary | it's hard thing to do, really - especially with modern physics engines |
| 21:46:16 | Tasser | so you execute code twice - once on the client, once on the server? |
| 21:49:37 | Araq | quite interesting forum post has arrived :D |
| 21:50:26 | Araq | we need nimbot to track the forum |
| 21:50:34 | Tasser | link? |
| 21:50:35 | Araq | Tasser: yes |
| 21:50:44 | Araq | http://forum.nimrod-code.org/t/59 |
| 21:50:56 | zahary | well, of course - I think there were some very old DOS games that first implemented multiplayer and it was possible for one of the clients to send over the network "I just killed you" |
| 21:50:56 | dom96 | Araq: hehe, I was actually thinking about implementing that |
| 21:51:42 | Araq | dom96: I wouldn't expect anything else ;-) |
| 21:51:53 | dom96 | :) |
| 21:52:49 | zahary | btw I was about to bring 3) at some point :) |
| 21:53:27 | zahary | we need a configurable copyright banner in the generated code and more liberal license for the library |
| 21:54:03 | Araq | both are fine with me |
| 21:54:12 | Araq | BSD for the library? |
| 21:54:30 | * | Trix[a]r_za is now known as Trixar_za |
| 21:54:35 | Araq | I'd like the compiler itself to stay GPL version 2 though |
| 21:54:36 | zahary | most "professional" companies use apache these days |
| 21:54:54 | zahary | yeah, I agree |
| 21:56:08 | Araq | what's the difference between apache and bsd license? |
| 21:56:35 | Trixar_za | What's with the licenses? Oo |
| 21:56:43 | Tasser | Araq, apache adds that you may not name your fork 'nimrod' |
| 21:56:55 | Tasser | for the lulz: http://blog.fefe.de/?ts=aef29160 |
| 21:57:16 | zahary | I'm not interested in these law details either, but it has something to do with the additional patent related texts inside it |
| 21:57:22 | Trixar_za | Personally I like the Beer License or CC0 |
| 21:57:34 | Trixar_za | But I really don't like supporting stuff I create |
| 21:57:35 | Trixar_za | :P |
| 21:58:34 | Trixar_za | Beerware* |
| 21:59:29 | Araq | Tasser: that must be why no conservative party is left in germany ... they are all thinking too much ... |
| 21:59:37 | Trixar_za | And the WTFPL: http://en.wikipedia.org/wiki/WTFPL |
| 21:59:46 | Trixar_za | GPL compatible too :/ |
| 21:59:48 | dom96 | Trixar_za: You like all the silly licenses, eh? |
| 21:59:54 | Trixar_za | Yes dom96 |
| 22:00:13 | Trixar_za | They're all generally public domain licenses (or anti-licenses) |
| 22:00:19 | * | dom96 does not really pay attention to licensing. |
| 22:00:31 | dom96 | Because my projects are usually too small, so it doesn't matter. |
| 22:00:56 | Trixar_za | The GPL is generally permissive enough. Well GPL 2 anyway |
| 22:01:04 | Trixar_za | the GPL 3 adds a few things |
| 22:03:49 | Trixar_za | Sometimes I just like the idea of creating something for the sake of creating it. Then I really don't care what happens to it. |
| 22:04:04 | Trixar_za | ... somehow I may one day be a terrible father |
| 22:05:54 | Araq | alright I'll read some licenses and then decide |
| 22:06:07 | * | Araq cares about these things |
| 22:06:28 | Trixar_za | Wow, ZeroBin is under the WTFPL |
| 22:08:08 | Araq | nimbase.h could actually be public domain |
| 22:08:14 | Trixar_za | There are generally 4 choices: Apache, GPL, Creative Commons and BSD. Most other licenses are variations of them. |
| 22:08:18 | Araq | it's irrelevant |
| 22:10:07 | Trixar_za | What level of control do you want? |
| 22:10:30 | ccssnet | Artistic 2.0 license is a decent one as well. its comparable to gpl/bsd/CC-BY-SA |
| 22:10:48 | dom96 | THere was this website... |
| 22:10:58 | dom96 | which was basically a nice explanation of each software license |
| 22:11:02 | dom96 | Saw it on reddit a while ago. |
| 22:11:30 | ccssnet | http://www.gnu.org/licenses/license-list.html |
| 22:11:38 | ccssnet | there ^ most likely |
| 22:11:56 | Trixar_za | Yeah, I use the Creative Commons Attribution Share Alike license myself |
| 22:11:59 | Trixar_za | For my Wiki |
| 22:12:23 | ccssnet | cool. i use it for my site: atccss.net |
| 22:12:36 | ccssnet | i use gpl-v2 for most of my scripting currently |
| 22:12:41 | Trixar_za | http://www.irc-wiki.org |
| 22:12:42 | Trixar_za | :P |
| 22:13:24 | ccssnet | your site Trixar_za ? |
| 22:13:30 | Trixar_za | I still have to fix some stuff with it |
| 22:13:32 | Trixar_za | Yes ccssnet |
| 22:13:35 | ccssnet | cool |
| 22:13:38 | Trixar_za | I'm one of the founders |
| 22:13:48 | ccssnet | i got a list of clients to add to it then i see like 5 missing already |
| 22:14:25 | ccssnet | ill get to it later. for now bookmarked |
| 22:14:26 | Trixar_za | Most of the entries need updating too |
| 22:14:27 | Trixar_za | lol |
| 22:15:49 | Trixar_za | Just use one of the other entries as a template |
| 22:15:58 | ccssnet | just worked for 5 hours in the sun pulling and cutting vines and small trees |
| 22:16:11 | Trixar_za | The main page gets updated automatically based on the categories |
| 22:16:28 | ccssnet | so im kinda tired and lazy atm |
| 22:16:44 | Trixar_za | That's most people including me |
| 22:17:02 | ccssnet | lol |
| 22:17:39 | Trixar_za | I still have to work on a new theme based on Vector |
| 22:17:45 | Trixar_za | (the current default theme of Wikipedia) |
| 22:19:09 | Trixar_za | You know how my temper gets me in trouble with SliTaz |
| 22:19:20 | Trixar_za | Well, that's how IRC Wiki got made. First boredom, then me losing my temper and making it better out of spite |
| 22:19:47 | Trixar_za | Now it's the only IRC related Wiki still alive :P |
| 22:19:49 | Trixar_za | So I guess I win |
| 22:22:39 | Araq | btw what's wrong with lib*.so on ios? |
| 22:23:07 | Araq | any reason why the guy can't use that instead? |
| 22:23:28 | Araq | (except that it's currently kinda broken...) |
| 22:23:30 | ccssnet | eh? |
| 22:23:47 | Trixar_za | Distribute or access? |
| 22:24:09 | ccssnet | lib*.so is like saying all linking or filesystem is broken |
| 22:26:05 | dom96 | Does iOS even support *.so? |
| 22:26:46 | ccssnet | never used it O:-) |
| 22:27:01 | Araq | it should ... |
| 22:27:09 | Araq | can't image it doesn't |
| 22:27:23 | dom96 | I guess it would be pretty weird if it didn't. |
| 22:27:44 | ccssnet | it possibly has some sort of high security access controls? |
| 22:27:46 | ccssnet | unlikely |
| 22:27:57 | ccssnet | like. permision to link |
| 22:27:59 | ccssnet | or something |
| 22:28:02 | dom96 | yeah |
| 22:28:46 | ccssnet | but i imagine ACL has somewhat that ability depending on how the FS is setup |
| 22:29:15 | ccssnet | ACL refering to anything GPL based |
| 22:34:23 | Araq | your commit messages are too long, dom96 ;-) |
| 22:34:23 | ccssnet | gaze what acl |
| 22:34:25 | ccssnet | acl: |
| 22:34:27 | ccssnet | acl is a file system access control lists management program. |
| 22:34:38 | ccssnet | gaze what gradm |
| 22:34:41 | ccssnet | gradm: |
| 22:34:43 | ccssnet | The userspace interface to the ACL system in grsecurity. |
| 22:34:45 | ccssnet | Features password authentication and an enabling/disabling feature. |
| 22:34:48 | dom96 | Araq: oh? Is there a law which states I cannot make them longer than X amount of characters? :P |
| 22:35:01 | Araq | yes |
| 22:35:09 | Araq | "Added asyncio... 2 more lines" :P |
| 22:35:42 | Araq | nimbot watches the law :P |
| 22:35:48 | ccssnet | Araq: i will assume iOS uses 1 of the 2 mentioned ACL's above. check if it has the filesystem seperated for security reasons |
| 22:35:52 | dom96 | hehe |
| 22:36:01 | * | dom96 needs to fix that |
| 22:36:08 | dom96 | it should be 'x more characters' |
| 22:36:18 | * | dom96 isn't sure how he managed that |
| 22:36:40 | Araq | "2 more characters?" |
| 22:36:58 | dom96 | That's definitely wrong too |
| 22:37:09 | dom96 | That is what I am wondering, where is it getting the 2 from? |
| 22:46:17 | ccssnet | Araq: http://pastebin.com/WW9aZ11w |
| 22:47:11 | Araq | ccssnet: thanks, but I don't care :-) |
| 22:47:44 | ccssnet | ok |
| 22:52:14 | Araq | hrm I guess luacoco is the best lib |
| 22:52:23 | Araq | as it's from Mike Pall |
| 22:53:03 | * | Trixar_za doesn't know who Mike Pall is |
| 22:53:08 | Araq | which reminds me ... |
| 22:53:21 | Araq | I always wanted to study luajit's source code |
| 22:53:22 | Trixar_za | I just won't ever work with John Murga |
| 22:53:32 | Trixar_za | He's an idiot that doesn't understand the GPL AT ALL |
| 22:53:45 | Araq | "Murga" sounds funny to a German :D |
| 22:54:09 | Trixar_za | He created MurgaLua which was used by Damn Small Linux for it's application development |
| 22:54:28 | Trixar_za | They modified it, but ol' Johnny boy had some weird ideas about that |
| 22:54:42 | Trixar_za | He even called the fair use of the GPL code 'illegal' |
| 22:55:08 | Trixar_za | Let's just say, he's personally responsible (by his idiocy) for the demise of DSL |
| 22:55:13 | Trixar_za | So yeah, I don't like him :P |
| 22:55:22 | ccssnet | Araq: whats Murga mean in german? |
| 22:55:59 | ccssnet | Trixar_za: ya i guess that would suck |
| 22:56:01 | Araq | ccssnet: nothing but it sounds funny |
| 22:56:13 | ccssnet | DSL was good. i liked lua use in it |
| 22:56:30 | ccssnet | tinycore is interesting |
| 22:56:38 | ccssnet | id rather use slitaz though |
| 22:56:38 | Trixar_za | Anyway, he's just my token example of when somebody doesn't understand the license they release they're software under |
| 22:57:09 | Trixar_za | Actually TinyCore was started by the guy from the DSL team that disagreed with Mr. Murga |
| 22:57:22 | ccssnet | Trixar_za: good to know |
| 22:57:51 | ccssnet | so two main devs for DSL? |
| 22:57:53 | Araq | I have to sleep now |
| 22:57:57 | Araq | good night |
| 22:58:02 | ccssnet | gn Araq |
| 22:58:06 | Trixar_za | Goodnite Araq |
| 23:00:18 | ccssnet | so Trixar_za, was there 2 main devs for DSL? |
| 23:00:35 | Trixar_za | There were a few |
| 23:02:13 | ccssnet | hmm |
| 23:02:42 | ccssnet | have you coded in lua? |
| 23:02:42 | Trixar_za | Well, actually that was one of the reasons |
| 23:02:54 | ccssnet | makes sense ^ |
| 23:03:10 | Trixar_za | The other was that John (other John) was too restrictive |
| 23:03:30 | Trixar_za | He had to check everything before releases |
| 23:03:36 | dom96 | bah, the tester just fails even when there are warnings ... |
| 23:03:54 | ccssnet | well they where conservatively 95% stable for that time general computing. restrictive may have been a good thing |
| 23:04:02 | Trixar_za | http://mephost.co.uk/flash/Frontier_Psychiatrist.swf <--- addictive song this |
| 23:04:33 | Trixar_za | Yes, but if you have to review everybody's changes before even allowing a release, then you're too restrictive |
| 23:04:40 | ccssnet | what i mean by that is it worked on 95% of the in use systems by general public |
| 23:04:48 | Trixar_za | One man with too much power is always bad :P |
| 23:04:52 | dom96 | Trixar_za: I bet by tomorrow that song will be stuck in my head! |
| 23:05:00 | ccssnet | ehh maybe not. security is a must. that means review of code |
| 23:05:02 | Trixar_za | It will be dom96 |
| 23:06:32 | Trixar_za | ccssnet: But now how he did it. There is developing something in a community and then there is locking down everything out of paranoia and personally testing and reviewing everything that gets submitted |
| 23:06:55 | Trixar_za | And say you've got a full time job and it's a pretty active Distro |
| 23:06:59 | dom96 | Time for me to sleep too. Bye. |
| 23:07:02 | Trixar_za | And you have 2 months between changes |
| 23:07:02 | ccssnet | Trixar_za: in defense for the john guy you mention being restrictive. if say for example i allowed someone to help me on a project im working on, all patches someone else contributed i would review before use. |
| 23:07:29 | ccssnet | Trixar_za: yea would get to be alot of work |
| 23:08:18 | ccssnet | good night dom96 |
| 23:51:23 | * | XAMPP[0] joined #nimrod |
| 23:51:41 | * | XAMPP[0] quit (Client Quit) |
| 23:54:42 | * | XAMPP quit (Ping timeout: 248 seconds) |
| 23:59:24 | * | XAMPP joined #nimrod |