00:00:17 | BitPuffin | EXetoC: huh? |
00:00:29 | * | mario-goulart left #nimrod ("ERC Version 5.3 (IRC client for Emacs)") |
00:01:10 | EXetoC | I think you did "type x = y", which is an alias |
00:01:28 | BitPuffin | hm |
00:01:29 | BitPuffin | well |
00:01:35 | BitPuffin | that's creating a type |
00:01:43 | BitPuffin | I'm trying to alias a proc |
00:02:05 | BitPuffin | alias '*.` = dot |
00:02:06 | BitPuffin | etc |
00:06:31 | EXetoC | I guess not |
00:08:22 | BitPuffin | hrm |
00:10:17 | EXetoC | like I said, you can use templates etc, but then you might as well just write a wrapper function |
00:11:19 | BitPuffin | EXetoC: pretty much what I'm doing |
00:11:30 | BitPuffin | really strange that you can't just create a symbol alia |
00:11:31 | BitPuffin | s |
00:11:38 | BitPuffin | gotta talk to Araq about that :P |
00:13:52 | BitPuffin | EXetoC: is `*x` a valid operator name, or does it has to be special characters |
00:16:08 | BitPuffin | has to be special oki |
00:16:09 | EXetoC | I think you need to include ` at the call site then |
00:19:03 | EXetoC | so it's not very useful in that case |
00:19:07 | * | EXetoC quit (Quit: WeeChat 0.4.1) |
00:34:50 | BitPuffin | I THINK, vectors are feature complete now |
00:42:45 | * | BitPuffin quit (Ping timeout: 264 seconds) |
01:03:45 | * | Trix[a]r_za joined #nimrod |
01:19:30 | * | DAddYE quit (Remote host closed the connection) |
01:20:06 | * | DAddYE joined #nimrod |
01:24:21 | * | DAddYE quit (Ping timeout: 248 seconds) |
01:39:01 | * | q66 quit (Quit: Leaving) |
02:01:36 | * | mario-goulart joined #nimrod |
02:12:38 | * | Associat0r joined #nimrod |
02:21:15 | * | DAddYE joined #nimrod |
02:27:58 | * | DAddYE quit (Ping timeout: 276 seconds) |
03:24:18 | * | DAddYE joined #nimrod |
03:31:18 | * | DAddYE quit (Ping timeout: 264 seconds) |
04:13:21 | * | OrionPK quit (Quit: Leaving) |
04:27:36 | * | DAddYE joined #nimrod |
04:34:35 | * | DAddYE quit (Ping timeout: 260 seconds) |
05:26:25 | * | DAddYE joined #nimrod |
07:05:04 | * | Endy joined #nimrod |
08:16:11 | * | DAddYE quit (Remote host closed the connection) |
08:16:20 | * | DAddYE joined #nimrod |
08:16:26 | * | DAddYE quit (Remote host closed the connection) |
08:16:57 | * | DAddYE joined #nimrod |
08:21:23 | * | DAddYE quit (Ping timeout: 260 seconds) |
08:26:23 | * | erlnoob joined #nimrod |
09:17:38 | * | DAddYE joined #nimrod |
09:24:36 | * | DAddYE quit (Ping timeout: 256 seconds) |
09:46:57 | * | BitPuffin joined #nimrod |
09:48:06 | BitPuffin | oihoi! |
09:48:11 | BitPuffin | sup errbody? |
09:52:09 | BitPuffin | Araq: is there a pretty way to create an alias? |
09:59:50 | Araq | BitPuffin: only via a template |
10:00:13 | * | Araq is no fan of aliases |
10:00:47 | BitPuffin | Araq: ah I see, well that's a shame |
10:01:11 | BitPuffin | Araq: it would be nice to just be able to do something like `alias bar = foo` |
10:07:26 | BitPuffin | Araq: when doing it with a template, do I still need to have type parameters? |
10:08:02 | Araq | I think so unless it's an immediate template |
10:08:17 | BitPuffin | okay |
10:08:34 | BitPuffin | well, I think I basically only need to change the keywords from proc to template then |
10:08:47 | BitPuffin | unless the args has to be of type expr |
10:13:18 | BitPuffin | Araq: do you think it would be necessary to put parenthesis around stuff like: a + (-b) in a template? |
10:13:33 | Araq | lol no |
10:13:43 | Araq | templates are not C's shitty #defines |
10:13:54 | BitPuffin | Araq: thank jesus |
10:17:01 | * | EXetoC joined #nimrod |
10:17:58 | NimBot | Araq/Nimrod master ce71477 Araq [+0 ±2 -0]: new vm: can execute simple programs |
10:18:06 | Araq | bye |
10:20:14 | BitPuffin | see you! |
10:20:24 | BitPuffin | o/ EXetoC |
10:21:00 | * | DAddYE joined #nimrod |
10:27:07 | * | DAddYE quit (Ping timeout: 246 seconds) |
10:29:56 | EXetoC | lo |
10:30:30 | BitPuffin | EXetoC: can you think of any operation that I haven't added to the vectors yet? |
10:30:56 | BitPuffin | https://github.com/BitPuffin/linagl/blob/master/src/linagl/vector.nim |
10:33:31 | BitPuffin | hmm |
10:33:40 | BitPuffin | I guess - could be made more efficient |
10:34:00 | BitPuffin | it currently goes through the vector twice :/ |
10:34:17 | * | q66 joined #nimrod |
10:35:24 | BitPuffin | although I'm just assuming |
10:35:45 | EXetoC | twice? |
10:35:55 | EXetoC | those are the essentials I guess, but I'm no expert |
10:36:19 | EXetoC | I usually look at OGRE's implementation, which has some other stuff as well |
10:36:43 | * | [1]Endy joined #nimrod |
10:36:45 | BitPuffin | EXetoC: well I made it so that - is a + (-b) |
10:37:02 | BitPuffin | EXetoC: + goes through the vector once, and -b goes through the vector once too, to negate it |
10:37:54 | EXetoC | right |
10:38:35 | BitPuffin | so I changed that now |
10:38:40 | BitPuffin | hrm |
10:38:56 | BitPuffin | does one really need all the squaredMagnitude and all that jazz |
10:40:37 | * | Endy quit (Ping timeout: 248 seconds) |
10:40:38 | * | [1]Endy is now known as Endy |
10:43:49 | EXetoC | rarely |
10:46:02 | BitPuffin | I'll skip that for now |
10:46:19 | BitPuffin | now I wonder how I should do with matrices |
10:46:24 | BitPuffin | opengl stores them column major |
10:47:11 | BitPuffin | maybe I should just make it so that it's stored that way |
10:53:16 | BitPuffin | http://pastebin.com/GQ0hTzcs |
10:53:36 | BitPuffin | However it would be nice if one could write literals the way they actually are |
10:53:56 | BitPuffin | maybe I can override the = operator for literals somehow? |
10:54:12 | BitPuffin | and transpose the matrix they enter |
10:57:23 | * | erlnoob left #nimrod (#nimrod) |
11:07:14 | EXetoC | I don't think you can |
11:09:16 | BitPuffin | nope |
11:09:17 | BitPuffin | hmm |
11:09:23 | BitPuffin | I wonder how I'm gonna do then |
11:09:29 | BitPuffin | maybe implement a constructor for it |
11:10:15 | EXetoC | yeah |
11:19:12 | BitPuffin | what's the most efficient way to build a string? |
11:31:51 | BitPuffin | like if you are going to do a lot of concatenation |
11:43:34 | BitPuffin | char sequence? |
11:46:29 | * | gradha joined #nimrod |
11:47:08 | gradha | BitPuffin: strings are mutable in nimrod, use 'var s = "foo"; s &= "bar"' |
11:48:56 | EXetoC | and they are basically just seq[char] internally, right? |
11:49:49 | BitPuffin | okay gradha :), was just worrying if there was potential overhead doing that |
11:50:10 | gradha | EXetoC: no idea, maybe seqs don't guarantee memory continuity |
11:52:48 | gradha | BitPuffin: I guess if you already know all your strings sizes it may be more efficient to preallocate the target's destination size to avoid reallocs, newString can be used for that |
11:53:17 | EXetoC | dealing with C libs would be very complicated then |
11:54:00 | gradha | EXetoC: in system there are setLen procs for seqs, so I guess the memory is guaranteed to be continuous, otherwise those wouldn't exist |
11:56:01 | BitPuffin | gradha: newString(numberOfChars)? |
11:56:19 | gradha | yes |
11:56:25 | BitPuffin | will &= still work? |
11:56:30 | EXetoC | the documentation is pretty clear in this case |
11:56:39 | EXetoC | yep, string as string |
11:57:26 | EXetoC | no wait |
11:57:56 | gradha | BitPuffin: I think you would have garbage then, since &= will likely use the length to append more |
11:58:17 | EXetoC | "proc newStringOfCap*(cap: int): string" |
11:58:29 | gradha | that's more like it if you want to use add/&= |
11:59:07 | BitPuffin | well then it's too inconvenient :D |
11:59:41 | BitPuffin | easier to just use &= |
11:59:42 | gradha | EXetoC: yeah, you would use the lists module for non linear space |
11:59:53 | BitPuffin | then I don't have to worry about indices |
12:00:06 | gradha | BitPuffin: I would first profile before doing anything at all |
12:00:30 | BitPuffin | gradha: is there a good profiling tool for nimrod? or do you just mean time ./program |
12:01:19 | gradha | BitPuffin: I think you would use nimprof for profiling, though I haven't needed it so far |
12:03:04 | BitPuffin | gradha: where can I grab nimprof? |
12:03:38 | BitPuffin | oh it's in the stdlib |
12:03:55 | gradha | it needs a compiler switch to work |
12:06:04 | BitPuffin | I can't seem to find the docs for it |
12:09:10 | Araq | BitPuffin: http://nimrod-code.org/estp.html |
12:09:33 | BitPuffin | the exact second I click on that link on the website lol Araq :) |
12:10:53 | BitPuffin | isn't it just better to time the execution of something? |
12:10:54 | BitPuffin | or well |
12:10:55 | BitPuffin | not better |
12:11:13 | Araq | depends on what you're doing |
12:11:15 | BitPuffin | oh we're profiling memory |
12:11:24 | BitPuffin | yeah then we can't time it lol :) |
12:11:38 | Araq | usually profiling is not "try approach A" vs "try approach B" |
12:12:04 | Araq | you're quite lucky if you're able to do that |
12:12:32 | Araq | usually profiling means "what the heck? where is the time spent?" |
12:13:16 | Araq | also ESTP is no memory profiler but it can be used for that too |
12:16:58 | BitPuffin | Yeah I saw that |
12:17:03 | BitPuffin | --profiler:off lol :) |
12:17:08 | BitPuffin | why is it off? |
12:18:45 | BitPuffin | apparently creating a string out of a vector 50 000 times didn't do much |
12:20:21 | BitPuffin | Araq: Great that you're here btw, I'm trying to implement swizzling, It is supposed to return a vector that is the same length as the string it takes in, how do I write that in to the signature, because I can't seem to come up with anything that works |
12:21:28 | BitPuffin | proc swizzle*[T, I](a: TVector[T, I]; s: string): TVector[T, I] = |
12:21:40 | BitPuffin | doesn't really make sense to return a TVector[T, ___I___] |
12:23:04 | EXetoC | you'd need a template |
12:23:27 | EXetoC | unless you want it to be dynamic too, in which case you'd have to return a seq or something, obviously |
12:24:07 | BitPuffin | EXetoC: a template? and no I shouldn't need to return a seq, the string length should be known at compile time shouldn't it? |
12:24:13 | EXetoC | that would be kinda useless though |
12:24:33 | EXetoC | not if it's a function parameter |
12:24:44 | BitPuffin | Well |
12:25:12 | BitPuffin | you kind of call it like swizzle("xyzrgbargbstq") |
12:25:26 | BitPuffin | never really by generating a string and then calling it |
12:25:34 | BitPuffin | and I can't return a seq |
12:25:38 | BitPuffin | that would destroy errthing |
12:25:40 | EXetoC | yes, but you need a template then |
12:26:02 | BitPuffin | how would I do it with a template? |
12:27:39 | BitPuffin | hmm |
12:27:46 | BitPuffin | is there a way to make an array from a sequence? |
12:28:46 | EXetoC | I don't know. "template x(a: string{lit})..."? |
12:31:00 | * | BitPuffin goes to read the template documentation and hopes that Araq will come and enlighten me |
12:37:55 | BitPuffin | How do I check if a string only contains a certain kind of characters? |
12:38:13 | BitPuffin | like string.onlyContains("rgba") or whatever |
12:38:31 | BitPuffin | doesn't mean that it contains all of those, just that no other character is in there |
12:40:18 | BitPuffin | sounds like a regular expression to me |
12:41:18 | * | Associat0r quit (Quit: Associat0r) |
12:43:58 | EXetoC | or "not contains", where the second arg is a char set |
12:44:36 | gradha | maybe you could try using some variant of parseutils.skipUntil to see if you find a non matching character |
12:44:43 | gradha | for regular expressions there is the re module |
12:45:19 | gradha | or strutils.allCharsInSet |
12:46:23 | BitPuffin | EXetoC: considered that too |
12:46:44 | BitPuffin | gradha: hmm, I think re sounds like the winner |
12:47:01 | EXetoC | let's see if it works at compile-time |
12:48:24 | BitPuffin | EXetoC: well, templates pretty much inline them selves don't they? |
12:48:47 | BitPuffin | whatever was in the template body is substituded |
12:51:00 | EXetoC | yes but you probably want the 're' stuff to be executed at compile-time. anyway, it seems a little overkill |
12:51:40 | EXetoC | "xyzwxywzyxywz".contains({char(0)..char(255} - {'x', 'y', 'z', 'w'}) |
12:53:34 | EXetoC | Have I missed anything? |
12:56:12 | BitPuffin | EXetoC: well strings aren't always known at compile time are they |
12:56:30 | BitPuffin | but hmm |
12:56:33 | BitPuffin | maybe that works |
12:57:35 | BitPuffin | EXetoC: but it won't happen at compile time will it? |
12:58:42 | EXetoC | so have it take a literal |
12:58:46 | EXetoC | it might |
12:58:58 | EXetoC | many operations are supported at compile-time |
12:59:15 | BitPuffin | interesting |
12:59:23 | BitPuffin | how do I specify it's a string literal? |
13:02:07 | EXetoC | see the second block of code here http://nimrod-code.org/manual.html#typedesc_toc |
13:02:15 | EXetoC | actually, those anchors don't even work for me |
13:02:43 | EXetoC | search for string{lit}. do a search for enumfield if you want a list of available constraints |
13:04:18 | BitPuffin | yeah the anchors suck |
13:05:45 | BitPuffin | EXetoC: can you use that with templates too? the example uses macro |
13:10:17 | EXetoC | yeah |
13:11:26 | BitPuffin | EXetoC: so you think `when not s.contains({char(0)..char(255} - {'x', 'y', 'z', 'w'}): {.fatal.}` will work |
13:12:46 | EXetoC | I don't know if these operations don't have any side effects, or at least if the compiler can accurately decide that |
13:14:30 | EXetoC | I'll try to figure that out |
13:14:57 | BitPuffin | didn't even know you could do that {blabla} - {blabla} stuff, that's very expressive |
13:15:51 | EXetoC | yup. set[T], and .. is usually just proc `..` in the system module |
13:16:11 | EXetoC | `@` as well (@[1, 2, 3]) |
13:18:33 | EXetoC | BitPuffin: https://gist.github.com/EXetoC/6088773 |
13:19:31 | BitPuffin | EXetoC: it actually compiles in when so it seems to work |
13:19:46 | EXetoC | alright |
13:19:56 | BitPuffin | EXetoC: although I didn't import strutils :s |
13:24:33 | BitPuffin | EXetoC: weird, got an invalid characters for swizzling |
13:25:04 | BitPuffin | oh |
13:25:06 | BitPuffin | it shouldn't be not |
13:25:56 | BitPuffin | hmm |
13:25:57 | BitPuffin | vector.nim(86, 23) Error: undeclared identifier: 'T' |
13:26:38 | BitPuffin | But T is inferred from the vector passed to swizzle :s |
13:29:06 | EXetoC | BitPuffin: I guess the template doesn't have any type parameters then |
13:30:05 | BitPuffin | EXetoC: well others had |
13:30:08 | BitPuffin | and they worked |
13:31:17 | EXetoC | I don't know what you mean, but the template needs type parameters, just as your functions do |
13:31:55 | BitPuffin | Well it did have type parameters |
13:32:44 | BitPuffin | https://gist.github.com/BitPuffin/cbaa99837fa494e07cbc |
13:32:48 | BitPuffin | EXetoC: ^ |
13:33:06 | BitPuffin | and yeah I haven't updated so it also captures uppercase |
13:36:06 | EXetoC | oh well. [T](x: T) worked |
13:37:06 | EXetoC | don't you mean 0..s.len - 1? |
13:37:12 | EXetoC | (0.. <s.len) |
13:37:17 | BitPuffin | yeah |
13:37:39 | BitPuffin | EXetoC: so I should remove the I param? |
13:43:34 | EXetoC | it wasn't related to that specifically, but that might work, just that it's not constrained |
13:43:52 | BitPuffin | ah |
13:43:56 | BitPuffin | var a = [1, 3, 37].TVec3i |
13:43:56 | BitPuffin | echo($(a.swizzle(""))) |
13:44:04 | BitPuffin | don't see why it doesn't work |
13:44:27 | BitPuffin | EXetoC: well then I get undeclared I |
13:44:49 | EXetoC | you'd have to change the parameter type as well then, to just T |
13:45:06 | EXetoC | which would be a start, assuming that it works |
13:45:29 | EXetoC | what part of it doesn't? arrays cannot be converted to string yet. I think it was possible before, but the function was commented out for some silly reason IIRC |
13:45:33 | BitPuffin | don't think that would work |
13:46:06 | BitPuffin | EXetoC: the part - var result: TVector[T, 0..len(s)-1] |
13:46:06 | EXetoC | also, $ isn't strictly necessary with echo, or any function that does something like args: varargs[T, `$`] |
13:46:23 | BitPuffin | I've implemented $ so it works |
13:46:35 | EXetoC | oh right. if only you could do something like T.ElemType |
13:47:00 | BitPuffin | I also tried removing it and doing type(a) but that obviously didn't work |
13:47:13 | BitPuffin | because that doesn't return what I want |
13:47:36 | BitPuffin | could this be because of a compiler bug? >_> |
13:47:44 | EXetoC | vec[0].type? |
13:48:30 | BitPuffin | well |
13:48:40 | BitPuffin | that assumes that the vector isn't 0 dimensional |
13:51:19 | EXetoC | someone in an alternate universe might need it before that (bug?) is fixed :p |
13:51:26 | EXetoC | anyway, it should still work |
13:54:30 | BitPuffin | I'll try |
13:55:44 | EXetoC | ok, arrays can't be zero-sized |
13:55:57 | EXetoC | so there you go |
13:56:56 | EXetoC | let a=[range[0.. -1] #Error: range is empty |
13:58:12 | BitPuffin | EXetoC: yeah I noticed |
13:58:30 | BitPuffin | EXetoC: weird though, non of the cases are cought |
13:59:26 | EXetoC | and if you print the value? |
13:59:47 | * | mario-goulart left #nimrod ("ERC Version 5.3 (IRC client for Emacs)") |
14:00:15 | BitPuffin | EXetoC: the value? |
14:00:20 | BitPuffin | ooh |
14:02:04 | BitPuffin | EXetoC: apparently I can't return result that way either |
14:02:08 | BitPuffin | it has to be discarded :s |
14:03:30 | BitPuffin | I have to go for a while, I'll push in the mean time, if you find a solution, feel free to do a pull request :P |
14:04:40 | BitPuffin | https://github.com/BitPuffin/linagl |
14:04:42 | BitPuffin | cheerio |
14:05:42 | Araq | BitPuffin: does that template work? :O |
14:06:00 | Araq | template swizzle*(a: TVector; s: string{lit}) ? |
14:07:55 | EXetoC | I don't think he has actually been able to have it generate a value yet. why, is it experimental? |
14:08:20 | Araq | not really |
14:08:52 | EXetoC | maybe he needs to return expr or something. what's the default, stmt? |
14:09:01 | Araq | yeah |
14:09:09 | * | BitPuffin quit (Ping timeout: 264 seconds) |
14:09:12 | Araq | make it return 'expr' |
14:09:45 | EXetoC | NimBot: hello |
14:10:13 | gradha | NimBot: don't be shy |
14:11:45 | EXetoC | Araq: wasn't the whole "proc `$`*[T](a: openArray[T]): string" issue silly? :p |
14:12:38 | EXetoC | do you want separate functions for array and seq? |
14:13:29 | EXetoC | nvm, a compile-time branch will do (for adding @) |
14:13:41 | Araq | I don't but fowl wants the @ iirc |
14:13:49 | Araq | also again |
14:14:05 | Araq | earlier versions conflated "openArray" and "varargs" |
14:14:22 | Araq | varargs means anything gets a buggy $ operator |
14:14:29 | Araq | so it was disabled |
14:14:40 | EXetoC | oh yeah |
14:25:54 | * | DAddYE joined #nimrod |
14:32:37 | * | DAddYE quit (Ping timeout: 248 seconds) |
14:41:35 | * | zahary_ joined #nimrod |
15:21:20 | * | Sergio965 joined #nimrod |
15:29:06 | * | DAddYE joined #nimrod |
15:35:33 | * | DAddYE quit (Ping timeout: 248 seconds) |
16:13:39 | * | Mat2 joined #nimrod |
16:13:43 | Mat2 | hi @ all |
16:17:22 | Araq | hi Mat2 |
16:17:33 | Mat2 | hi Araq |
16:18:32 | Araq | interleaving the instruction stream with proc bodies is evil ... |
16:19:00 | Araq | I generate 'jmp XXX; <proc body>; XXX: ... ' |
16:19:14 | Araq | but debugging this is pita |
16:19:23 | Araq | any good ideas, Mat2? |
16:19:27 | Mat2 | I have check-up a VM model build from your sources and implemented some optimizations |
16:19:59 | Araq | well since it doesn't work yet how do some optimizations help? :-) |
16:20:08 | Araq | but sure, I'm interested |
16:21:32 | Mat2 | ehm, the mdoelled vm used your encoding and instruction-set but for speed I've recoded it in forth |
16:21:36 | Mat2 | ^modelled |
16:22:17 | Mat2 | the results told me that dispatching can be reduced to 10-15 clock cycles per instruction |
16:22:44 | Mat2 | (dependent of the cpu of course) |
16:22:56 | Mat2 | that's not bad for a register-based vm |
16:23:33 | Mat2 | the greatest gain in performance comes with static trace-compilation |
16:24:50 | Mat2 | this eases also debugging because you only have a list of address pointers which can be traced beside execution (just modifies the next routine) |
16:25:40 | Mat2 | I hold a precached buffer in memory for 32 decoded instructions |
16:26:29 | Mat2 | and another for 64 immediate parameters |
16:26:46 | Araq | how can you accurately model software pipelining when you don't know the typical instruction stream? |
16:29:16 | Mat2 | the buffer is fixed in size and because each instruction compiles into an address and each buffer-element maps directly to an element of the immediate-data cache you can implement software-pipelining just by preloading in the primitive-code |
16:30:36 | Mat2 | it's only wise to reserve some register (or statc variables) for that |
16:30:44 | Mat2 | ^static |
16:31:36 | Mat2 | in forth jargon this is called static-replication |
16:35:44 | Mat2 | http://www.complang.tuwien.ac.at/projects/interpreters.html |
16:35:54 | Mat2 | ^here you find some papers about this stuff |
16:39:16 | Mat2 | ^^ the idea is that if its not possible to meassure instruction streams directly, that's possible for indirect branches and memory references |
16:42:12 | * | DAddYE joined #nimrod |
16:49:59 | Mat2 | Araq: We bring up Nimrod as language with help of my current vm to the duinomite (the original planning was to choose Pascal but Nimrod seem to be easier for beginners) |
16:54:53 | * | Associat0r joined #nimrod |
16:54:53 | * | Associat0r quit (Changing host) |
16:54:53 | * | Associat0r joined #nimrod |
16:57:05 | Araq | Mat2: awesome |
16:57:06 | * | zahary_ left #nimrod (#nimrod) |
17:06:22 | Araq | well Mat2 feel free to optimize the heck out of it once it's stable |
17:06:47 | Mat2 | I will do :) |
17:08:35 | Araq | how is Nimrod easier than Pascal btw? :-) |
17:10:01 | Mat2 | I think Pascal features some excentrical syntax shortcomings inherited from Algol |
17:11:03 | Araq | it surely confuses verbosity with readability |
17:11:19 | Mat2 | I know beginners learning it are confused from using semicolons as sequence terminator for example |
17:11:58 | Mat2 | there arr many details most of us don't think of |
17:12:01 | Mat2 | ^are |
17:19:34 | Mat2 | on the other side, the language is somewhat restricted compared with Nimrod |
17:20:23 | Mat2 | no prototype support etc. |
17:20:34 | Mat2 | it is showing Age |
17:55:55 | * | Raynes quit (Excess Flood) |
17:56:15 | * | Raynes joined #nimrod |
18:00:31 | dom96 | hello |
18:00:44 | Mat2 | hi dom96 |
18:05:50 | EXetoC | dom96: YOOOOOOOOOOOO |
18:06:05 | dom96 | HELLOOOOOO Mat2 and EXetoC !!!!!! |
18:07:02 | Mat2 | hi EXetoC *g* |
18:07:58 | dom96 | So I am now free until the end of August! |
18:18:59 | EXetoC | Mat2: ohai |
18:19:17 | EXetoC | dom96: good stuff. watcha gonna do? write at least *some* Nimrod code I hope :> |
18:21:01 | dom96 | oh dude, I will be writing nimrod ALL the time. |
18:23:08 | Mat2 | a suggestion: write a demo and post it at pouet.net, this should attract more programmers to Nimrod |
18:24:08 | EXetoC | dom96: oic :p |
18:26:07 | EXetoC | wasn't I supposed to exercise? |
18:26:16 | EXetoC | I blame BitPuffin and his stupid code |
18:41:40 | * | EXetoC is now known as EXetoC_ |
18:41:59 | EXetoC_ | swizzling is implemented now. compile-time evaluation is pretty solid |
18:42:43 | Araq | "pretty solid" -- perhaps |
18:42:53 | Araq | but not good enough |
18:43:56 | dom96 | Mat2: I actually am a bit interested in the demoscene. Maybe someday... I have too many things planned already. |
18:44:38 | Araq | dom96: we need bitbucket support :P |
18:44:50 | dom96 | I know. |
18:45:12 | dom96 | (You mean for babel right?) |
18:46:53 | Araq | right |
18:48:14 | EXetoC_ | maybe not, but I haven't been blocked by anything so far. I'll re-evaluate it if I ever use it for rocket science :> |
18:48:50 | Araq | I ran a simple SDL demo with -d:useFFI |
18:48:54 | Araq | at compile time |
18:48:58 | Araq | :D |
18:56:35 | Sergio965 | Woo! |
18:58:00 | Mat2 | nice |
18:58:49 | Araq | key presses don't work though as the compiler still computes field offsets wrongly |
18:59:21 | dom96 | wow, i'm getting a big deja vu |
18:59:49 | dom96 | I guess this is with your new VM? |
19:00:02 | Araq | no ... *cough* |
19:00:11 | Araq | but I said "I ran" :P |
19:00:14 | dom96 | lol |
19:00:29 | Araq | and EXetoC wasn't around back then |
19:19:50 | * | BitPuffin joined #nimrod |
19:23:52 | * | rubino123 joined #nimrod |
19:24:12 | Araq | hi rubino123, how is progress with websockets? |
19:26:20 | rubino123 | I have not started the nimrod version yet |
19:26:37 | rubino123 | Got another project that took over my freetime |
19:26:52 | rubino123 | Its related to my need for the websocket though |
19:26:52 | Araq | aww |
19:27:05 | rubino123 | how tight is the postgres wrapper? |
19:27:38 | Araq | I used it in production, kind of |
19:27:50 | rubino123 | You are the lead dev? |
19:27:51 | Araq | switched to sqlite quite soon afterwards though |
19:28:22 | rubino123 | Was it a postgres problem with untrusted langauges or something else? |
19:28:32 | Araq | yes, I'm the creator |
19:28:44 | rubino123 | I have high hopes for nimrod |
19:29:12 | Araq | no problem with postgres really but too tedious to setup on a server |
19:29:12 | rubino123 | Its impressive at delivering the performance at a reasonably productive syntax |
19:29:22 | Araq | thank you |
19:29:32 | rubino123 | OK, I have a DBA so i just need to write the integrations |
19:29:40 | gradha | now that ~30 is usual on IRC, what's the next milestone? |
19:30:49 | Araq | gradha: ~50 of course and I'll be here more rarely so that my presence is a cool event to celebrate |
19:30:57 | EXetoC_ | BitPuffin: The string stuff would probably be executed at run-time, unless optimized away, and I've dealt with that |
19:31:37 | * | EXetoC_ is now known as EXetoC |
19:31:38 | Araq | EXetoC_: use a macro to optimize it away |
19:32:17 | EXetoC | I used compileTime |
19:34:18 | rubino123 | Araq: where can I find the milestones for releases if any? |
19:35:47 | Araq | rubino123: $nimrod/todo.txt |
19:36:40 | Araq | these are however my personal notes |
19:37:01 | Araq | so most of it is overly terse and not understandable :P |
19:40:44 | rubino123 | good enough |
19:40:45 | rubino123 | thanks |
19:41:21 | rubino123 | Is numerical computing going to be emphasized in the ecosystem? I ask because I saw the libsvm bindings |
19:42:43 | Araq | why do you think we have this: http://nimrod-code.org/trmacros.html ? ;-) |
19:44:46 | rubino123 | holy macros batman! |
19:47:15 | * | OrionPK joined #nimrod |
19:54:52 | * | EXetoC quit (Quit: WeeChat 0.4.1) |
19:55:06 | * | EXetoC joined #nimrod |
19:56:42 | gradha | Araq: see http://forum.nimrod-code.org/t/184/1#904 and please tell me I won't have to build manually the question mark list for the sql statement |
19:59:20 | dom96 | That last example looks like a bug to me. |
20:01:16 | Araq | dom96: hu? & for sequences is a feature |
20:01:29 | Araq | it works exactly as its signature suggests |
20:01:51 | dom96 | Shouldn't it output: 1374868327, one, two? |
20:02:20 | EXetoC | high and low seems to work at compile-time, but not len in some cases |
20:08:26 | Araq | dom96: good point |
20:08:34 | Araq | looks indeed like a bug |
20:09:11 | Araq | lol yeah |
20:09:21 | Araq | copy paste not enough modified |
20:10:10 | reactormonk | copypasta! |
20:10:58 | EXetoC | mmh, pasta |
20:12:40 | gradha | is it really a bug? I mean, for a & b I would expect b to be concatenated to a, so b would need to transform into a string first |
20:13:15 | gradha | unless the rule is "things get upgraded to the highest level object" |
20:13:23 | gradha | whatever that means |
20:13:51 | * | gradha sighs and starts writing his own quote concatenation query formatter |
20:14:21 | Araq | proc `&` *[T](x: T, y: seq[T]): seq[T] {.noSideEffect.} = |
20:14:23 | Araq | newSeq(result, y.len + 1) |
20:14:24 | Araq | result[0] = x |
20:14:25 | Araq | for i in 0..y.len-1: |
20:14:27 | Araq | result[i+1] = y[i] |
20:14:35 | Araq | that's how it looks like after the fix |
20:14:58 | Araq | no idea why you think the old buggy behaviour is valid |
20:15:45 | Araq | "Huh, this is something that sort of works automatically for other language/bindings I've tried, help this spoiled brat!" |
20:15:49 | gradha | I expect b to be transformed to the type of a, not the other way round |
20:16:10 | Araq | <-- no idea where it works this way |
20:16:14 | gradha | python |
20:16:24 | Araq | ok fair enough |
20:16:32 | Araq | it surely doesn't work this way in C# |
20:16:45 | Araq | well ... you're right it's a problem |
20:17:10 | Araq | we could introduce ?! as a way to insert stuff without quoting |
20:17:23 | Araq | or maybe just ! |
20:17:44 | reactormonk | Araq, that gets hairy |
20:18:02 | dom96 | Sounds dangerous. |
20:18:20 | dom96 | I accidentally misplace my params and i'm fucked. |
20:18:22 | Araq | well I'm not happy with the ? syntax, I think it should use $# like format |
20:18:45 | Araq | dom96: you accidentally wrote ! instead of ? |
20:19:05 | dom96 | You never know :P |
20:19:12 | gradha | this "feature" can also work in objc, most sqlite bindings require you anway to wrap simple values into objects so the wrapper can do these magical things |
20:19:13 | EXetoC | you don't like the printf syntax? |
20:19:36 | dom96 | If I mix ! and ? then it gets messy doesn't it? |
20:19:53 | dom96 | I have to be sure that I give it the params in the correct order is what I meant. |
20:20:37 | Araq | EXetoC: printf makes sense when you have no type safety, otherwise the 1 letter types after the % are stupid |
20:20:57 | gradha | it's surprising C# doesn't expand collections for the question mark |
20:22:00 | dom96 | why is there no printf macro? |
20:23:36 | EXetoC | Araq: no need to use all of it, or at least not force that. $# is kinda ugly, but maybe I can get used to it |
20:24:30 | Araq | $# is excellent once you understand it IMHO |
20:24:44 | EXetoC | well, the annoying part is having to press two different modifier keys |
20:25:01 | Araq | get a german keyboard then |
20:25:35 | Araq | dom96: so ... what's your alternative? use !!! instead? |
20:26:07 | dom96 | Araq: I don't really have an alternative. Just raising my concerns. |
20:31:20 | EXetoC | BitPuffin: linaGL? I see what you did there |
20:32:33 | Araq | gradha: what do you think of my '!' solution? it's 2 lines of code in db_sqlite.nim ;-) |
20:32:53 | Araq | ok, ok, 3 lines |
20:33:15 | gradha | wouldn't you also need to export dbQuote so I can prepare the params? |
20:33:34 | Araq | true |
20:33:52 | gradha | I like more the idea of creating n question marks |
20:34:01 | EXetoC | anyway, just a single character for the basic case would be nice. plenty of characters are not that commonly used |
20:34:23 | Araq | gradha: that requires no changes to db_sqlite then, right? |
20:35:16 | gradha | no changes required |
20:35:29 | dom96 | oooh mercurial has a built-in web server |
20:36:25 | Araq | gradha: fine with me but dbQuote should be exported and in fact |
20:36:32 | Araq | now that we have 'export' |
20:36:44 | Araq | we can pull common code into a db_common |
20:37:06 | Araq | currently there is some duplication in all of these db_* wrappers |
20:37:06 | gradha | I think my memory is wrong, according to http://stackoverflow.com/questions/283645/python-list-in-sql-query-as-parameter this behaviour of list expansion doesn't work in python either |
20:37:22 | gradha | so either I'm confusing the language or I smoke good stuff |
20:39:47 | gradha | maybe python is like 8bit games: you remember it fondly, but your memories don't match reality |
20:41:14 | Araq | I surely don't remember matplotlib fondly :P |
20:41:38 | EXetoC | doesn't it? I thought you could expand in all sorts of places |
20:42:03 | gradha | I remember PIL and pyglet with special hate |
20:49:38 | Araq | I ended up drawling every single pixel on my own to generate the graphs exactly how I wanted them |
20:50:31 | gradha | so just to make sure: string & seq[string] produces seq[string] instead of string? |
20:50:51 | Araq | sure |
20:50:57 | gradha | aha |
20:51:04 | Araq | auto join is no concept in the stdlib |
20:58:24 | dom96 | BitPuffin: Do you know if hg has a git-like --depth param for 'clone'? |
21:00:13 | Mat2 | gradha: do you know the ABC80 ? |
21:02:19 | gradha | nope |
21:04:10 | Mat2 | gradha: https://sv.wikipedia.org/wiki/ABC_800; It featured a half-compiling basic interpreter named ABC. Then take a look at the predecessor influence for pyhthon: The ABC language! |
21:05:39 | gradha | I remember typing hexadecimal programs into a spectrum without tape, FWIW |
21:06:06 | Mat2 | nice hobby ! |
21:06:16 | gradha | oh, the joy of magazine erratas |
21:08:19 | * | gradha goes thirsty into the kitchen to return with salty pistachoes |
21:08:23 | Mat2 | some years ago, I learned most z80 instructions by coding a game for the zx81 in machine-code |
21:25:56 | * | Sergio965 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
21:36:34 | Mat2 | ciao |
21:36:42 | * | Mat2 quit (Quit: Verlassend) |
21:39:20 | gradha | shame that the `?` operator requires backticks |
21:39:37 | gradha | have to write varname.`?` instead of varname.? |
21:40:15 | Araq | it's hard to support varname.? as .? would be a postfix operator |
21:40:30 | EXetoC | gradha: I've never needed them |
21:40:59 | gradha | is it possible to have ?varname or varname? without the dot? |
21:41:51 | EXetoC | the former should work |
21:41:54 | Araq | ?varname is easy |
21:42:22 | Araq | template `?`(x: expr): expr = x |
21:43:40 | gradha | wonderful |
21:44:12 | Araq | in my example code I make ? a nop. I'm sure that's what you want. |
21:49:02 | Araq | so dom96 is right: http://memedad.com/meme/19953 |
21:49:09 | dom96 | ahaha |
21:49:35 | Araq | but I'm sure I soon get 'strutils.replace' to work in my VM |
21:52:33 | rubino123 | Araq: I do not have lua on my system but the lua example runs?!? |
21:52:46 | * | Endy quit (Ping timeout: 276 seconds) |
21:53:33 | Araq | rubino123: it's magic ;-) |
21:54:16 | Araq | if you're on linux chances are high that you have it on your system though |
21:54:29 | Araq | nimrod doesn't require devel-packages |
21:57:31 | dom96 | I am such a noob at mercurial... |
21:59:04 | dom96 | I have to merge before I push huhhh |
21:59:22 | gradha | so like git? |
21:59:28 | dom96 | or maybe only when I create a new tag. |
21:59:53 | dom96 | gradha: huh? In git you just commit and push. |
22:00:19 | gradha | you can't push if the remote is out of sync |
22:00:43 | Araq | dom96: what about scriptability for the download? |
22:00:44 | gradha | maybe mercurial push is different from git push? |
22:00:57 | dom96 | hrm, ok. Perhaps mercurial pull doesn't automatically merge origin with local |
22:01:06 | dom96 | Araq: hrm? |
22:01:18 | dom96 | Araq: Have you tested babel yet? |
22:02:49 | Araq | no ... |
22:02:59 | Araq | sorry |
22:03:55 | Araq | dom96: I mean instead of hardcoding git, mercurial and then svn, make it scriptable |
22:04:48 | dom96 | uhh how would that work? |
22:04:55 | dom96 | an embedded script in the packages.json? |
22:05:08 | Araq | yeah |
22:05:14 | Araq | perhaps |
22:05:19 | dom96 | no. I'm not adding that. |
22:05:22 | Araq | or in the .babel file |
22:05:48 | dom96 | What's wrong with it being hardcoded? |
22:05:59 | Araq | downloadCmd: "mercurial pullit merc://my.mercuiral" |
22:06:23 | dom96 | What about tag switching? |
22:06:27 | dom96 | what about tag lists? |
22:06:40 | Araq | what about an FTP download? |
22:06:49 | dom96 | That will be added. |
22:07:02 | dom96 | along with http |
22:07:24 | dom96 | Why should every package specify the same downloadCmd? |
22:07:41 | gradha | I want a megaupload download too |
22:07:56 | dom96 | but megaupload is dead :\ |
22:07:58 | * | Associat0r quit (Quit: Associat0r) |
22:08:08 | gradha | ok, then napster is the way to go |
22:08:29 | Araq | what if I use codeBeamer? |
22:08:37 | Araq | are you going to add support for that too? :P |
22:08:48 | gradha | is a codeBeamer like a star treak tricoder for code? |
22:09:17 | Araq | codeBeamer is a web based Collaborative Application Lifecycle Management and Requirements management tool for distributed software development, written in Java. |
22:09:28 | dom96 | maybe I should add support for mail, you know, in case someone wants to send you a CD with a babel package. |
22:09:33 | gradha | right, so it's jave, now I know you are joking |
22:09:43 | dom96 | babel can then go to the post office and pick it up for you |
22:09:54 | Araq | dom96: now you got the spirit |
22:10:07 | gradha | dom96: floppies FTW https://www.youtube.com/watch?v=up863eQKGUI |
22:12:05 | Araq | but there is at least Bazaar, Darcs and Fossil to support too |
22:12:27 | dom96 | screw that shit |
22:12:49 | Araq | downloadCmd is starting to look nice, hu? :P |
22:12:59 | dom96 | no |
22:21:52 | dom96 | What should be installed by default if the git repo has tags, git HEAD or the latest tag? |
22:23:31 | dom96 | (And by git I mean any VCS) |
22:24:48 | dom96 | i'm going to go for the latter |
22:26:04 | Araq | really? |
22:26:08 | Araq | not git HEAD? |
22:26:15 | Araq | what about living on the edge? |
22:26:24 | dom96 | it's possible that HEAD will be unstable. |
22:26:42 | Araq | yeah but that's the point |
22:26:59 | Araq | otherwise the tag should have been included |
22:27:07 | dom96 | I suppose it's easier to specify the specific version that 'latest' |
22:27:17 | dom96 | *than |
22:27:49 | dom96 | i'm not sure what you mean by what you just said |
22:28:21 | Araq | well I dunno, it seems we need 2 different "latest" |
22:28:43 | Araq | latest tag and HEAD |
22:29:56 | dom96 | no, this makes sense. |
22:30:02 | dom96 | you're confusing me |
22:30:13 | Araq | ok |
22:30:14 | dom96 | You don't want your dependencies to be HEAD by default |
22:30:22 | Araq | I do |
22:30:32 | * | Araq doesn't care about tags |
22:30:34 | dom96 | Safer to have them be the latest version |
22:31:03 | Araq | safer to include every last bugfix :P |
22:31:21 | dom96 | many use the master branch as the dev branch... |
22:31:29 | dom96 | like, well, you. |
22:31:41 | dom96 | until recently perhaps |
22:31:42 | dom96 | :P |
22:33:00 | dom96 | it's a pretty bad idea to depend on HEAD. |
22:33:56 | dom96 | haven't you read the Go story? :P |
22:34:19 | gradha | the Go story or the Go! story? |
22:34:40 | dom96 | The Go!!! story! |
22:34:55 | gradha | don't know about it, sorry |
22:35:32 | Araq | dunno I think Go's packager manager is awesome |
22:35:47 | Araq | it's clearly broken but simple |
22:36:03 | Araq | and since every package manager is broken anyway, simplicity wins |
22:36:11 | Araq | of course except Babel |
22:36:20 | dom96 | babel always wins |
22:36:31 | Araq | Babel will be the first non broken pakcage manager |
22:36:53 | dom96 | Well thinking about this more. It's a bit odd. |
22:37:01 | dom96 | If there are tags present in the repo |
22:37:07 | gradha | searching for "The Go!!! story!" I arrived to http://gointothestory.blcklst.com. Nice police clip. |
22:37:13 | dom96 | babel will find the latest version and use it |
22:37:17 | dom96 | if there are not it will use HEAD |
22:37:53 | dom96 | This behaviour could be confusing. |
22:38:53 | dom96 | But it makes sense I think. |
22:41:32 | EXetoC | your head is confusing |
22:41:37 | BitPuffin | EXetoC: yeah! too bad it won't be called linagl for much longer :) |
22:41:57 | BitPuffin | dom96: not entirely sure, ask in their irc perhaps? |
22:42:13 | dom96 | it's not that important. |
22:42:48 | dom96 | EXetoC: I'm way too tired to be thinking about deep package manager issues :\ |
22:43:02 | BitPuffin | dom96: it's for submodules right? |
22:43:06 | EXetoC | I just said something random, really |
22:43:44 | EXetoC | and I meant the shape of your head. think Karl Pilkington |
22:44:09 | BitPuffin | Karl Pilkington is amazing |
22:44:13 | dom96 | BitPuffin: It's to do with history. --depth 1 will only download the latest commit, it will not download the rest of the history. |
22:44:26 | EXetoC | yes, with a head like a fucking orange |
22:44:27 | BitPuffin | dom96: oooh, yeah that should be useful |
22:45:21 | EXetoC | BitPuffin: ok. I guess there's no need to mention OpenGL all that much |
22:45:41 | BitPuffin | dom96: maybe hg clone -r tip or head or whatever it is again |
22:46:39 | Araq | yay strutils.replace works |
22:46:54 | EXetoC | c(:) |
22:47:08 | BitPuffin | EXetoC: yeah, I hope to kind of somehow make it portable for other platforms too, the game api is ment to be able to run on pretty much everything, so say the native ps4 api ain't opengl and uses row major arrangement or whatever |
22:47:28 | BitPuffin | hey Araq, care to help a guy out? |
22:47:44 | Araq | BitPuffin: always |
22:48:33 | BitPuffin | Araq: I'm trying to implement swizzling right? But I'm getting a bunch of weird errors, it needs to be a template since I can't figure out the return type at compile time |
22:48:53 | EXetoC | and my pull request? |
22:49:06 | BitPuffin | EXetoC: oh, I didn't check |
22:50:03 | BitPuffin | EXetoC: why can't it take a TVector? |
22:50:49 | BitPuffin | EXetoC: I find it funny that you made a bunch of semantic changes after your preferences >_< |
22:51:23 | EXetoC | oops |
22:51:42 | EXetoC | I'll remove that |
22:52:10 | BitPuffin | EXetoC: and I'm fairly sure len(a) worked, why make it high - low + 1? |
22:52:43 | EXetoC | will only take a minute |
22:52:53 | EXetoC | BitPuffin: it didn't when I tried |
22:53:07 | BitPuffin | EXetoC: Do you have the latest nimrod? |
22:53:08 | EXetoC | it simply didn't work at compile-time at that point |
22:53:30 | Araq | EXetoC: I fixed the 'len' bug |
22:53:31 | EXetoC | no, but I'll install it |
22:53:34 | EXetoC | alright |
22:53:50 | EXetoC | so I'll commit some stuff after that |
22:54:05 | BitPuffin | Btw |
22:54:15 | BitPuffin | what's the type for these literals? |
22:54:20 | BitPuffin | {'x', 'X', 'r', 'R', 's', 'S'}, |
22:54:27 | EXetoC | set[char] |
22:54:31 | BitPuffin | ah |
22:54:34 | BitPuffin | so it's sets |
22:54:48 | EXetoC | you can echo it. it'll give you an error, but with the type in it :p |
22:55:02 | EXetoC | usually easier than importing that module |
22:57:56 | BitPuffin | I'm fairly sure I tested it :s |
22:59:01 | EXetoC | it should tell you what type you tried to pass to it. typedesc[something] |
23:00:56 | NimBot | nimrod-code/babel master 07b7f46 Dominik Picheta [+1 ±5 -0]: Implemented download of packages residing in mercurial repos.... 5 more lines |
23:01:08 | dom96 | BitPuffin: there you go. |
23:01:24 | dom96 | oh yeah, the --depth stuff |
23:03:32 | * | gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=1ZZC82dgJr8 again) |
23:03:47 | NimBot | nimrod-code/babel master 4bfbc1a Dominik Picheta [+0 ±1 -0]: Improved efficiency of hg cloning.... 2 more lines |
23:05:09 | BitPuffin | dom96: awesome! |
23:09:23 | NimBot | nimrod-code/packages master d401396 Dominik Picheta [+0 ±1 -0]: Added info about new hg support. |
23:11:01 | BitPuffin | EXetoC: a.high instead of high(a) works fine though :) |
23:11:02 | dom96 | BitPuffin: Let me know if you find any bugs :) |
23:11:08 | BitPuffin | dom96: sure! |
23:11:40 | BitPuffin | dom96: how do you suggest I package this api for babel, some people might only want to grab the math part of it for example |
23:13:08 | EXetoC | BitPuffin: I reverted all that, but ok |
23:13:21 | BitPuffin | EXetoC: ah, I'll change it later then |
23:13:38 | dom96 | You could put it into separate repos, or use directory structure like 'mylib/math.nim' |
23:13:41 | dom96 | *use a |
23:14:13 | BitPuffin | dom96: yeah I plan to do the second one, do you think people will mind downloading everything? |
23:14:33 | Araq | BitPuffin: I don't think so |
23:14:47 | Araq | I surely don't mind if it's 10K or 50K |
23:15:07 | EXetoC | BitPuffin: the issue was that it wouldn't recognize TVector as an array even though it's just an alias, and so overloading `==` this way seemed like the easiest solution |
23:15:11 | dom96 | I guess it depends how big it is. |
23:15:20 | EXetoC | but it doesn't really matter since it's an alias |
23:15:56 | dom96 | Some people may dislike depending on a library from which they only use one module. |
23:16:56 | BitPuffin | EXetoC: weird, but it worked when i tested it |
23:17:08 | EXetoC | I'll try again |
23:18:05 | EXetoC | that appears to have been fixed too |
23:20:12 | BitPuffin | EXetoC: the len thing? |
23:21:31 | Araq | Nimrod: 0.0790179 |
23:21:38 | Araq | Python: 0.022048 |
23:21:54 | Araq | for my shitty strutils.replace benchmark ;-) |
23:23:29 | BitPuffin | Araq: higher is worse right? |
23:23:34 | Araq | yeah |
23:23:42 | BitPuffin | Well, that can be optimized |
23:23:47 | dom96 | not bad for a VM you wrote in a couple of weeks. |
23:23:50 | Araq | but python's string.replace is compiled code |
23:24:00 | Araq | nimrod's is interpreted |
23:24:28 | BitPuffin | huh? |
23:24:29 | BitPuffin | oh |
23:24:30 | BitPuffin | it's the VM |
23:24:34 | Araq | yeah |
23:24:39 | BitPuffin | I thought it was statically compiled nimrod |
23:24:42 | BitPuffin | how does that compare? |
23:25:06 | Araq | I don't care |
23:25:20 | BitPuffin | fair enough |
23:25:27 | BitPuffin | it's probably about the same one would assume |
23:26:25 | Araq | not really, python has some overhead |
23:26:26 | EXetoC | BitPuffin: that and the TVector stuff. fixing both |
23:27:32 | BitPuffin | Araq: so you think it's slower? |
23:27:46 | Araq | BitPuffin: yeah |
23:28:52 | NimBot | Araq/Nimrod master ce6df5f Araq [+0 ±1 -0]: bugfix: system.& for sequences |
23:28:52 | NimBot | Araq/Nimrod master 3f63f76 Araq [+0 ±3 -0]: new vm: lots of fixes |
23:29:03 | BitPuffin | Araq: hmm, yeah it might be, I was just thinking that they have more resources to optimize such things, but obviously python can't compare to a compiled language |
23:29:52 | Araq | BitPuffin: perhaps you're right |
23:30:14 | Araq | well my benchmark is silly anyway as it includes startup overhead in both |
23:30:24 | BitPuffin | hehe :) |
23:30:26 | BitPuffin | oh well |
23:30:36 | BitPuffin | It will get better I'm sure |
23:30:49 | BitPuffin | and the VM will help me work around apple shitty bullshit shit |
23:31:01 | Araq | well nimrod needs to process system.nim and strutils.nim at startup |
23:31:06 | BitPuffin | even though iOS gets a far slower version of the game |
23:31:27 | Araq | so it's suprising these numbers are comparable |
23:31:48 | Araq | and we're only a factor of 4 slower |
23:35:37 | BitPuffin | yeah truly |
23:35:46 | BitPuffin | and it's a very new VM |
23:35:52 | BitPuffin | that was written in a short time |
23:36:08 | BitPuffin | says a lot about nimrods productivity / performance ratio, hats off |
23:36:17 | Araq | indeed |
23:36:33 | Araq | I can't imagine debugging it somewhere else |
23:37:49 | Araq | now only ~20 missing features have to be implemented :P |
23:38:57 | Araq | good night |
23:43:16 | BitPuffin | night! |
23:51:25 | BitPuffin | EXetoC: why did you remove +? I know it's silly but I don't want compilation to fail just because someone wrote +a |
23:52:03 | EXetoC | huh |
23:52:42 | BitPuffin | oh wait |
23:52:46 | BitPuffin | github showed it as removed |
23:52:49 | BitPuffin | it was just moved |
23:53:09 | EXetoC | yeah |
23:53:25 | BitPuffin | EXetoC: also why `U`? |
23:54:00 | EXetoC | missed something. wait |
23:54:21 | BitPuffin | also ~= still takes an array |
23:54:29 | BitPuffin | and T is not a range, I is (interval) |
23:58:18 | EXetoC | I can't remember why I did that, but I can fix that in another branch |
23:59:08 | BitPuffin | well I haven't merged yet |
23:59:15 | BitPuffin | so go ahead and add :) |