00:07:55 | * | Jehan_ quit (Quit: Leaving) |
00:13:52 | * | superfun[c] quit (Quit: Page closed) |
00:31:08 | * | superfunc joined #nimrod |
00:32:32 | superfunc | sup everyone |
00:34:28 | Varriount | Araq: What bugfix about the export marker? Do you mean for when private forward declarations have public implementation? |
00:40:37 | ldlework | How do I setup Aporia for nimrod completion? |
00:42:43 | Trustable | Idlework: Do you mean the suggest feature? |
00:43:08 | ldlework | Trustable: yeah |
00:43:50 | Trustable | Idlework: Enable it in the settings |
00:45:40 | ldlework | Trustable: don't I have to tell it where nimrod is installed, etc? |
00:46:15 | Trustable | Idlework: Normally Aporia finds the location of nimrod automatically. |
00:49:10 | ldlework | Interesting not a single nimrod video on youtube |
00:51:58 | superfunc | until recently, there wasn't really a rust video or two either |
00:52:08 | ldlework | Trustable: when you type 'import' should it suggest the modules you can import? |
00:52:55 | Trustable | Idlework: If you understand German, watch this video: http://media.koeln.ccc.de/events/gpn/gpn14/mp4/gpn14-5892-de-Nimrod_h264-hq.mp4 |
00:53:22 | ldlework | I don't :) |
00:53:28 | ldlework | What's the point of a TaintedString |
00:54:23 | Trustable | Idlework: I don't know how advanced the suggest feature is. It's not working for me at the moment. |
00:54:38 | ldlework | Trustable: yeah too bad |
00:55:36 | ldlework | Doesn't support emacs bindings anyway so |
00:56:04 | Trustable | Idlework: If I understood it correct, a TaintedString can contain any arbitrary data. |
00:57:01 | ldlework | Trustable: I'm not sure how to interpret that |
00:57:07 | ldlework | What can't a 'string' have? |
00:57:13 | superfunc | Is there a way to automatically initialize a seq that is a member of a type? |
00:57:27 | Trustable | A normal string only contains visible characters. |
00:57:28 | superfunc | ^ upon construction, that is |
00:57:46 | Trustable | plus line break |
00:58:43 | Trustable | superfunc: What do you mean by member of a type? |
00:59:07 | superfunc | type Foo |
00:59:13 | superfunc | f: seq[int] |
00:59:40 | superfunc | when I create some var a : Foo, i'd like the seq[] to be initialized |
00:59:51 | Trustable | I don't think a type can contain any data. |
01:00:44 | Trustable | Create a procedure newFoo() |
01:02:48 | superfunc | What do you mean a 'type can't contain data'? |
01:02:59 | superfunc | Yeah, I knew I could do it with a proc |
01:03:05 | superfunc | was wondering if there was a pragma for it |
01:03:48 | ldlework | By 'multimethod' is it just meant a method redefined multiple times with different signature? |
01:04:11 | ldlework | And is dynamic binding simply meaning, that the method you call is dynamically deteremined based on arguments? |
01:04:13 | Trustable | superfunc: I have no idea, just a guess |
01:05:04 | ldlework | I can't find where Nimrod's pointers/references are described |
01:05:23 | ldlework | nm |
01:05:31 | superfunc | dynamic binding is when a function call can't be known until runtime |
01:06:22 | superfunc | if you have some B which inherits from A and you are accesing through a top level interface, the determination of whether to call A's proc of B's proc can't be known until runtime |
01:06:47 | superfunc | s/of/or/g |
01:07:52 | ldlework | How can I get a reference to a proc? |
01:11:39 | * | Trustable quit (Quit: Leaving) |
01:17:24 | * | dapz joined #nimrod |
01:19:38 | ldlework | hmm are proc types described anywhere? |
01:24:05 | superfunc | http://nimrod-lang.org/manual.html#procedures |
01:25:43 | ldlework | superfunc: I meant the 'proc type' syntax |
01:26:28 | superfunc | var f : proc(int): int |
01:26:40 | superfunc | creates a variable of type proc taking an int and returning an int |
01:27:32 | ldlework | superfunc: and you can represent that like (int -> int) right? |
01:28:01 | superfunc | You mean with the lambda syntax? Yeah, I think so. It's in the future module iirc |
01:29:08 | ldlework | superfunc: so I was wondering how you can specify the same find of proc type, but that takes no args |
01:29:33 | superfunc | proc(): int |
01:29:42 | superfunc | I'm not positive on the lambda-ish version of that |
01:30:03 | superfunc | but that will work |
01:30:27 | ldlework | k, was just curious what the lambda version was |
01:32:49 | superfunc | I don't think the lambda syntax can be used when declaring the type |
01:32:49 | superfunc | It is used when passing a proc in |
01:32:49 | superfunc | like: echo(s.map((x: int) => x * 5)) |
01:32:49 | ldlework | superfunc: I was able to do "type fptr = (int -> int) |
01:32:49 | ldlework | " |
01:32:52 | superfunc | hmp, must have been changed in my absence then |
01:36:24 | * | superfunc__ joined #nimrod |
01:36:44 | superfunc__ | That code doesn't compile under 0.10.0 |
01:37:19 | * | superfunc quit (Ping timeout: 246 seconds) |
01:37:19 | * | superfunc__ is now known as superfunc |
01:38:40 | ldlework | superfunc: you know how to use macros? |
01:39:09 | superfunc | Not in nim, no |
01:39:26 | superfunc | What compiler did you compile that code under? |
01:39:37 | ldlework | Does anyone know how to craft a simple macro to prevent the repetition here? I've never messed with macros and I'm curious: https://gist.github.com/dustinlacewell/054bc90ee13711f3496b |
01:40:09 | ldlework | superfunc: Nim Compiler Version 0.10.0 (2014-10-26) [Linux: amd64] |
01:41:27 | superfunc | type fptr = (int -> int) fails with an unrecognized symbol under 0.10 |
01:42:36 | superfunc | Unless I import future |
01:42:51 | ldlework | superfunc: yeah definitely |
01:42:53 | superfunc | Which, I'm realizing is what you probably meant |
01:42:54 | ldlework | gotta import future |
01:42:58 | superfunc | Apologies |
01:42:58 | ldlework | yeah |
01:43:19 | superfunc | Yeah, I hadn't seen that new syntax |
01:44:58 | superfunc | For a parameter less one, you can do (() -> int) |
01:45:47 | ldlework | aww this is sad :( http://nimrod-lang.org/macros.html#procedure-declaration_toc |
01:47:26 | superfunc | Try writing a section and do a PR |
01:55:43 | ldlework | I'm so close.. https://gist.github.com/dustinlacewell/076261c8df0545695889 |
01:55:58 | ldlework | how to embed the tempalte expression into a string heh |
01:59:04 | * | dapz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
02:15:01 | boydgreenfield | Having a bit of trouble digging in here… but does anybody know how to build babel under 0.9.6 *or* bigbreak on OS X. I’d thought this was only an issue for bigbreak and so scrapped my entire install, but now can’t get it working again. Github issue for reference: https://github.com/nimrod-code/nimble/issues/62 |
02:16:26 | boydgreenfield | (nevermind, that issue has a fix… but i’m not sure when I will need that functionality) |
02:20:08 | * | AFKMorpork is now known as AMorpork |
02:32:02 | boydgreenfield | Ok, separate question – is anyone getting this compiler error on OS X? (I just got it on upgrade from v0.9.5 to v0.9.6 release): ` |
02:32:04 | boydgreenfield | } |
02:32:05 | boydgreenfield | ^ |
02:32:06 | boydgreenfield | 1 error generated. |
02:32:09 | boydgreenfield | “/Users/boyd/Projects/refgen/mg/nimcache/stdlib_cpuinfo.c:10:1: error: extraneous closing brace ('}') |
02:32:09 | boydgreenfield | } |
02:32:10 | boydgreenfield | ^ |
02:32:11 | boydgreenfield | 1 error generated." |
02:32:14 | boydgreenfield | (sorry needed to quote that apparently) |
02:33:07 | boydgreenfield | (note this appears to happen with —threads:on) |
02:40:55 | * | darkf_ joined #nimrod |
02:41:17 | * | darkf quit (Disconnected by services) |
02:41:19 | * | darkf_ is now known as darkf |
02:41:56 | * | kshlm joined #nimrod |
02:44:42 | * | bjz quit (Read error: Connection reset by peer) |
02:44:45 | * | bjz_ joined #nimrod |
02:44:53 | * | superfunc__ joined #nimrod |
02:49:11 | ldlework | Araq: around? |
02:56:03 | superfunc__ | gokr1: I enjoyed your newest article |
02:57:53 | * | boydgreenfield quit (Quit: boydgreenfield) |
03:00:50 | * | xenagi quit (Quit: Leaving) |
03:01:39 | * | fowlmouth quit (Ping timeout: 244 seconds) |
03:02:44 | * | flaviu quit (Read error: No route to host) |
03:08:20 | * | boydgreenfield joined #nimrod |
03:19:51 | * | BitPuffin quit (Ping timeout: 265 seconds) |
03:24:22 | * | boydgreenfield quit (Quit: boydgreenfield) |
03:29:58 | * | fowl joined #nimrod |
03:32:10 | * | boydgreenfield joined #nimrod |
03:38:04 | * | superfunc__ quit (Ping timeout: 246 seconds) |
03:51:59 | * | saml_ quit (Quit: Leaving) |
03:54:35 | * | dapz joined #nimrod |
03:56:09 | * | superfuncc joined #nimrod |
03:58:12 | * | nande quit (Remote host closed the connection) |
03:59:48 | * | boydgreenfield quit (Quit: boydgreenfield) |
04:06:05 | ldlework | i did it! https://gist.github.com/dustinlacewell/ced55b0f727e6b8aff13 |
04:18:47 | superfuncc | nice dude |
04:27:08 | ldlework | superfuncc: now I'm trying to make a varargs version and huh, doesn't work |
04:29:01 | ldlework | I wonder how I can print out the expansion of a macro.. |
04:35:49 | * | superfuncc quit (Ping timeout: 246 seconds) |
04:59:05 | * | bjz_ quit (Ping timeout: 258 seconds) |
04:59:47 | ldlework | hmm varargs for macros is not working for me |
05:00:00 | * | superfunc__ joined #nimrod |
05:17:27 | * | superfunc__ quit (Quit: Page closed) |
05:23:56 | * | dapz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
05:28:23 | * | kshlm quit (Quit: Konversation terminated!) |
05:31:38 | * | Demos quit (Read error: Connection reset by peer) |
05:39:26 | * | kshlm joined #nimrod |
05:42:12 | * | kshlm quit (Client Quit) |
05:42:40 | * | kshlm joined #nimrod |
05:44:59 | * | kemet joined #nimrod |
05:47:05 | * | kemet quit (Remote host closed the connection) |
05:52:13 | * | kshlm quit (Quit: Konversation terminated!) |
05:52:29 | * | kshlm joined #nimrod |
06:08:53 | * | johnsoft quit (Ping timeout: 260 seconds) |
06:09:52 | * | johnsoft joined #nimrod |
06:10:10 | * | superfunc quit (Quit: Connection closed for inactivity) |
06:10:19 | * | kshlm quit (Remote host closed the connection) |
06:11:21 | * | ARCADIVS joined #nimrod |
06:29:58 | * | kshlm joined #nimrod |
06:39:52 | * | dapz joined #nimrod |
06:41:29 | * | rpag quit (Ping timeout: 245 seconds) |
06:56:42 | * | woodgiraffe quit (K-Lined) |
06:57:10 | * | woodgiraffe joined #nimrod |
07:06:38 | * | gokr1 quit (Quit: Leaving.) |
07:07:27 | * | kshlm quit (Quit: Konversation terminated!) |
07:07:42 | * | kshlm joined #nimrod |
07:10:04 | * | kshlm quit (Client Quit) |
07:10:21 | * | kshlm joined #nimrod |
07:14:49 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
07:21:56 | * | dapz joined #nimrod |
07:46:30 | * | q66[lap] joined #nimrod |
07:46:30 | * | q66[lap] quit (Client Quit) |
08:20:54 | * | gokr joined #nimrod |
08:25:46 | gokr | morning |
08:28:07 | * | dapz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
08:32:04 | ldlework | gokr: hi |
08:47:47 | ldlework | gokr: know anything about the macros? |
08:48:55 | * | gokr sitting in an airport... |
08:49:56 | * | gokr1 joined #nimrod |
08:52:39 | gokr1 | superfunc_: Thanks! The one about the server? |
08:52:55 | gokr1 | ldlework: TaintedString is about tracking "potentially unsafe" strings. |
08:53:24 | gokr1 | So when you get input from the outside (network, an input field in a UI etc) you can use TaintedString. |
08:53:48 | gokr1 | TaintedString is just an alias for string - if you don't compile with taintMode:on |
08:54:28 | gokr1 | But if you do compile with taintMode:on then its a distinct type of string. Meaning it *is* a string, but its a *different type* according to the type system. |
08:54:55 | gokr1 | So you can't willy nilly send in a TaintedString into a proc that wants a string. |
08:55:01 | ldlework | ah just so you can use that to check for strings that need to be validated? |
08:55:16 | gokr1 | Rather so that you can track what you do with these guys. |
08:55:27 | ldlework | gokr1: I can't get macros to take vargars |
08:55:53 | gokr1 | Ok, haven't played with macros yet |
08:58:37 | gokr1 | Also - the comment about TaintedString being able to contain "any data" is not correct AFAIK. |
08:59:03 | gokr1 | Or rather, both string and TaintedString (they are both "string") can contain any bytes. |
08:59:37 | gokr1 | But a string *literal* in code can't contain any bytes - but you can use the raw string literal to skip escapes etc. |
09:00:25 | gokr1 | Further, multimethods is about the dynamic dispatch operating on multiple arguments - and not just the receiver. |
09:00:56 | gokr1 | Most OO languages only has so called single dispatch - the dynamic lookup of the method is done by looking at the runtime type of the *receiver*. |
09:01:18 | gokr1 | The receiver being "the first argument" in Nim typically. |
09:01:49 | gokr1 | But in Nim and some other languages dispatch also looks at more arguments. In Nim it looks at all arguments that are objects IIRC. |
09:03:36 | gokr1 | This means you can make several different implementations of the same method name - but with different types for the object arguments "narrowing it down" typically for specific combinations of subtypes. |
09:05:55 | gokr1 | So "method eat(eater: Mammal, food: Food)" and then say "method eat(eater: Monkey, food: Banana)" and "method eat(eater: Monkey, food: Apple)". Depending on arguments passed it would be able to dispatch to any of these. And even if we call "aMonkey.eat(x)" it would choose between the one for bananas and the one for apples. |
09:06:17 | gokr1 | (pseudo code, I hope I didn't screw it up) |
09:06:47 | gokr1 | I will talk about these things in my next article, but it will take more time before that one is out - need to study a bit. |
09:06:50 | * | khmm joined #nimrod |
09:07:26 | * | khmm_ joined #nimrod |
09:08:30 | * | kshlm quit (Quit: Konversation terminated!) |
09:08:45 | gokr1 | So in Nim - you have basically 3 different techniques (or more?). First you can do regular statically bound procs. Then you can use generics to specify procs in a generic way (typically causing multiple variants to be compiled under the hood). And then you can use methods which will do dynamic dispatch during runtime. |
09:08:46 | * | kshlm joined #nimrod |
09:08:49 | * | kshlm quit (Changing host) |
09:08:49 | * | kshlm joined #nimrod |
09:12:23 | * | Araq_ joined #nimrod |
09:17:44 | * | khmm_ quit (Ping timeout: 255 seconds) |
09:18:59 | * | khmm quit (Ping timeout: 245 seconds) |
09:21:13 | * | Araq_ quit (Read error: Connection reset by peer) |
09:22:43 | * | Araq_ joined #nimrod |
09:22:46 | * | fowl quit (Read error: Connection timed out) |
09:38:42 | * | kshlm quit (Ping timeout: 250 seconds) |
09:40:13 | * | kemet joined #nimrod |
09:43:04 | Araq_ | 'devel' should be able to build a working babel on macosx |
09:47:00 | * | gokr1 quit (Quit: Leaving.) |
09:47:57 | * | kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) |
09:58:59 | * | gokr1 joined #nimrod |
10:06:15 | ldlework | Araq_: do you know is varargs is still supported for macros? |
10:06:58 | Araq_ | ldlework: sure it works. but you have to treat them differently for 'immediate' |
10:07:41 | ldlework | Araq_: I found that if I did myMacro(A, B, C) and defined it as macro myMacro(n: varargs[expr]) that n only contained A |
10:07:48 | ldlework | Araq_: is that what you mean? |
10:08:00 | Araq_ | yes |
10:09:00 | ldlework | Araq_: can you please show me an example of a macro taking varargs and just printing them out with hint() or something |
10:09:10 | ldlework | I would really appreciate it, I've been banging my head for some time |
10:09:24 | Araq_ | let x = callsite() |
10:09:43 | ldlework | I have no idea what that's supposed to tell me |
10:09:53 | Araq_ | for i in 1.. <x.len: processArg(x[i]) |
10:10:24 | Araq_ | dunno what you use for outputting |
10:12:11 | ldlework | varargs.nim(3, 21) Error: ambiguous identifier: 'varargs' -- use a qualifier |
10:12:27 | ldlework | https://gist.github.com/ca0fe691a965fd323027 |
10:13:35 | ldlework | Araq_: ^ |
10:13:38 | Araq_ | so learn to name your modules |
10:13:47 | Araq_ | for fuck's sake |
10:13:57 | ldlework | :3 |
10:14:34 | ldlework | Araq_: sorry? |
10:14:51 | Araq_ | so don't name it varargs when it takes a varargs |
10:15:00 | Araq_ | varargs is already the name of the type |
10:15:11 | ldlework | Araq_: renaming the macro doesn't change anything |
10:15:32 | Araq_ | apparently you named your module also varargs |
10:15:40 | ldlework | oh |
10:15:43 | ldlework | fg |
10:16:10 | Araq_ | and yes, better disambiguation is in the works |
10:16:47 | ldlework | where is processArg |
10:17:00 | Araq_ | it's pseudocode |
10:17:11 | Araq_ | you should do something with x[i] |
10:17:15 | Araq_ | like printing it |
10:19:55 | ldlework | Araq_: okay so this is the behavior Iwas getting before https://gist.github.com/e334cf4e89d966413d7e |
10:20:07 | ldlework | it prints the first string, but it doesn't seem to iterate over names |
10:20:34 | Araq_ | let x = callsite() |
10:20:40 | Araq_ | for i in 1.. <x.len: processArg(x[i]) |
10:20:59 | Araq_ | there is only so much I can do when you won't read |
10:21:25 | ldlework | Okay that worked |
10:21:40 | ldlework | so I don't really understand what callsite does so I guess I will look it up |
10:22:37 | ldlework | hmm is this a complete sentence? "returns the AST if the invokation expression that invoked this macro." |
10:23:36 | ldlework | I don't really understand what it does, but that did the trick |
10:23:58 | ldlework | Araq_: thanks |
10:24:26 | Araq_ | ldlework: typo |
10:24:33 | Araq_ | "AST of the ..." |
10:27:04 | ldlework | oh nice |
10:28:39 | ldlework | Araq_: can you think why this gives "Undeclared identifier 'A'" on line 18 for https://gist.github.com/3555a75524ef39388ce3 |
10:29:04 | ldlework | Shouldn't the macro create A? I think this was working when I was only creating one proc with the macro |
10:30:53 | Araq_ | let result = newStmtList() |
10:30:56 | Araq_ | make that instead: |
10:30:59 | Araq_ | result = newStmtList() |
10:31:30 | Araq_ | and start from 1 as I told you |
10:31:35 | Araq_ | you start from ß |
10:31:37 | Araq_ | 0 |
10:32:09 | Araq_ | x[0] is abcProcs itself |
10:33:08 | ldlework | ah okay |
10:33:32 | ldlework | Araq_: that worked, thanks a ton |
10:34:46 | Araq_ | btw usually one uses templates instead of AST building |
10:35:00 | Araq_ | but whatever, I'm not gonna explain that now :P |
10:41:35 | gokr1 | Am I correct that the only way to get a "ref" is to allocate a "ref type"? A ptr I can get with addr - and addr seems to work on several things, quite logically since its the "unsafe stuff" anyway. |
10:42:10 | Araq_ | yes. |
10:43:17 | gokr1 | Kinda fun that you can do "type IntHolder: ref int" etc. |
10:43:31 | * | gokr1 starts wondering why I am still at the airport... |
10:43:58 | gokr1 | Ok, will disconnect and head back home. I just waved off my daughter Maya going up north to visit cousins. |
10:47:43 | gokr1 | Although I am not finished reading up and testing the OO features (will take a while) - I guess the "main missing bit" that one could argue is slightly missing in the OO department would be some kind of "trait", "mixin", "group of procs and/or methods" that can be reused in another type. But I guess (not that well versed in generics) generics gives this ... basically. Right? |
10:48:45 | Araq_ | sounds more like a 'template' gives this |
10:49:12 | Araq_ | there is some huge overlap between generics and macors |
10:49:15 | Araq_ | *macros |
10:49:28 | gokr1 | Mmm. Do you share this view? I mean, that that's the "only" thing missing - and yes, templats/macros probably can fill in that gap. |
10:50:46 | Araq_ | I consider this generics vs macros the biggest unsolved problem in Nim's design. However, I argue it's an unsolved problem in PL design. |
10:51:41 | Araq_ | what you likely mean is that "interfaces" are missing. but these can be emulated sufficiently with a tuple of closures |
10:51:43 | * | ARCADIVS quit (Quit: ARCADIVS) |
10:51:52 | gokr1 | I mean, we have inheritance of structure - albeit single inheritance but hey, that's perfectly fine with me. We have both static and dynamic dispatch - and they even mix sensibly it seems (small experiments). We have generic procs. We have the whole ref objects with gc etc. |
10:52:06 | gokr1 | Nah... interfaces seem to be covered by type classes, or? |
10:52:41 | Araq_ | nope, type classes are entirely static |
10:52:45 | gokr1 | No, I was more looking for a way to inherit (or reuse in whatever way, mixin or otherwise) groups of behavior. |
10:53:08 | gokr1 | Ok, when you said "interfaces" I think "Java style interfaces" and they are static too. |
10:53:25 | Araq_ | no, they are dynamic |
10:53:35 | Araq_ | and yes, I mean "Java style interfaces" |
10:53:57 | gokr1 | Ehm... |
10:54:23 | gokr1 | Ah, you mean that they are verified against the runtime type of the object, right? |
10:54:56 | Araq_ | that they support runtime polymorphism |
10:55:24 | gokr1 | As a Smalltalker I hear dynamic with a slightly different meaning :) (as in "can be created and messed around with in runtime") |
10:55:33 | gokr1 | Right, agreed. |
10:55:57 | gokr1 | So the type classes ... don't come into play in method multi dispatch - that is what you are saying? |
10:56:20 | gokr1 | Right, so in that case - they don't cover the same bases as Java interfaces, true. |
10:56:21 | Araq_ | yes, they are only an elaborate mechanism for generic constraints |
10:56:30 | gokr1 | But a very elegant one :) |
10:56:59 | Araq_ | yeah but I think I'll delay them to version 2.0 |
10:57:20 | Araq_ | we can't implement everything at once |
10:57:33 | gokr1 | Ok, really have to leave the airport... But its fun and "mind opening" to play with Nim. And ... even though I easily find corners where I go "hum, what will happen here?" I tend to figure things out. |
10:58:22 | gokr1 | right |
10:58:24 | gokr1 | Ok, later |
10:59:29 | * | gokr1 quit (Quit: Leaving.) |
11:01:11 | ldlework | Araq_: would you like to add the template version? https://gist.github.com/9b6a85f9fc84df0b9d98 |
11:02:36 | Araq_ | ldlework: perhaps later |
11:04:01 | * | xcombelle joined #nimrod |
11:14:02 | * | khmm joined #nimrod |
11:14:27 | * | khmm_ joined #nimrod |
11:20:31 | * | xcombelle quit (Ping timeout: 255 seconds) |
11:27:31 | * | gokr quit (Read error: Connection reset by peer) |
11:27:52 | * | gokr joined #nimrod |
11:35:04 | * | fowl joined #nimrod |
11:51:30 | * | xcombelle joined #nimrod |
12:00:22 | * | gokr1 joined #nimrod |
12:01:05 | * | untitaker quit (Ping timeout: 255 seconds) |
12:02:23 | * | khmm_ quit (Ping timeout: 240 seconds) |
12:02:35 | * | khmm quit (Ping timeout: 272 seconds) |
12:04:53 | * | Araq_ quit (Ping timeout: 240 seconds) |
12:06:24 | * | darkf_ joined #nimrod |
12:06:38 | * | untitaker joined #nimrod |
12:10:04 | * | darkf quit (Ping timeout: 265 seconds) |
12:14:48 | * | darkf_ is now known as darkf |
12:20:05 | * | Araq_ joined #nimrod |
12:50:25 | * | rpag joined #nimrod |
13:08:27 | * | q66[lap] joined #nimrod |
13:26:12 | * | hsuh quit (Ping timeout: 250 seconds) |
13:26:33 | * | hsuh joined #nimrod |
13:32:05 | * | Araq_ quit (Quit: ChatZilla 0.9.91 [Firefox 33.0/20141011015303]) |
13:36:35 | * | darkf quit (Quit: Leaving) |
13:36:56 | * | BitPuffin joined #nimrod |
13:38:53 | * | gokr quit (Ping timeout: 258 seconds) |
13:46:47 | * | Trustable joined #nimrod |
13:47:12 | * | Trustable quit (Remote host closed the connection) |
13:49:42 | * | Trustable joined #nimrod |
13:53:26 | * | hsuh quit (Ping timeout: 272 seconds) |
13:54:39 | * | hsuh joined #nimrod |
13:58:30 | * | Sembei quit (Read error: Connection reset by peer) |
13:59:31 | * | MyMind joined #nimrod |
13:59:53 | * | hsuh quit (Ping timeout: 240 seconds) |
14:01:00 | * | rpag quit (Quit: Leaving) |
14:08:07 | * | hsuh joined #nimrod |
14:24:08 | gokr1 | Annoying "buglet" in Aporia - suggest doesn't care if I am typing a comment :) |
14:26:21 | * | superfunc joined #nimrod |
14:34:16 | * | rpag joined #nimrod |
14:36:38 | woodgiraffe | hmmmm... readFile fails if I read something in /proc (e.g. /proc/loadavg), presumably because readAll checks the fileSize of the file, in proc most apparently are 0, and then determines that it's not a file, but a buffer and that seems to not work |
14:40:21 | woodgiraffe | I suspect this would trouble reading from FUSE filesystems as well that return 0 filesizes for whatever reason. |
14:45:42 | * | brson joined #nimrod |
14:47:57 | woodgiraffe | Ah actually I'm sort of wrong, readAllBuffer doesn't mean what I thought it meant, instead I think the problem is the "if len >= 0" in readAll, if it's 0 it calls readAllFile with length of 0, which I assume means: read 0 bytes |
14:52:19 | * | dom96_ quit (Ping timeout: 245 seconds) |
14:54:09 | * | khmm joined #nimrod |
15:05:42 | * | khmm_ joined #nimrod |
15:15:39 | * | mko joined #nimrod |
15:23:58 | * | khmm_ quit (Ping timeout: 255 seconds) |
15:24:29 | * | khmm quit (Ping timeout: 255 seconds) |
15:40:25 | * | dapz joined #nimrod |
15:46:22 | * | willwillson joined #nimrod |
15:47:28 | willwillson | when using spawn, can you pass a pointer back through the the flowvar? I'm allocating with allocshared, but pointers always come back nil? |
15:54:32 | * | khmm joined #nimrod |
15:54:55 | * | khmm_ joined #nimrod |
16:03:46 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
16:11:54 | * | willwillson quit (Ping timeout: 245 seconds) |
16:12:26 | * | Araq_ joined #nimrod |
16:15:43 | * | kshlm joined #nimrod |
16:22:09 | * | xcombelle quit (Remote host closed the connection) |
16:27:55 | * | Araq_ quit (Quit: ChatZilla 0.9.91 [Firefox 33.0/20141011015303]) |
16:57:53 | * | johnsoft quit (Read error: Connection reset by peer) |
16:58:29 | * | johnsoft joined #nimrod |
17:03:36 | * | Matthias247 joined #nimrod |
17:04:51 | * | khmm_ quit (Ping timeout: 244 seconds) |
17:04:58 | * | khmm quit (Ping timeout: 265 seconds) |
17:06:20 | * | dapz joined #nimrod |
17:08:39 | * | boydgreenfield joined #nimrod |
17:19:33 | * | boydgreenfield quit (Quit: boydgreenfield) |
17:24:19 | * | boydgreenfield joined #nimrod |
17:26:26 | * | kshlm quit (Ping timeout: 255 seconds) |
17:39:38 | * | willwillson joined #nimrod |
17:40:22 | * | flaviu joined #nimrod |
17:41:48 | * | Fran__ joined #nimrod |
17:44:36 | * | Fr4n quit (Ping timeout: 272 seconds) |
17:53:18 | * | Fran__ quit (Ping timeout: 265 seconds) |
17:57:25 | ldlework | Can anyone help me with the Template version of this program? https://gist.github.com/a8c399707c4648b71806 |
17:58:51 | * | BlaXpirit joined #nimrod |
18:00:10 | * | superfunc quit (Quit: Connection closed for inactivity) |
18:01:23 | * | johnsoft quit (Ping timeout: 240 seconds) |
18:01:33 | * | johnsoft joined #nimrod |
18:04:45 | willwillson | ldlework: do you want to get rid of macros completely or just get rid of the parseStmt? |
18:05:10 | ldlework | willwillson: I have just implemented the same thing various ways |
18:05:13 | ldlework | I'm just experimenting |
18:05:19 | ldlework | so the last version I want to see is the template version |
18:05:22 | ldlework | of abcProc |
18:05:35 | ldlework | so I can just do abcProc(A) abcProc(B), etc |
18:06:16 | willwillson | ldlework: that seems to pretty easy then |
18:06:31 | ldlework | willwillson: nice, I couldn't figure it out |
18:06:37 | ldlework | willwillson: mind updating the gist? |
18:07:18 | willwillson | ldlework: ok, let me see what I can do |
18:07:58 | Araq | willwillson: yeah FlowVar[shared ptr] is supposed to work, can you create a bug report? |
18:08:26 | * | dom96_ joined #nimrod |
18:08:42 | * | superfunc_ quit (Quit: Page closed) |
18:09:37 | willwillson | Araq: hopefully I'm not doing something stupid: https://github.com/Araq/Nimrod/issues/1597 |
18:09:40 | Araq | Varriount: setting the path does not work: http://forum.nimrod-lang.org/t/604 |
18:14:18 | ldlework | willwillson: thanks |
18:14:32 | Araq | willwillson: nope, I don't think so, it should work |
18:16:18 | Varriount | Araq: I fixed that with the last version I gave you. |
18:16:48 | Araq | Varriount: well I only updated the 64bit version |
18:16:53 | Varriount | -_- |
18:17:00 | Araq | -_- indeed |
18:17:14 | Varriount | I'll go ahead and generate the 32 bit installer. |
18:17:45 | Araq | ok. btw do you use the same config options as the old inno setup installer? |
18:18:10 | Varriount | Huh? What do you mean? |
18:18:47 | Araq | inno.tmpl uses c.binPaths |
18:19:14 | Varriount | Is that a value in nimrod.cfg? |
18:19:20 | Araq | yep |
18:19:24 | Araq | well |
18:19:27 | Araq | nimrod.ini |
18:19:42 | Araq | which is btw *only* used for niminst |
18:19:59 | Araq | so yeah, we should rename it some day |
18:24:45 | * | Fran__ joined #nimrod |
18:25:55 | ldlework | Araq: can you please show me the varargs version of this template macro? https://gist.github.com/d4039f101923e7e6ec7f |
18:26:23 | Varriount | Araq: Regarding a comment you said yesterday, what did you mean by the 'export fix"? |
18:26:57 | Araq | Varriount: proc foo() # forward decl; proc foo*() = # star gets lost |
18:27:13 | Varriount | Yes, there's a PR for that. |
18:28:17 | Araq | ldlework: now that's really simple: there is no varargs version possible |
18:28:35 | Araq | as you cannot iterate over all args in a template |
18:28:36 | ldlework | Araq: ah okay, that's what willwillson thought. thanks for confirming |
18:29:04 | ldlework | Araq: inherent limitation or just a current one? |
18:29:21 | Araq | inherent limitation |
18:29:36 | Araq | we could provide a way to do it recursively in a template |
18:29:42 | ldlework | Araq: got it. Araq is it because there'd be no way to loop over the args in a way that would define several new procs? |
18:29:43 | Araq | but why bother |
18:29:52 | Araq | exactly. |
18:30:00 | ldlework | Araq: thanks! |
18:30:25 | ldlework | I think I'm going to write a blog up on all of this |
18:30:35 | Araq | that would be very nice |
18:30:49 | ldlework | Araq: is there any reason why I can't do $some_ast_node |
18:30:55 | ldlework | vs astToStr() |
18:31:13 | Araq | the lack of iteration in templates is the primary reason why 'macro' exists |
18:31:24 | ldlework | Araq: I'll note that in the article |
18:31:40 | ldlework | Araq: that you can use the template from your macro is nice |
18:32:12 | ldlework | Araq: also I don't understand the need for callsite(), why doesn't the macro's arguments work as expected, why do I need to pull them in externally? |
18:32:17 | Araq | ldlework: I don't think $ can work reasonably as an alias for 'astToStr' |
18:33:19 | Araq | ldlework: for non-immediate macros, macro arguments do work as expected |
18:33:35 | Araq | there are all sort of inherent problems here |
18:33:38 | ldlework | Araq: I should probably learn what the difference of immediate and not immediate is |
18:33:59 | Araq | zahary argues immediate should ultimately not be necessary |
18:34:23 | ldlework | Araq: people who I've shown nimrod too get immediately turned off by the pragma tags |
18:34:34 | ldlework | superficial, I'm just providing a datapoint |
18:35:09 | Araq | *shrug*. Their syntax is not a coincidence |
18:35:17 | ldlework | coincidence? |
18:36:02 | Araq | Nim has 6 ways to write brackets: () [] {} {. .} (. .) [. .] |
18:36:16 | Araq | (. .) and [. .] are currently unused |
18:36:34 | Araq | other combinations do not work as well with user definable operators |
18:37:00 | ldlework | Araq: okay so, is the difference that immediate tempaltes/macros have their arguments passed in lexically without any sort of care whether what you're passing exists or not? |
18:37:18 | Araq | right |
18:37:56 | ldlework | metaprogramming is crazy |
18:38:08 | ldlework | people get all huffy about metaclasses in python |
18:38:24 | Araq | you can handle the immediate vs non-immediate problem in other ways. but it's an inherent problem |
18:38:48 | ldlework | I could just pass in strings to a non-immediate macro |
18:39:00 | Araq | originally Nim only had immediate templates and macros |
18:39:24 | ldlework | abcProcs("A", "B", "C") |
18:39:25 | Araq | sometimes I wonder whether my original design was much better :P |
18:39:28 | ldlework | but that's less cool |
18:40:59 | ldlework | Araq: so the reason my immediate varargs version without callsite wasn't working is because `A` the raw lexical content was being 'shoved into' the first param to the macro which was set as varargs but since it was immediate it just got shoved in there anyway? |
18:41:00 | Araq | some people think (. .) should never be used for anything cause it looks like boobs |
18:41:17 | Araq | ldlework: yup. |
18:42:05 | * | q66[lap] quit (Changing host) |
18:42:05 | * | q66[lap] joined #nimrod |
18:42:26 | Araq | type checking / argument passing for immediate macros is under-developed |
18:43:00 | Araq | but I consider it super low priority as immediate macros are inherently evil and you better know what you're doing |
18:44:13 | ldlework | Araq: is there any implicitly wrong with my test example? |
18:45:26 | * | silven quit (Ping timeout: 265 seconds) |
18:45:26 | * | silven_ joined #nimrod |
18:46:46 | Araq | ldlework: you can try if a non-immediate macro works as well |
18:48:13 | * | BlaXpirit quit (Quit: Quit Konversation) |
18:50:02 | * | BlaXpirit joined #nimrod |
18:50:49 | * | silven_ is now known as silven |
18:51:06 | flaviu | Haha, seriously? |
18:52:00 | Araq | flaviu: yes. |
18:53:09 | ldlework | Araq: nah it gives "Undeclared identifier 'A'" |
18:53:16 | ldlework | I guess as you'd expect |
18:53:34 | ldlework | Also, the name change to Nim is official? |
18:53:34 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
18:53:39 | Araq | yeah well there have been developments to make this work |
18:54:31 | Araq | we're officially in the process of changing the name |
18:55:05 | Araq | the process will be complete once 0.10.0 is out and I renamed the github links |
18:55:20 | Araq | apparently you can easily rename whole projects on github |
18:55:37 | Araq | we'll see how that will work out :P |
18:56:11 | ldlework | Araq: we did it at Docker, it worked pretty well |
18:56:16 | ldlework | I don't know if there was any pain in the background |
18:58:59 | Araq | Varriount: do you think we can officially support WinXP? |
19:00:04 | Varriount | Araq: Yes.. although there are certain functions for Vista+ that are very useful. |
19:00:23 | Araq | did we ever did something about that issue? |
19:00:30 | Varriount | Araq: It would help to have some sort of compile-time constant for what windows we are targetting. |
19:00:34 | Varriount | Araq: Not that I know of . |
19:00:41 | ldlework | Nimrod needs a wikipeida article |
19:00:55 | flaviu | ldlework: don't mention that |
19:00:58 | Araq | ldlework: we have one that got deleted |
19:01:04 | ldlework | o_o |
19:01:18 | flaviu | ldlework: you've caused lots of wikipedia flaming |
19:01:31 | Araq | "lack of secondary sources" or something |
19:01:54 | Varriount | Despite the fact that hundreds of relevant articles don't have secondary sources. |
19:02:23 | Araq | and despite the fact that we have secondary sources |
19:02:38 | Varriount | We do? |
19:02:58 | Araq | if def-'s talk does not cout as such, that's purely wikipedia's problem |
19:03:04 | Araq | *count |
19:03:27 | Varriount | Have we tried un-deleting the article, and adding -def's talk? |
19:03:36 | Araq | pretty sure we did |
19:04:20 | Araq | also my DrDobb's article made the cover story |
19:04:37 | Araq | so yeah, ok, written by me so not "secondary" |
19:05:09 | Araq | but come on, you cannot reasonably argue that an article with more errors written by somebody else would have been better |
19:08:08 | Varriount | Araq: When was def-'s talk? |
19:08:31 | Araq | a couple of months ago |
19:08:55 | Varriount | Well the wiki page was deleted way back in april. |
19:09:01 | flaviu | Araq: The explaination that I got for that is that it was at a hackerspace, not a major convention |
19:09:27 | Araq | yeah well. there is always something. |
19:14:55 | Araq | so ... I guess somebody should mark this: http://en.wikipedia.org/wiki/Euphoria_%28programming_language%29 for deletion? because of lack of references. |
19:15:40 | Araq | "other crap exists" is not a valid reason to complain, but surely we can help them get rid of the "crap"? |
19:15:45 | flaviu | Araq: Don't ruin someone else's fun |
19:16:00 | Araq | I mean |
19:16:40 | Araq | who doesn't want an encyclopedia with less information? |
19:17:12 | * | johnsoft quit (Ping timeout: 256 seconds) |
19:17:55 | * | johnsoft joined #nimrod |
19:18:50 | Varriount | Not to mention the loads of software that only has references to the home page. |
19:19:03 | Araq | Performance - Euphoria incorporates an efficient reference-counting garbage collector that correctly handles cyclic references. |
19:19:08 | Araq | er nope. |
19:19:22 | Araq | Euphoria doesn't allow the creation of cycles |
19:19:35 | Araq | but that's different from correctly handling them |
19:19:46 | Araq | see? the article is not even correct |
19:20:22 | Varriount | Araq: I think, because of the name change, that a well written wikipedia article on the Nim programming language might be successful. |
19:20:43 | Araq | Varriount: I cannot see how so |
19:20:56 | Varriount | We just have to make sure that it has references to def-'s talk, and doesn't hoist phrases wholesale from the website. |
19:21:10 | Araq | there have been other programming related projects with the name "Nimrod" |
19:22:45 | Varriount | Araq: A new name means that whoever was targetting the article for deletion before might miss the name change. |
19:23:20 | Araq | nah, the guy has some personal problem with me because I like to rant about unix |
19:24:04 | Araq | well that's my theory |
19:24:05 | Varriount | You know, there are wikipedia channels on freenode. We might be able to garner support for an article there. |
19:25:57 | Varriount | Is someone here willing to write a *new* wikipedia article for Nim? |
19:27:40 | Araq | I think we can count on gokr1 for that :-) |
19:28:09 | rpag | Araq, you mean you prefer windows over unix? o_O |
19:28:42 | Varriount | rpag: Don't get him started. |
19:28:47 | rpag | hehehe |
19:28:58 | Araq | unix is the most overrated OS of all time |
19:29:21 | Araq | and it does nothing particurlarly well |
19:29:26 | rpag | best of a bad bunch perhaps i never enjoyed windows |
19:30:11 | woodgiraffe | Well, what does Windows particularly well? |
19:30:23 | rpag | games |
19:30:34 | flaviu | Araq just doesn't like a bunch of small composable programs that use text as a method of communication :B |
19:30:40 | woodgiraffe | That's hardly due to the OS |
19:30:41 | flaviu | rpag: Not window's fault |
19:31:00 | rpag | due to directx maybe? |
19:31:06 | rpag | when games took off anyway |
19:31:52 | Araq | when you look at osproc.nim you'll notice that even interprocess communication works better on windows |
19:32:00 | * | Ven joined #nimrod |
19:37:58 | woodgiraffe | Works better in what way? |
19:39:01 | Araq | fewer issues have been created for it |
19:39:18 | woodgiraffe | I see |
19:39:38 | flaviu | Because no one serious uses windows? :P |
19:41:16 | * | superfunc joined #nimrod |
19:41:23 | Araq | then how come we get bug reports from people using windows xp? |
19:42:26 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
19:42:37 | rpag | there's always one |
19:42:42 | Araq | which still has 23% market share btw |
19:42:58 | Araq | when will Linux have 5% market share? |
19:44:18 | flaviu | Araq: Whenever people decide to do stuff with their computers besides watching cute cat videos |
19:44:49 | * | Ven joined #nimrod |
19:44:53 | rpag | which will be never |
19:44:56 | * | clone1018 quit (Ping timeout: 272 seconds) |
19:45:15 | Araq | flaviu: funny. my linux crashes every few hours |
19:45:29 | flaviu | Araq: Check dmesg |
19:45:30 | * | clone1018 joined #nimrod |
19:46:21 | rpag | imo linux doesn't take off because new hardware you buy at a store might just not work |
19:46:39 | rpag | games dont work for the most part |
19:46:49 | rpag | and ton of commercial/business software doesnt work |
19:47:05 | rpag | its also a pain to use sometimes, if you're not invested in computers |
19:47:11 | Araq | yes. nothing works. exactly. |
19:47:24 | flaviu | rpag: funny. Every game on the steam front page runs on linux now |
19:47:41 | Araq | and the only useful software that doesn't run on windows is valgrind |
19:47:56 | Araq | pretty much everything else has been ported |
19:47:58 | flaviu | Araq: You still haven't posted dmesg |
19:48:17 | Araq | flaviu: can't. I'm on windows |
19:49:45 | rpag | flaviu, yeah, steam helped |
19:49:51 | rpag | relatively new thing though |
19:50:13 | flaviu | Yeah, but better late than never |
19:50:30 | woodgiraffe | HW support on Linux really isn't a problem these days |
19:50:35 | woodgiraffe | esp. for new HW |
19:50:49 | flaviu | woodgiraffe: video hardware is still a problem |
19:50:55 | woodgiraffe | You mean, Driver 3D performance |
19:51:29 | flaviu | I guess, although I've heard some people have trouble getting it working at all. |
19:51:57 | rpag | 'vesa' always works :< |
19:52:20 | woodgiraffe | Clearly depends on what distribution you're using etc., if you're using ancient proprietary drivers then yeah, they might just not work |
19:53:15 | Araq | that distribution thing is btw the reason why most commercial software companies cannot be bothered to support it properly |
19:53:46 | Araq | so I built a .deb package. where does it install? who knows? |
19:53:49 | flaviu | Araq: just make a binary package for the user to drop into /opt/ |
19:54:17 | woodgiraffe | Sure, distributing packages on Linux is much harder then it is on Windows |
19:54:20 | Araq | flaviu: I mean "on which distros will it install" |
19:54:42 | rpag | fragmentation on linux is definitely a problem |
19:54:50 | rpag | and sometimes an annoying one |
19:54:56 | woodgiraffe | But Steam only supports Ubuntu/Debian afaik? - Lots of small devs publish their games on Linux Steam and they seem perfectly able to do this without a lot of problems. |
19:55:15 | Araq | and what is the point anyway? they all run the same software |
19:55:16 | woodgiraffe | Systemd will change things for the better |
19:55:46 | woodgiraffe | Araq: "variety" but largely it is seen as a problem and people try to address it |
19:56:23 | flaviu | /opt/ |
19:56:29 | woodgiraffe | there was this recently: http://0pointer.net/blog/revisiting-how-we-put-together-linux-systems.html |
19:58:14 | willwillson | of course freedom trumps all and you shouldn't consider anything but the GNU system ;D |
19:58:16 | * | dapz joined #nimrod |
19:58:40 | * | skyfex joined #nimrod |
19:58:55 | woodgiraffe | willwillson: agreed, I watch https://rms.sexy/ at least 2h a day |
19:59:37 | willwillson | woodgiraffe: i'm not sure I want to click that ^^ |
19:59:45 | woodgiraffe | willwillson: it is "safe for work" |
19:59:45 | flaviu | woodgiraffe: Why is he using a thinkpad? |
19:59:57 | flaviu | Doesn't he use some 100% FOSS netbook? |
20:00:01 | woodgiraffe | flaviu: I forgot |
20:00:40 | willwillson | he used to use a thinkpad, doesn't he use a lemote or something now? |
20:01:13 | willwillson | there you go: https://stallman.org/stallman-computing.html |
20:03:14 | willwillson | of course libreboot works with the thinkpad x60 |
20:04:08 | rpag | he uses a netbook manufactured in china afaik |
20:29:54 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
20:41:07 | * | dapz joined #nimrod |
20:46:56 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
20:54:25 | Araq | Varriount: well? |
20:54:35 | * | dapz joined #nimrod |
20:57:35 | * | dapz quit (Client Quit) |
21:02:30 | * | dapz joined #nimrod |
21:03:48 | ldlework | Araq: why doesn't the single argument non-immediate macro not complain that A is an unknown identifier? |
21:04:23 | Araq | ldlework: as I said, some work has been done on that front |
21:05:01 | Araq | the idea is to deduce from the parameter types whether to perform type checking/symbol lookups for the particular argument |
21:05:02 | ldlework | Araq: ah, so for single argument macro's it may interpret your macro as immediate if the argument is undeclared? |
21:06:31 | ldlework | Araq: it happens even with non-vararg, macros even ones with just multiple args: macro abcProcs(n: expr, g: expr, z: expr): stmt = |
21:06:54 | ldlework | so is the intention that eventually you will not have to mark your macros as immediate for at least this form ^ |
21:06:57 | ldlework | or for varargs too? |
21:07:28 | Araq | eventually for varargs too |
21:07:46 | ldlework | Araq: thanks I'll put that in the blog |
21:08:30 | * | boydgreenfield quit (Quit: boydgreenfield) |
21:10:33 | * | boydgreenfield joined #nimrod |
21:12:03 | Araq | boydgreenfield: babel works with devel on macosx, I hope |
21:14:51 | boydgreenfield | Araq: Mm, I get a compiler error that’s the same as the above. I can also get it for a variety of my other programs that used to compile under 0.9.5 or 0.9.4 |
21:14:58 | boydgreenfield | “mg_build.nim(91, 6) Hint: 'bf' is declared but not used [XDeclaredButNotUsed] |
21:15:00 | boydgreenfield | } |
21:15:01 | boydgreenfield | ^ |
21:15:02 | boydgreenfield | 1 error generated. |
21:15:03 | boydgreenfield | Error: execution of an external program failed” |
21:16:05 | boydgreenfield | Err… let me double check, possible that the babel/nimble error was a different one (I fixed that by commenting out a line in the source for an external call that was failing, and, I hope, unneeded) |
21:16:07 | Araq | does the compiler use the stdlib from devel? |
21:16:20 | boydgreenfield | hmm – how do I check / verify that? |
21:16:20 | * | noam joined #nimrod |
21:16:52 | boydgreenfield | Araq: I believe I cleanly uninstalled everything and then rebuilt at the v0.9.6 tag, but may have missed something. |
21:17:54 | ldlework | Araq: when you have an immediate mode Macro and you passed it an undeclared identifier such as A, what actually gets passed? |
21:17:58 | ldlework | Araq: is it an AST node? |
21:20:53 | * | noam quit (Ping timeout: 255 seconds) |
21:21:40 | Araq | boydgreenfield: the fix is not for v0.9.6 tag |
21:21:52 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
21:21:58 | Araq | I plan to release 0.9.8 soon which fixes the problems 0.9.6 caused |
21:22:55 | Araq | ldlework: yes. the AST is an "identifier" (nnkIdent). after symbol lookup it's a "symbol" (nnkSym) |
21:22:57 | boydgreenfield | Araq: Ah, I must have missed said discussion/details. What commit do you recommend installing from now? |
21:23:05 | boydgreenfield | *for now |
21:23:10 | Araq | latest devel |
21:23:22 | boydgreenfield | Ok, thanks. |
21:24:16 | * | Demos joined #nimrod |
21:25:29 | ldlework | Araq: its weird, its like, the macro will give me the undeclared identifier 'A' in the multi-arg invocation, no matter what until I actually implement the macro as not only calling callsite() but iterating over it too? |
21:25:43 | ldlework | What are the actual minimum requirements of a multi-arg immediate macro? |
21:26:35 | ldlework | its not even just iterating over it, I have to like include each callsite item in the ast I return from the macro? |
21:26:54 | Araq | no idea what you mean |
21:28:11 | ldlework | Araq: https://gist.github.com/dustinlacewell/6cb5f9944db47f3153a8 |
21:28:49 | ldlework | ignroe the hint() line |
21:30:34 | Araq | ldlework: I think I'll let you figure out what the problem is |
21:30:51 | Araq | hint: it's all your fault ;-) |
21:31:14 | ldlework | This is already way over my head |
21:31:22 | Araq | no, it' simple |
21:31:27 | Araq | but maybe you need some sleep |
21:31:43 | Araq | if you don't declare a proc A via your macro |
21:31:43 | ldlework | The only difference between the two functions is that I uncomment the lines that build the proc and add it to the st... oh |
21:31:48 | ldlework | heh |
21:33:08 | ldlework | Araq: for immediate macros does it even matter what arguments you define for the macro? |
21:33:18 | ldlework | I mean for multi arg ones |
21:33:25 | Araq | I don't think so |
21:33:51 | ldlework | yeah that's weird having to explain |
21:33:58 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
21:33:59 | Araq | btw my macro skillz suck ;-) |
21:34:08 | Demos | dom96, you around? |
21:34:13 | dom96_ | yes |
21:34:18 | * | superfunc_ joined #nimrod |
21:34:19 | Araq | fowl knows these things much better |
21:34:30 | ldlework | Araq: you've been really helpful |
21:34:40 | Demos | you got time to discuss I feature for nimble that I am thinking of implementing? |
21:34:56 | dom96_ | sure |
21:35:29 | Demos | so it would be pretty bad-ass if nimble knew how to call cmake to build native libraries that are dependencies for wrappers, this is more useful on windows ofc |
21:38:11 | dom96_ | I'd rather keep nimble simple. It would be nice to have this as a plug in or something like that. |
21:38:21 | Demos | there is a standard CMAKE_INSTALL_PREFIX so it can install locally to ~/.nimble and I was thinking of having a directory tree for different configurations, I kinda want to be able to easily build totally standalone executables on windows (this may be too complex). |
21:38:25 | Demos | yeah a plugin is good |
21:38:41 | Demos | but it should be able to integrate into the .nimble files |
21:38:51 | dom96_ | but then we need a plugin system |
21:39:35 | Demos | hmm.... I dont think it could be hacked together with staticExec either |
21:39:54 | Araq | sure why not? |
21:40:06 | Araq | staticExec rules |
21:40:10 | * | superfunc quit (Quit: Connection closed for inactivity) |
21:40:29 | Demos | because you need to be able to call it with some somewhat complex args |
21:40:48 | Demos | and at a somewhat complex time |
21:41:06 | Demos | for one you need to get the path to the nimble package tree |
21:42:04 | Araq | nimble should have a staticExec-like post installation hook |
21:42:18 | Araq | how hard can it be? 3 lines of code? |
21:44:11 | Demos | what if instead of dealing with nimble I try and make it a nim library that you use from the wrapper |
21:45:00 | Demos | is there a good way to get the path to the nimble tree, or actually I could just make a separate tree I suppose |
21:46:20 | Demos | cimble (pronounced thimble) should be the name of this lib |
21:46:40 | * | dapz joined #nimrod |
21:48:34 | * | dapz quit (Client Quit) |
21:50:09 | * | dapz joined #nimrod |
21:50:52 | Demos | I think a regular library used from wrappers is the way to go actually... |
21:51:53 | Araq | what does this library do? I don't get it |
21:52:02 | * | Araq is sleeping |
21:55:08 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
21:57:17 | gokr1 | hey guys |
21:58:59 | ldlework | Araq: so is this the eventually desired-to-be-supported syntax for all of this: https://gist.github.com/dustinlacewell/188b30fd3e430f2744ab |
21:59:11 | Demos | Araq, goes and invokes cmake to build native libraries, so that you dont have to deal with them on windows |
21:59:19 | * | dapz joined #nimrod |
21:59:45 | ldlework | oops |
21:59:59 | ldlework | https://gist.github.com/dustinlacewell/188b30fd3e430f2744ab |
22:00:08 | ldlework | forgot to remove the callsite |
22:00:19 | ldlework | oops |
22:00:23 | * | dapz quit (Client Quit) |
22:00:44 | ldlework | https://gist.github.com/dustinlacewell/64b53bdd85645b99cb69 |
22:00:50 | ldlework | (sorry) |
22:02:48 | gokr1 | Wikipedia... nah, I am not wikipedia savvy. But I agree it would be nice to have such a thing. Anyone knows what a proper secondary source is? |
22:03:11 | * | dapz joined #nimrod |
22:08:35 | ldlework | So here's my rough draft for my article on Nim metaprogramming: http://blog.ldlework.com/a-cursory-look-at-meta-programming-in-nim/ |
22:08:42 | ldlework | :3 |
22:09:52 | Varriount | Araq: Hm? |
22:10:56 | dom96_ | ldlework: awesome :D |
22:11:20 | Araq | Varriount: what about the installer? |
22:11:26 | Varriount | dom96_: Araq and I need to talk with you ragrding nimbuild |
22:11:40 | Varriount | Araq: I'm working on it, however I got caught up in CS class. |
22:11:41 | Araq | I like to answer the guy on the forum that we fixed it |
22:11:56 | dom96_ | Varriount: Go on then. |
22:12:08 | Varriount | dom96_: Have you seen #nimbuild? |
22:12:19 | dom96_ | no |
22:14:02 | Varriount | Nimbuild is currently failing. |
22:14:17 | dom96_ | How is it failing? |
22:14:29 | * | Karpax joined #nimrod |
22:14:29 | Varriount | Build failed: "git.exe pull origin master" failed. |
22:14:42 | Varriount | Both windows and linux builders |
22:15:14 | Varriount | Araq: I believe you also had something to ask dom96 regarding build software? |
22:15:18 | Karpax | Hi there, just want to say hi and thanks for creating such a cool language |
22:15:40 | fowl | ldlework, it doesnt load |
22:15:40 | fowl | oh wait |
22:15:56 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
22:17:09 | Karpax | and thank you for jumping on the path problems with WinXP... my apologies for stil using that old os |
22:17:12 | Varriount | Karpax: Thanks for the complement. I don't suppose you have any standing in the Wikipedia community? |
22:17:16 | dom96_ | Varriount: I'll take a look later. |
22:17:28 | dom96_ | Varriount: Have you tried executing that on your Windows machine? |
22:17:30 | Araq | ldlework: "...based on whether or not you invoke the macro with undeclared arguments or not. " no. based on whether the parameter's type is a metatype |
22:17:52 | Araq | metatype here means "expr" |
22:18:04 | Karpax | haha, I have been browsing the logs enough to know to mention anything wikipedia related ;-) |
22:18:10 | Varriount | dom96: Yes, and git reports no error. |
22:18:11 | * | Jehan_ joined #nimrod |
22:18:47 | * | fowl quit (Quit: Leaving) |
22:19:31 | ldlework | Araq: but that doesn't come into consideration until you start with an undeclared argument right? |
22:19:32 | * | fowl joined #nimrod |
22:20:06 | dom96_ | Varriount: Have you tried reproducing the code that nimbuild is trying to execute? |
22:20:09 | ldlework | or are all macros with metatype arguments implicitly immediate? |
22:20:10 | fowl | ldlework, in your examples items(data) should be items(order)? |
22:20:12 | Araq | hi Karpax thanks for your feedback |
22:20:22 | ldlework | fowl: oh thanks |
22:20:26 | Araq | as you probably know we're working on fixing it |
22:20:33 | Araq | well ... Varriount is working |
22:20:55 | Karpax | Araq: yes I have seen the chatter |
22:22:21 | ldlework | fowl: fixed |
22:22:22 | fowl | ldlework, does newProc() work for you without a params parameter? |
22:23:11 | ldlework | fowl: yeah |
22:23:18 | Araq | ldlework: it doesn't really depend on the undeclared identifier, but on 'expr' |
22:23:47 | ldlework | Araq: does that mean that all macros are implicit immeidate if they have an 'expr' metatype argument? |
22:24:10 | Araq | no, if they *only* have 'expr' parameters |
22:24:22 | Araq | note that 'varargs[expr]' is not 'expr' |
22:24:41 | Araq | and also I'm not sure this is bugfree ... |
22:24:42 | Karpax | Araq: I doubt I am able to contribute on the actual developing of the language, but I can try to use it and after about 2 months now I am still messing around with it |
22:25:33 | fowl | Araq, i've never seen varargs[expr] work |
22:26:05 | ldlework | Araq: what if I switched it to TNimrodIdent |
22:26:15 | Araq | fowl: well I fixed it once and have test cases somewhere |
22:26:29 | Araq | it's special cased in the compiler |
22:27:01 | Araq | ldlework: yeah that would be much better, but it doesn't work that way. TNimrodIdent is not a metatype |
22:27:38 | * | dapz joined #nimrod |
22:27:50 | Karpax | Trustable: thanks for the video link, I already liked how the guy started his presentation |
22:27:52 | * | boydgreenfield quit (Quit: boydgreenfield) |
22:28:12 | Trustable | Karpax: you're welcome :) |
22:28:24 | ldlework | Araq: how would you phrase the explanation of when Nim automatically interprets your non-tagged macro as immediate? |
22:28:42 | Karpax | Trustable: stupid question, where did you find that video? if I may ask. |
22:29:05 | ldlework | Trustable: which video? |
22:29:23 | * | fowl quit (Quit: Leaving) |
22:29:40 | * | fowl joined #nimrod |
22:30:06 | Karpax | idlework: this video: http://media.koeln.ccc.de/events/gpn/gpn14/mp4/gpn14-5892-de-Nimrod_h264-hq.mp4 |
22:30:39 | ldlework | aww german |
22:32:09 | ldlework | fowl: any other errors? |
22:32:12 | * | gokr1 trying to muster up those 3 years of school german... |
22:32:57 | Araq | ldlework: er, I didn't tell you the truth |
22:33:07 | ldlework | Araq: that's okay, I didn't understand it anyway |
22:33:12 | gokr1 | hehe |
22:33:24 | Araq | in principle (bugs not withstanding), it's really simple: |
22:33:41 | Araq | template foo(a, b: int, x: expr) |
22:33:53 | Araq | foo(2, 4, undeclared) |
22:34:01 | Araq | # valid |
22:34:11 | Araq | foo(undeclared, 2, 4) # invalid |
22:34:18 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
22:34:27 | Araq | it's not immediate vs non-immediate, it allows mixing |
22:34:32 | * | fowl quit (Ping timeout: 265 seconds) |
22:35:03 | ldlework | Araq: can you ever have a non-immeidate macro with undeclared arguments? |
22:35:32 | Araq | read what I wrote |
22:36:16 | ldlework | Araq: I'm just pointing out that immediate conversion only matters in the case of undeclared arguments |
22:36:27 | Karpax | gokr1: thank you for all those nimrod articles by the way |
22:36:29 | ldlework | right? |
22:36:38 | ldlework | Karpax: nimrod articles?! |
22:36:41 | gokr1 | Karpax: thanks! |
22:37:02 | * | dapz joined #nimrod |
22:37:09 | gokr1 | ldlework: http://goran.krampe.se/category/nim |
22:37:25 | Araq | ldlework: er ... no. but close enough for a first article |
22:37:27 | Karpax | Idlework: yeah thats the link, cool stuff |
22:37:51 | gokr1 | Karpax: Basically my stumblings so far ;) |
22:38:00 | * | dapz quit (Client Quit) |
22:38:12 | ldlework | ah i've read all but the socket server article :) |
22:38:17 | Karpax | currently I am using the windows binary on my crappy winxp machine, but I want to bootstrap nimrod myself just to try it |
22:39:08 | gokr1 | Btw, just tried a trivial nodejs script doing basically the same - 100 bytes payload. Only 7k req/sec and each taking 13-35 ms. |
22:39:24 | Karpax | gokr1: I found them to be very interesting and informative. I hope you will doing more. |
22:39:37 | ldlework | Araq: how about "depending on whether you call it with undeclared arguments or not (and whether the macro is defined to accepted them (it takes type 'expr'))" |
22:39:49 | flaviu | gokr1: Isn't nodejs doing much more? |
22:39:49 | gokr1 | Compared with Nim's 17k and 5-12 ms. |
22:39:58 | flaviu | like proper headers and stuff |
22:40:05 | gokr1 | Mmmm... |
22:40:30 | gokr1 | Ah, yeah, true. |
22:40:35 | ldlework | what do you mean? |
22:40:55 | Araq | ldlework: sounds good |
22:41:06 | gokr1 | flaviu: I didn't look to closely at the code - just pasted it in and ran. :) But yes, it uses http.createServer - so typically does more. |
22:41:53 | flaviu | I'm not trying to bash Nim, btw, just wanting to be fair. I'm sure Nim can do better than 17k |
22:42:14 | Araq | yeah but then our spawn that deepcopies the socket is not exactly how it should be either |
22:43:43 | gokr1 | Yeah |
22:44:00 | flaviu | Also, can't sockets be reused? |
22:44:11 | * | BlaXpirit quit (Quit: Quit Konversation) |
22:44:23 | gokr1 | flaviu: Oh, can try the other silly example on their page. |
22:44:43 | flaviu | gokr1: hmm? |
22:45:04 | gokr1 | The one using net instead. |
22:45:44 | flaviu | I still have no idea what you're trying to say, sorry |
22:46:05 | gokr1 | nodejs.org |
22:46:11 | * | BitPuffin quit (Ping timeout: 255 seconds) |
22:46:18 | flaviu | oh, sure |
22:47:13 | * | fowl joined #nimrod |
22:47:27 | Karpax | good night folks, see you later |
22:54:29 | Araq | ldlework: your blog software has no Nim syntax highlighting support? |
22:54:29 | ldlework | Araq: apparently not |
22:54:29 | Araq | try dom96's blog software |
22:54:29 | gokr1 | Its ghost, right? |
22:54:30 | ldlework | gokr1: yeah an old old version |
22:54:30 | gokr1 | Octopress that I use - uses Pygments and it does "nimrod" just fine it seems. |
22:54:30 | gokr1 | I played with ghost a bit. |
22:54:30 | * | Karpax quit (Quit: Page closed) |
22:54:31 | ldlework | live markdown is nice |
22:54:32 | Araq | good night |
22:54:32 | ldlework | o/ |
22:54:32 | gokr1 | Araq: nite |
22:54:33 | ldlework | Araq: you think I should share the article with the wider world? |
22:55:31 | gokr1 | Ok, redid the nodejs test - this time a minimal net server - it does exactly the same. |
22:55:44 | gokr1 | Still... 10k req/sec and 10-21 ms per req. |
22:55:59 | gokr1 | So its still quite a lot slower than the Nim spawning one. |
22:56:55 | gokr1 | And ... it didn't handle 1000 concurrent that well either. |
22:57:44 | * | johnsoft quit (Ping timeout: 244 seconds) |
22:58:02 | * | johnsoft joined #nimrod |
22:58:57 | flaviu | gokr1: Can you post the code? I think I'm getting the lengths messed up or something. |
22:59:16 | gokr1 | sure... |
23:00:14 | gokr1 | https://gist.github.com/gokr/af45fc1904cae4ff669b |
23:00:32 | gokr1 | I think its equally silly as spawningserver :) |
23:00:58 | gokr1 | I just used the node I had - 0.10.25 |
23:01:17 | gokr1 | And I ran with ab. |
23:01:36 | flaviu | gokr1: Thanks! Looks like I didn't close the socket correctly |
23:01:36 | superfunc_ | ldlework: where in SF is docker? |
23:01:47 | superfunc_ | just curious, I used to live in the east bay |
23:01:50 | gokr1 | Yeah, I found that "end(" thingy :) |
23:01:57 | ldlework | superfunc_: financial district |
23:02:29 | gokr1 | We will probably move towards using Docker, but its on our todo. Do you work there or? |
23:03:03 | ldlework | yeah |
23:03:12 | gokr1 | Nice |
23:03:42 | ldlework | too bad I can't bear to work with Go |
23:03:44 | gokr1 | Our system uses ... chroots to run desktop apps in a locked up fashion on our servers. |
23:03:59 | gokr1 | And then we project their UIs via VNC into our 3D worlds. |
23:04:10 | ldlework | nice |
23:04:14 | gokr1 | That chroot stuff is nasty, docker seems obvious. |
23:04:19 | ldlework | gokr1: definitely |
23:04:26 | ldlework | gokr1: what kind of 3D worlds? |
23:04:45 | * | dapz joined #nimrod |
23:04:54 | gokr1 | Our system is called Terf, its the successor of Teleplace - check youtube for "Teleplace". |
23:04:58 | gokr1 | Company is 3dicc.com |
23:05:18 | gokr1 | And yeah, the homepage isn't exactly stellar - but our system is pretty cool :) |
23:06:04 | superfunc_ | ldlework: it could be worse |
23:06:59 | Varriount | Araq: Png |
23:07:05 | ldlework | gokr1: I hold the opinion that the focus on the virtual office motiff is what has held back the metaverse |
23:07:14 | ldlework | gokr1: but its an ignorant opinion :P |
23:07:17 | * | boydgreenfield joined #nimrod |
23:08:06 | gokr1 | I am actually not that well versed in the 3D virtual world marketplace so to speak - but I do know that our customer cases are ... very varied. |
23:08:35 | Varriount | Araq: Here are links to the new installers. First is 32 bit - https://drive.google.com/file/d/0B077nrrf63xtVG9FZ0FQVmw0WHM/view?usp=sharing |
23:08:58 | Varriount | Second is 64 bit - https://drive.google.com/file/d/0B077nrrf63xtSXhHUlprcEV5WFk/view?usp=sharing |
23:09:07 | gokr1 | So Terf is not "just" a google hangout with some 3D - it can do much more. Exactly what you can use it for - well, right now we have a pretty big deployment in Brazil - a virtual University. |
23:09:23 | * | xenagi joined #nimrod |
23:09:28 | flaviu | gokr1: My results are that nodejs and nim are equivalent. |
23:09:37 | gokr1 | flaviu: Oh? How much? |
23:09:54 | gokr1 | Or... what CPU/OS are you on? :) |
23:10:03 | flaviu | gokr1: https://gist.github.com/flaviut/c2397100b13aeac71fb8 |
23:10:27 | ldlework | gokr1: I just wanted a realtime shared programming environment without any preconcieved notions |
23:10:46 | ldlework | I just want a black void where I can create geometry and give it behavior in a language that doesn't suck worse than PHP |
23:10:48 | ldlework | (LSL) |
23:10:48 | flaviu | linux 3.17.1-1-ARCH, Phenom II x4 |
23:11:18 | gokr1 | Our system builds on Croquet - so our object synchronization is totally domain independent. |
23:11:24 | NimBot | Varriount/NimLime master ffc7352 Erik O'Leary [+0 ±2 -0]: Altered auto-indent regex to not match comments |
23:12:02 | gokr1 | In other terms: We use bit perfect simulation and only perfect synchronization of "input events" from all participating computers. |
23:12:05 | ldlework | gokr1: so you can use croquet to build a tiny app that shares the state of say some simple sprites in a 2D environment? |
23:12:18 | gokr1 | sure |
23:12:33 | gokr1 | The synchronization technique has nothing to do with 3D. |
23:12:33 | ldlework | gokr1: it seems like that's how it should be marketed |
23:12:47 | gokr1 | Well :) |
23:12:51 | ldlework | at least on the development side |
23:13:05 | gokr1 | I noted the other day that Little Big Planet does something similar. |
23:13:11 | ldlework | like look, you can get started with this, really easily, here's a multi-user hello world |
23:13:31 | ldlework | and its just like the mouse cursor position |
23:13:38 | ldlework | that would be amazing |
23:13:38 | gokr1 | Yeah. The protocol etc is fairly easy - the hard part is bit perfect simulation. |
23:13:53 | ldlework | gokr1: but how much does the app developer have to do if they use croquet |
23:14:36 | gokr1 | So our system has something called the "Island" - which is an isolated object model representing the world. This "island" is fed input events via the synchronization mechanism - so that all computers receive the same events in the exact same order. |
23:14:48 | gokr1 | Thus making sure our models evolve exactly the same. |
23:15:09 | gokr1 | This includes stuff like... your float ops must work EXACTLY the same as mine. |
23:15:20 | gokr1 | Or we will drift apart. |
23:15:27 | ldlework | gokr1: how do you handle things like latency |
23:15:39 | ldlework | gokr1: can croquet support things like, a rolling ball |
23:15:53 | gokr1 | I think so, yes. |
23:15:57 | gokr1 | I haven |
23:16:03 | ldlework | I can't imagine how it does that generally |
23:16:18 | gokr1 | Remember... we don't synch *state*. |
23:16:23 | gokr1 | We just synch *input events*. |
23:16:30 | gokr1 | So a rolling ball is trivial. |
23:16:44 | ldlework | yeah prediction and all of that would be up to the app developer |
23:16:50 | gokr1 | Input events = mouse clicks and keyboard presses basically. |
23:16:54 | ldlework | gokr1: have you hooked Nim up to croquet? |
23:16:59 | gokr1 | No... you don't need prediction. |
23:17:11 | ldlework | gokr1: of course you do |
23:17:14 | gokr1 | bit perfect simulation. |
23:17:24 | gokr1 | That's the ultimate prediction of everything. |
23:17:50 | gokr1 | Let's say you click on a ball so that it starts to roll down a slope. |
23:18:04 | ldlework | right |
23:18:09 | gokr1 | That click will be executed at the same logical time instant on all machines involved. Say 100 people. |
23:18:15 | ldlework | that's not possible |
23:18:21 | gokr1 | We only do this "logical time". |
23:18:24 | gokr1 | It is. |
23:18:32 | ldlework | How? |
23:18:38 | gokr1 | What do you mean? :) |
23:18:45 | ldlework | Does it not start simulating the ball rolling as soon as I click it locally? |
23:18:50 | gokr1 | Nope |
23:18:56 | ldlework | so there's input lag |
23:19:18 | gokr1 | When you click your machine will send the click to a "router" server - it will timestamp it and number it - then send it out to all participating machines. |
23:19:27 | ldlework | including back to you |
23:19:32 | gokr1 | Yes. |
23:19:32 | ldlework | so its not useful for realtime simluations |
23:19:45 | gokr1 | Depends on what you mean. |
23:19:49 | ldlework | well, like, realtime physical simulations no less |
23:19:59 | gokr1 | The ball will roll perfectly. The mouse click will have a slight delay. |
23:20:06 | ldlework | right |
23:20:20 | ldlework | It sounds awesome |
23:20:20 | gokr1 | You can have 1000 balls rolling perfectly. |
23:20:27 | gokr1 | It is. |
23:20:34 | ldlework | gokr1: right but its not useful for games, etc |
23:20:51 | gokr1 | Its "less" useful for FPS games - but most other games, definitely usable. |
23:20:51 | ldlework | well certain games |
23:20:57 | ldlework | yeah like a game of go |
23:21:05 | ldlework | or an artificial life simulation |
23:21:10 | gokr1 | No, I would say RTS games work just fine. |
23:21:21 | gokr1 | But mouse-click-you-are-dead works less well. |
23:21:22 | ldlework | right sure |
23:21:41 | ldlework | gokr1: the thing I want is like an environment where you and I could log in |
23:21:44 | ldlework | and I could draw a shape |
23:21:49 | ldlework | and you could write a script |
23:21:53 | ldlework | and we could put em together |
23:21:57 | ldlework | and have it simulate live |
23:22:14 | gokr1 | This is basically what Croquet is. |
23:22:16 | ldlework | liek a really super efficient second life but totally abstract without all the overhead of simulating wavy hair and shit |
23:22:33 | ldlework | gokr1: have you hooked up croquet to Nim yet? |
23:22:49 | gokr1 | Hehe, well - let's say we are looking at it :) |
23:23:10 | gokr1 | Also, this codebase/algorithm was started as Croquet by Alan Kay etc |
23:23:21 | * | Matthias247 quit (Read error: Connection reset by peer) |
23:23:31 | ldlework | gokr1: how many days of work would it be to take croquet and SDL and make a basic hello world that used some of the most basic features? |
23:23:33 | gokr1 | Then it turned into the commercial Teleplace, and subsequently open sourced as OpenQwaq and also OpenCobalt. |
23:23:50 | gokr1 | We bought all ip of Teleplace, and now we sell it under the name Terf. |
23:23:59 | * | boydgreenfield quit (Ping timeout: 245 seconds) |
23:24:08 | gokr1 | But the basic code is out there as OpenQwaq and OpenCobalt. Several papers on it too. |
23:24:32 | gokr1 | Mmm, hard to say - it depends on how you go about that. |
23:24:58 | gokr1 | Croquet and all those derivatives I mentioned - including our product - is all in Smalltalk. |
23:25:06 | gokr1 | 100% Squeak code. |
23:25:17 | gokr1 | Well, at least the core code. |
23:25:58 | gokr1 | Now, if you want to use... another language - then you would need to read up on the Croquet architecture - and reimplement it somewhere else. |
23:26:20 | gokr1 | The architecture is actually not that complicated - but "bit identical simulation" may be, depending. |
23:26:47 | gokr1 | There are several publishings around this. |
23:27:02 | gokr1 | This is one: http://www.liacs.nl/~fverbeek/courses/hci/Croquet2003-paper.pdf |
23:28:21 | gokr1 | http://en.wikipedia.org/wiki/Croquet_Project |
23:30:44 | * | boydgreenfield joined #nimrod |
23:34:47 | gokr1 | Btw, Virtual World Framework builds on the same principles, its David Smith's continued work - but in a js arena: https://virtual.wf |
23:37:31 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:40:26 | ldlework | heh no thanks |
23:42:05 | flaviu | https://vwf.adlnet.gov/0776/adl/sandbox/example_terraingrass/ is pretty cool |
23:42:25 | flaviu | its one of the virtual.wf demos |
23:44:36 | gokr1 | ldlework: Note that the original TeaTime protocol was a bit complicated with P2P thrown in. Here Andreas Raab (RIP) explains what we use now: http://markmail.org/message/rz4udb5mpxe2xtuw |
23:48:59 | * | dapz joined #nimrod |
23:50:16 | * | dapz quit (Client Quit) |
23:50:46 | * | darkf joined #nimrod |
23:53:18 | ldlework | does nim compile to obj-c? |
23:53:40 | gokr1 | I think it can, didn't try. |
23:53:54 | gokr1 | Somone has done some iOS app with it, right? |
23:54:23 | gokr1 | ldlework: https://github.com/gradha/seohtracker-ios |
23:55:04 | ldlework | gokr1: is there info on compiling to ios? |
23:55:30 | gokr1 | Dunno, but gradha has more: https://github.com/gradha/nimrod-objective-c-bridge |
23:55:50 | gokr1 | And again: https://github.com/gradha/nimrod-on-ios |
23:55:52 | gokr1 | :) |
23:57:19 | gokr1 | ldlework: What's your email? |
23:57:29 | ldlework | gokr1: [email protected] |
23:57:48 | gokr1 | I can send a pdf to you that has "fallen off the edge of the Internet" |
23:57:50 | ldlework | hmm does nimrod have RAII? |
23:57:56 | ldlework | gokr1: sure |