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 |