00:01:14 | Varriount | Araq: My getFileInfo addition is almost done. I just need to add support for birthTime, check that the _get_osfhandle native call is available on all compilers, and finish up the unit tests. |
00:03:51 | * | askatasuna joined #nimrod |
00:06:26 | reactormonk | flaviu, the model is 744MB |
00:08:22 | flaviu | I guess the PStream would work best, I doubt you can make it fit the json in memory |
00:25:29 | reactormonk | did work best |
00:25:51 | flaviu | How big was the output? |
00:28:20 | reactormonk | the 750m |
00:29:23 | reactormonk | mostly zero, let's see if there's an error somewhere... |
00:38:15 | * | DAddYE_ joined #nimrod |
00:39:06 | * | DAddYE__ joined #nimrod |
00:40:15 | * | DAddYE__ quit (Remote host closed the connection) |
00:41:45 | * | DAddYE quit (Ping timeout: 258 seconds) |
00:42:37 | * | DAddYE_ quit (Ping timeout: 250 seconds) |
00:58:26 | * | nande joined #nimrod |
01:14:25 | * | q66 quit (Quit: Leaving) |
01:19:36 | * | brson quit (Ping timeout: 265 seconds) |
01:21:17 | * | brson joined #nimrod |
01:24:04 | BitPuffin | Skrylar: does not really apply in this case though but I see your point |
01:35:59 | * | mwpher joined #nimrod |
01:36:12 | reactormonk | I think the scala version might still be faster, but drinks memory as fuck. |
01:37:47 | flaviu | reactormonk: Enable profiling and see what you get |
01:39:53 | * | mwpher_ joined #nimrod |
01:41:17 | * | DAddYE joined #nimrod |
01:41:50 | * | mwpher quit (Ping timeout: 265 seconds) |
01:41:50 | * | mwpher_ is now known as mwpher |
01:43:44 | reactormonk | flaviu, nimrod profiling? |
01:43:47 | reactormonk | I missed that one. |
01:44:01 | flaviu | Yep, pretty neat: http://nimrod-lang.org/estp.html |
01:44:16 | BitPuffin | brb |
01:44:40 | * | mwpher quit (Client Quit) |
01:45:27 | EXetoC | waowaowowoa |
01:45:46 | * | DAddYE quit (Ping timeout: 258 seconds) |
01:48:47 | * | BitPuffin quit (Ping timeout: 252 seconds) |
01:50:27 | * | psquid joined #nimrod |
01:51:40 | * | Guest6461 quit (Ping timeout: 240 seconds) |
02:14:51 | reactormonk | flaviu, http://sprunge.us/RKOY hmmm |
02:17:43 | flaviu | assign.nim:129 var src = src # ugly, but I like to stress the parser sometimes :-) |
02:19:03 | * | DAddYE joined #nimrod |
02:29:39 | * | OrionPK quit (Ping timeout: 250 seconds) |
02:33:33 | fowl | flaviu, that not ugly, sometimes you need a local copy |
02:34:00 | * | Demos joined #nimrod |
02:35:17 | Demos | ugh why do hardware configuration programs suck so much |
02:35:31 | Demos | makes xorg.conf look like the best UX ever |
02:37:40 | * | Jesin joined #nimrod |
02:38:36 | * | Demos quit (Read error: Connection reset by peer) |
02:39:20 | * | Demos joined #nimrod |
02:41:23 | flaviu | fowl: Not my code, but its a two line method where the second line just delegates to another method that doesn't need a var |
02:41:41 | * | Jesin quit (Client Quit) |
02:43:23 | flaviu | Never mind, I see. It calls addr on src, so it needs that copy |
02:46:07 | * | Jesin joined #nimrod |
02:49:22 | reactormonk | can I iterate over the values of a table and modify it the same time? |
02:49:30 | reactormonk | or is that undefined behaviour. |
02:50:21 | fowl | reactormonk, mitems() |
02:50:39 | * | BitPuffin joined #nimrod |
02:50:40 | reactormonk | fowl, I want to delete some of them |
02:51:13 | reactormonk | *some of the items |
02:53:07 | fowl | o |
02:53:28 | fowl | make a list of keys to delete and do it after iteration |
02:54:11 | reactormonk | hmm, that's gonna be big |
02:55:23 | reactormonk | uhm, do we have a sortBy somewhere? |
02:55:55 | fowl | algorithm module |
02:56:02 | fowl | sort() |
02:57:09 | reactormonk | I'm not exactly sure my commit permissions correlate with my nimrod knowledge |
02:58:07 | fowl | you are the prime minister of git |
02:58:21 | fowl | dont worry about it |
02:59:03 | reactormonk | BOW TO ME |
03:04:02 | * | BitPuffin rises |
03:06:33 | * | nande quit (Ping timeout: 245 seconds) |
03:08:13 | reactormonk | relevantContexts = accumulateSeq(cc.pairs).sort(proc (a, b: tuple[string, int]) = cmp(b[1],a[1])) |
03:08:17 | reactormonk | ^ find the syntax error |
03:10:09 | fowl | lol |
03:10:41 | fowl | reactormonk, i think the proc you send to sort has to return -1 0 or 1 |
03:11:18 | fowl | other than that i dont see any error |
03:12:12 | fowl | although accumulateSeq probably need to be assigned to a var |
03:13:05 | fowl | reactormonk, sort doesnt return a seq, its for sorting in place |
03:15:20 | Skrylar | meep |
03:15:33 | Skrylar | i have a pet peeve about methods named "sort" |
03:15:44 | Skrylar | there are at least a dozen types of sort |
03:17:04 | reactormonk | fowl, oh, int? |
03:17:05 | flaviu | I hate compare functions with +1,0,-1. Why not just use an enum, which has 0 overhead and is 100x clearer |
03:17:20 | reactormonk | fowl, and I assume cmp does exactly that? |
03:17:32 | Skrylar | well, in nimrod the compare function is a boolean |
03:17:42 | Skrylar | IIRC x > y is templated back to x < y |
03:17:46 | Skrylar | * y < x |
03:18:28 | flaviu | > fowl: reactormonk, i think the proc you send to sort has to return -1 0 or 1 |
03:19:29 | flaviu | So someone, somewhere, has decided that they prefer the weird version |
03:19:47 | reactormonk | flaviu, true false and nil otherwise? |
03:20:09 | flaviu | I don't know, sorry. |
03:21:03 | reactormonk | relevantContexts = targets.sort(proc (a, b: tuple[string, int]): int = cmp(b[1],a[1])) |
03:21:09 | reactormonk | Error: ':' or '=' expected, but found ']' |
03:23:28 | fowl | reactormonk, oh you have a tuple without types |
03:23:54 | fowl | tuple[key:string,val:int] |
03:24:18 | fowl | flaviu, how does an enum have less overhead than an int |
03:24:20 | reactormonk | figured |
03:24:27 | reactormonk | lib/system.nim(1882, 2) Error: undeclared identifier: 'result' |
03:24:31 | reactormonk | when using accumulateResult |
03:24:32 | flaviu | fowl: Enums are aliases for ints |
03:25:18 | flaviu | You can do type Foo = enum a=1, b=2, c=3 |
03:27:02 | fowl | less overhead, where? |
03:28:22 | flaviu | I said 0 overhead compared to ints. They are basically alias for ints, so they have equal performance as an int. |
03:28:40 | fowl | eh |
03:28:40 | fowl | ok |
03:29:33 | flaviu | if an int's performance is 100%, an enum has 0 overhead, so 100%+(100*0) = 100%. Sorry if my wording was unclear |
03:29:37 | reactormonk | Error: cannot infer the type of the sequence |
03:29:40 | reactormonk | ah, sad story |
03:29:42 | * | tyler joined #nimrod |
03:30:06 | * | tyler is now known as Guest75193 |
03:30:31 | * | Guest75193 is now known as TylerE |
03:30:44 | * | TylerE quit (Client Quit) |
03:30:55 | * | TylerE joined #nimrod |
03:31:09 | reactormonk | Error: expression 'sort(targets, proc (a, b: tuple[key: string, value: int]): int = |
03:31:11 | reactormonk | result = cmp(b[1], a[1]), Ascending)' has no type (or is ambiguous) |
03:31:19 | BitPuffin | fowl: you gonna test and merge or wat |
03:32:54 | fowl | reactormonk, sort sorts in place |
03:36:59 | * | flaviu quit (Quit: night) |
03:37:21 | fowl | BitPuffin, yes i keep getting distracted >_> |
03:37:39 | BitPuffin | fowl: hahah :) |
03:41:32 | reactormonk | I really wish I could just type .map(_.value) for getting something out of a tuple :-( |
03:42:48 | BitPuffin | do et |
03:42:49 | BitPuffin | naooo |
03:44:34 | fowl | reactormonk, probably possible |
03:45:16 | fowl | reactormonk, i think i can do that :D give me a few mins |
03:46:21 | BitPuffin | *ahem* |
03:46:31 | reactormonk | fowl, .mapIt(it.value) :-/ |
03:46:45 | reactormonk | anyway, I would like targets.keys[0..1999].toSet to work |
03:46:54 | fowl | is that a thing? mapIT? |
03:46:57 | reactormonk | yup |
03:47:09 | fowl | i was going to write an &. macro |
03:47:21 | reactormonk | check sequtils |
03:47:42 | fowl | &.x would return proc(it:auto):auto=it.x |
03:48:10 | reactormonk | auto works? |
03:48:16 | fowl | mhm |
03:48:22 | fowl | BitPuffin, i already merge |
03:48:23 | fowl | d |
03:49:35 | * | askatasuna quit (Ping timeout: 258 seconds) |
03:52:03 | reactormonk | hmm, no del for counttables? |
03:56:36 | BitPuffin | fowl: did you test it? |
03:58:34 | * | brson quit (Quit: leaving) |
03:58:56 | reactormonk | apparently nope. hm... |
04:09:25 | fowl | BitPuffin, visually |
04:14:06 | Skrylar | wat |
04:14:16 | Skrylar | nimrod is trying to do boolean and instead of binary and |
04:23:26 | fowl | then give it numbers instead of bools lul |
04:26:22 | Skrylar | self.uint32 and button.uint32.ButtonMask |
04:26:31 | Skrylar | buttonmask(uint32): uint32 |
04:26:33 | Skrylar | :| |
04:27:59 | fowl | did u import unsigned |
04:31:12 | Skrylar | yerp |
04:33:38 | Skrylar | time to go through the usual "something broke, update and rebuild compiler" dance :b |
04:34:21 | Skrylar | full compiler build in <20 seconds... i continue to be amazed |
04:35:25 | Skrylar | oh. well thats what went wrong |
04:35:38 | Skrylar | It doesn't understand that ButtonMask returns a uint32 and so it gets confused |
04:38:59 | reactormonk | muh, the sorting algorithm is tii slow |
04:39:22 | reactormonk | looks like I have to implement my own stuff |
04:41:52 | Skrylar | reactormonk: i did an insertion sort somewhere |
04:42:05 | Skrylar | what are you trying to sort? |
04:43:41 | reactormonk | Skrylar, a counttable, need top 2000 |
04:44:08 | reactormonk | Skrylar, a modified insert sort should do |
04:47:25 | reactormonk | anything like mitems for seq? |
04:48:59 | reactormonk | nope. |
05:02:06 | Skrylar | i haven't benched my insertion sort, its a naive implementation thats like <30 lines |
05:02:25 | Skrylar | i wrote it because the rectangle packer for sprite sheets needs sorting, and its a small dataset |
05:06:28 | * | bjz quit (Ping timeout: 240 seconds) |
05:09:19 | reactormonk | hmmm |
05:09:40 | reactormonk | big dataset here |
05:09:46 | reactormonk | timsort, anyone? ^^ |
05:09:55 | Skrylar | isn't quicksort the usual goto lol |
05:10:09 | reactormonk | sort() isn't quicksort |
05:10:27 | fowl | isnt it? |
05:10:57 | Skrylar | i didn't make any assertions on what sort() was, i said "isn't quicksort the usual goto" as in "isn't quicksort what people default to when insertion isn't good enough" |
05:11:15 | Skrylar | though i think in some fancy systems, the generic sort() function will check the total element number and then choose an appropriate subsort |
05:12:14 | reactormonk | fowl, nope |
05:12:29 | fowl | oh |
05:12:36 | reactormonk | Skrylar, timsort. |
05:12:38 | fowl | i thought we had a qsort() |
05:12:43 | reactormonk | fowl, where? |
05:13:01 | fowl | reactormonk, if its not in algorithms i was probably high |
05:14:17 | reactormonk | there's a few qsort things, but nothing accessible from nimrod |
05:14:44 | reactormonk | .gitignore:/tests/compile/tquicksort |
05:14:46 | reactormonk | hmmm |
05:16:16 | reactormonk | http://pastie.org/9083953 |
05:16:21 | reactormonk | found this here in the git repo |
05:16:48 | fowl | reactormonk, oh apparently accumulateResult is supposed to be used in a function returning a seq |
05:16:49 | * | bjz joined #nimrod |
05:17:15 | fowl | reactormonk, i attempted to make it work more like a function but im not sure how to get the type of seq from the iterator |
05:18:32 | reactormonk | ohh, I use the sort of the counttables |
05:18:35 | reactormonk | which is shellsort... |
05:20:28 | fowl | reactormonk, if you still wanted to use accumulateresult in that way a better option is sequtils.toSeq |
05:23:13 | reactormonk | hmmm |
05:23:17 | reactormonk | does that work with iterators? |
05:23:41 | fowl | "Transforms any iterator into a sequence." |
05:30:06 | reactormonk | 130648 <- number of elements in counttable |
05:37:41 | * | Demos quit (Read error: Connection reset by peer) |
05:43:38 | Skrylar | i don't even want to know why you have 130,000 objects in memory |
05:43:53 | Skrylar | but yeah, i don't think we have a sort for tables that big yet |
05:55:30 | Skrylar | reactormonk: i hope thats a table of indices or pointers |
06:12:24 | reactormonk | Skrylar, string -> int |
06:12:33 | reactormonk | Skrylar, some NLP models |
06:12:51 | reactormonk | looks like scala again... |
06:22:01 | Skrylar | is this a huge hash table? |
06:23:07 | * | nande joined #nimrod |
06:30:49 | * | noam joined #nimrod |
06:33:16 | * | noam_ quit (Ping timeout: 240 seconds) |
06:39:49 | reactormonk | Skrylar, yup |
06:39:54 | reactormonk | Skrylar, 100k, as mentioned. |
06:44:32 | Skrylar | you shouldnt need to sort a hashtable |
06:45:42 | reactormonk | Skrylar, I need the top 2k of the counttable |
06:48:03 | Skrylar | seems like there should be a neat way to use a rolling window or something and just iterate it |
06:48:32 | Skrylar | instead of trying to sort the whole 100k things, doing some cheaper check if there is room for something of a given size and keeping *that* sorted instead |
06:49:38 | Skrylar | with a lowest/highest counter so it can quickly skip over entries that have beneath the current minimum |
06:50:41 | reactormonk | Skrylar, wanna write it? ;-) |
06:50:58 | Skrylar | lol |
06:55:45 | reactormonk | Skrylar, hmm, priority queue would do it here |
06:55:53 | reactormonk | but I'm not sure if I want to implement a full one |
06:59:50 | reactormonk | how fast is sort of 2k elements? |
07:05:46 | Skrylar | well i acid test my hopscotch with 65k elements |
07:06:13 | Skrylar | so 2000 should be in the realm of a quicksort |
07:06:34 | Skrylar | that said you still have to iterate the whole word table |
07:06:59 | Skrylar | and then insertion sort the words in to the 2k area, removing the lowest ranked item if a newer one comes in |
07:07:15 | Skrylar | which is why i suggested storing the lowest, so you can skip most of the small cases |
07:07:47 | Araq | reactormonk: just use db_sqlite and call it a day |
07:07:47 | Skrylar | i might look at the data structure for that, but it won't be tonight |
07:07:48 | reactormonk | just the question where to insert the new one |
07:07:58 | reactormonk | Araq, hm? |
07:08:07 | Skrylar | reactormonk: in a skip list probably |
07:08:33 | Araq | I'll never understand why you keep all this data in fragile RAM, use a slim database instead |
07:09:04 | Araq | select top 2000 * from table order by someKey desc |
07:09:24 | reactormonk | Araq, using counttables mostly here |
07:09:44 | reactormonk | would you go for full SQL here? |
07:09:48 | Araq | what's the problem? shellsort not fast enough? |
07:09:55 | Skrylar | yay sqlite |
07:10:13 | Araq | "go for full SQL" is a misconception, db_sqlite is really sweet to use |
07:10:34 | reactormonk | Araq, yup |
07:10:45 | reactormonk | Araq, but I think go db_sqlite is a good idea |
07:11:01 | Araq | patch the sort to use the state of the art merge sort in algorithm.nim then |
07:11:18 | reactormonk | hmmm |
07:11:30 | Araq | though you need a "top 2000" which doesn't really require full sorting |
07:11:51 | reactormonk | indeed |
07:11:59 | reactormonk | but the idea of db_sqlite is good, I like it |
07:12:25 | Araq | you get serialization for free |
07:12:38 | reactormonk | yup |
07:12:45 | Araq | and if you don't need serialization it can't be serious work anyway ;-) |
07:13:09 | * | Araq <3 databases |
07:13:24 | * | Skrylar stores Araq in a database |
07:13:26 | reactormonk | Araq, :D |
07:13:43 | reactormonk | Araq, yup, I like to be able to serizalize |
07:13:50 | reactormonk | mostly because nimrod doesn't have a repl ^^ |
07:14:01 | Skrylar | I guess it could have one with the VM |
07:14:19 | Araq | "nimrod i" does use the VM ... |
07:14:37 | reactormonk | Araq, yeah, any way to call that from yer code? |
07:14:53 | Araq | not yet |
07:15:08 | Araq | I lost the code :P |
07:15:18 | Araq | nah, not really but it's not ready |
07:15:52 | reactormonk | I wonder... should I store the corpus there too? |
07:16:48 | Araq | yes |
07:17:08 | reactormonk | but that's seq[seq[string]] |
07:17:09 | Araq | btw I will push the first implementation of spawn/sync tonight |
07:17:26 | Araq | so you can easily parallelize your code |
07:17:44 | reactormonk | hmmmm |
07:17:59 | reactormonk | Araq, got me some sample sqlite code around for init and table creation etc. |
07:18:15 | Araq | look at nimforum's code |
07:18:22 | Varriount | Araq: I'm nearly ready to open the PR for the getFileInfo code. |
07:19:03 | Araq | seq[seq[string]] usually requires some other data representation for SQL, reactormonk |
07:20:09 | Araq | the hacky way is to join(someSeparator) one level of 'seq' away ... :-) |
07:20:50 | reactormonk | Araq, pretty sure I don't want the corpus in here. |
07:21:27 | Araq | oh well |
07:21:34 | Varriount | How do I raise a generic error again? |
07:23:01 | Araq | raise newException(EWhatever, "some message") |
07:26:19 | * | DAddYE quit (Remote host closed the connection) |
07:27:19 | reactormonk | Araq, hmmmmm, now to figure out how to index stuff |
07:28:05 | Varriount | Araq: For tests, should I cause a failure by writing output, or by raising an exception? |
07:29:47 | Araq | Varriount: just let it crash somehow, make it output 'success' when successful and specify that as supposed 'output' |
07:30:05 | Araq | that's how I do it anyway |
07:32:21 | reactormonk | Araq, what's a data structure to store a few string -> string keys in? one or two, for column name -> value |
07:33:39 | Araq | create table Foo(key varchar(max), value varchar(max)) |
07:34:30 | Araq | create index IX_Foo on Foo(key); |
07:34:59 | Araq | select value from Foo where key = 'lalala' |
07:36:10 | reactormonk | Araq, sorry. a nimrod data structure. |
07:36:53 | Araq | if you have very few keys use a seq[tuple[key, val: string]] |
07:37:02 | Araq | otherwise use a TTable[string, string] |
07:37:33 | Araq | and watch out that these are value based datatypes |
07:37:52 | Varriount | Araq: Submitted a PR |
07:37:52 | Araq | don't pass them around like no tomorrow as if it's a 'ref', it's not |
07:39:18 | Araq | Varriount: is it ready for inclusion into 0.9.4? |
07:39:39 | Varriount | Araq: Yes, to the best of my knowledge. |
07:42:48 | reactormonk | any way to escape for sqlite? |
07:43:00 | reactormonk | ah, good old ? |
07:43:04 | fowl | maaaan id like for tables to have an init() func so i didnt have to repeat the types of the table when i initialized it |
07:43:56 | Varriount | *I'd *didn't *I |
07:44:41 | fowl | ud like for me to use proper punctuals woldnt u |
07:44:51 | reactormonk | fowl, return type overload? |
07:45:17 | fowl | reactormonk, wat |
07:45:27 | Varriount | fowl: You're killing me. |
07:46:55 | reactormonk | Araq, aaaand how do I insert those tuples into sqlite queries? I don't really like plain insert, although I'm pretty sure the values don't need to be escaped |
07:47:45 | fowl | Varriount, i never knoticed before, you capitalize your sentences and use periods, lol, you arent writing a novel, this is IRC |
07:48:10 | reactormonk | fowl, this is freenode. A basic grammar is expected. Take your slang to quakenet. |
07:48:30 | fowl | reactormonk, *every* input into a db should be escaped even if you completely trust it |
07:49:05 | fowl | reactormonk, exec() does it for you |
07:49:13 | Varriount | Goodnight guys. |
07:51:07 | fowl | reactormonk, irt freenode, grammar, etc: i disagree |
07:52:08 | reactormonk | fowl, bit more complicated if you have varargs |
07:52:50 | Araq | reactormonk: db_sqlite does all the quoting for you |
07:53:03 | fowl | oh apparently all those functions take varargs |
07:53:22 | Araq | they all quote properly |
07:53:27 | reactormonk | Araq, now I have that seq[tuple[key, val: string]] - how do I escape that properly? |
07:54:34 | Araq | for tup in myseq: db.exec(sql"insert into Foo(key, value) values (?, ?)", tup.key, tup.val) |
07:55:04 | reactormonk | not that easy |
07:55:29 | reactormonk | each of the pairs determines which column has to match what |
07:55:30 | Araq | add some examples to the docs when you're done |
07:56:16 | reactormonk | looks like I have to |
07:56:20 | Araq | reactormonk: if it is not easy, you're doing it wrong |
07:57:22 | * | DAddYE joined #nimrod |
07:57:40 | reactormonk | Araq, trying to abstract over the update |
07:57:56 | reactormonk | ehh, inc, basically. |
08:00:12 | reactormonk | problem is, I got one or two columns as keys |
08:00:34 | reactormonk | Araq, http://pastie.org/9084295 |
08:01:40 | * | DAddYE quit (Ping timeout: 240 seconds) |
08:16:47 | * | krusipo_ quit (Quit: leaving) |
08:17:34 | * | krusipo joined #nimrod |
08:54:03 | * | bjz quit (Ping timeout: 245 seconds) |
08:57:55 | * | DAddYE joined #nimrod |
09:02:11 | * | DAddYE quit (Ping timeout: 252 seconds) |
09:09:12 | * | bjz joined #nimrod |
09:45:25 | * | nande quit (Remote host closed the connection) |
09:58:47 | * | DAddYE joined #nimrod |
10:03:21 | * | DAddYE quit (Ping timeout: 250 seconds) |
10:12:50 | * | DAddYE joined #nimrod |
10:17:31 | * | DAddYE quit (Ping timeout: 258 seconds) |
10:29:58 | * | io2 joined #nimrod |
11:13:35 | * | DAddYE joined #nimrod |
11:18:05 | * | DAddYE quit (Ping timeout: 258 seconds) |
11:24:53 | NimBot | Araq/Nimrod devel c93c014 Dominik Picheta [+0 ±2 -0]: Modified tester output. Fixed JS tests. |
12:14:31 | * | DAddYE joined #nimrod |
12:19:21 | * | DAddYE quit (Ping timeout: 265 seconds) |
12:40:43 | * | DAddYE joined #nimrod |
12:45:28 | * | DAddYE quit (Ping timeout: 276 seconds) |
12:47:25 | BitPuffin | *sigh* |
12:47:31 | BitPuffin | koch install is useless |
12:47:42 | BitPuffin | at least on unixes |
13:07:03 | * | askatasuna joined #nimrod |
13:32:55 | * | askatasuna quit (Ping timeout: 276 seconds) |
13:41:26 | * | DAddYE joined #nimrod |
13:43:07 | BitPuffin | dom96, Araq: I have now created nimrod and babel packages for crux \o/ |
13:43:15 | BitPuffin | just gotta publish them |
13:46:34 | * | DAddYE quit (Ping timeout: 276 seconds) |
13:55:29 | * | darkf quit (Quit: Leaving) |
14:42:09 | * | DAddYE joined #nimrod |
14:43:03 | * | Demos joined #nimrod |
14:46:46 | * | DAddYE quit (Ping timeout: 265 seconds) |
14:54:49 | * | BitPuffin quit (Ping timeout: 276 seconds) |
15:02:05 | * | shodan45 quit (Quit: Konversation terminated!) |
15:42:47 | * | DAddYE joined #nimrod |
15:42:52 | * | vendethiel quit (Read error: Connection reset by peer) |
15:43:12 | * | vendethiel joined #nimrod |
15:47:21 | * | DAddYE quit (Ping timeout: 252 seconds) |
15:54:01 | * | OrionPK joined #nimrod |
15:54:26 | * | Demos quit (Ping timeout: 265 seconds) |
16:02:21 | EXetoC | sup |
16:04:41 | * | [1]Endy joined #nimrod |
16:04:43 | Araq | I've implemented 'spawn' |
16:06:36 | EXetoC | ok how did you implement it? |
16:06:54 | Araq | as an AST->AST transformation in the compiler |
16:06:57 | * | Demos joined #nimrod |
16:07:04 | Araq | once the type API is ready we can make it a macro instead |
16:07:45 | EXetoC | great |
16:07:50 | Araq | still primitive though, doesn't do any work stealing |
16:08:11 | Araq | because work stealing makes no sense to me |
16:08:55 | Araq | I guess I am missing something :P |
16:10:21 | EXetoC | "Work-stealing has a serious advantage over work-requesting due to it's asynchronous nature: a thief thread is able to get some work, even if a victim thread is busy processing a user task or even de-scheduled by an OS..." |
16:10:37 | EXetoC | doing some googling now. seems relevant |
16:10:48 | EXetoC | "it's" misused again :< |
16:16:35 | Araq | well this doesn't mean anything though |
16:18:22 | Araq | it also completely ignores heap layouts and whether you have cheap sharing or not and message passing efficiency |
16:22:19 | * | joelmo joined #nimrod |
16:22:26 | * | joelmo left #nimrod (#nimrod) |
16:24:22 | * | [2]Endy joined #nimrod |
16:28:12 | * | [1]Endy quit (Ping timeout: 258 seconds) |
16:32:30 | * | [1]Endy joined #nimrod |
16:35:40 | * | [2]Endy quit (Ping timeout: 240 seconds) |
16:43:32 | * | DAddYE joined #nimrod |
16:47:51 | * | DAddYE quit (Ping timeout: 252 seconds) |
16:51:51 | * | [2]Endy joined #nimrod |
16:52:44 | * | Jesin quit (Quit: Leaving) |
16:55:02 | * | [1]Endy quit (Ping timeout: 258 seconds) |
16:55:04 | * | Demos quit (Ping timeout: 276 seconds) |
17:02:13 | * | [2]Endy quit (Quit: Want to be different? Try HydraIRC -> http://www.hydrairc.com <-) |
17:10:05 | * | BitPuffin joined #nimrod |
17:12:53 | * | askatasuna joined #nimrod |
17:14:53 | * | Demos joined #nimrod |
17:20:20 | * | Demos quit (Ping timeout: 258 seconds) |
17:22:27 | * | Demos joined #nimrod |
17:28:49 | * | Demos quit (Ping timeout: 250 seconds) |
17:28:58 | * | DAddYE joined #nimrod |
17:28:59 | * | q66 joined #nimrod |
17:29:03 | * | q66 quit (Changing host) |
17:29:03 | * | q66 joined #nimrod |
17:40:28 | * | filwit joined #nimrod |
17:40:40 | filwit | heya folks |
17:41:01 | * | q66 quit (Quit: Leaving) |
17:41:06 | filwit | i have some designs to show today :) |
17:41:13 | dom96 | hellooo |
17:41:15 | dom96 | yayyy |
17:41:15 | filwit | just finishing some graphics up first tho |
17:41:25 | filwit | give me an hour or so |
17:41:53 | filwit | ps. noticed the repo has been purged! |
17:41:59 | filwit | thanks reactormunk |
17:42:01 | filwit | monk* |
17:42:52 | dom96 | filwit: We moved the release. New date is in 4 days. |
17:43:00 | filwit | oh, and I have a potential mascot too |
17:43:01 | * | q66 joined #nimrod |
17:43:02 | * | q66 quit (Changing host) |
17:43:02 | * | q66 joined #nimrod |
17:43:07 | filwit | dom96: still too soon |
17:43:18 | filwit | no way we can get everything done by then |
17:43:30 | filwit | at least, i doubt |
17:44:13 | filwit | maybe we can get something of the visuals in, but we should probably just plan on making another announcement latter |
17:45:20 | filwit | in fact it might better to separate them. I have new graphics for the website, forum, docs, and eventually the nimbuild too |
17:46:03 | filwit | so making a specific announcement for a "graphics design update" would probably stand on it's own |
17:46:48 | filwit | and the language updates kinda stand on their own |
17:46:59 | BitPuffin | woa fowl has the most epic name of all time |
17:47:03 | filwit | so we get more announcements this way |
17:47:37 | BitPuffin | I doubt we can fix all the stuff by then as well |
17:47:38 | * | Demos joined #nimrod |
17:49:31 | filwit | btw, do i use devel or purged_devel? |
17:49:48 | BitPuffin | probably devel |
17:49:59 | BitPuffin | I imagine purged_devel will become devel |
17:50:19 | filwit | well that did help, lol |
17:50:26 | filwit | which one is the actually purged one? |
17:50:34 | filwit | i imagine purged_devel |
17:50:45 | filwit | but i just saw devel get an update yesterday |
17:50:47 | filwit | so idk |
17:51:01 | filwit | ...didnt** help... |
17:51:23 | BitPuffin | haha |
17:51:25 | BitPuffin | :P |
17:52:14 | BitPuffin | zahary: do you think the current issues with static[T] and generics can be ironed out in just 4 days? because it seems unlikely. And it doesn't seem wise to ship them in their current state |
17:52:22 | reactormonk | BitPuffin, nah, purged_devel can be killed |
17:52:31 | reactormonk | BitPuffin, it was just an intermediate experimet |
17:52:42 | BitPuffin | reactormonk: so in other words it has already become devel |
17:52:44 | filwit | thanks reactormonk |
17:53:06 | reactormonk | BitPuffin, just killed them to clear it up. |
17:54:51 | BitPuffin | reactormonk: you are so violent |
17:55:50 | BitPuffin | wow that is one big damn fast forward |
17:57:00 | dom96 | brb |
17:57:42 | BitPuffin | We should set the release to like monday or something, and we'll spend the weekend in the VNUG helping each other fix compiler bugs |
18:02:02 | BitPuffin | filwit: would that be enough time? |
18:03:44 | Araq | hi filwit |
18:03:52 | filwit | hi Araq |
18:04:00 | BitPuffin | hey Araq |
18:04:06 | Araq | hi BitPuffin |
18:04:07 | filwit | i doubt it BitPuffin |
18:04:13 | BitPuffin | hrm |
18:04:14 | filwit | but maybe for just the art changes |
18:04:19 | filwit | i'll see |
18:04:25 | filwit | right now i have a lot of stuff to do |
18:04:45 | Araq | ping Varriount |
18:04:53 | BitPuffin | are you guys making money yet on the thing filwit? |
18:06:01 | BitPuffin | Araq: what do you think about a bug sprint? |
18:06:12 | filwit | BitPuffin, i told this to dom last time I was here, and I guess it's fine to say here. My Bones-Game project may have been shut-down, which is part of the reason why i haven't really been around. |
18:06:32 | BitPuffin | filwit: oh damn :( |
18:06:33 | filwit | BitPuffin: we got classified as a gambling app, and Google kick us off the Play Store |
18:06:34 | * | Demos quit (Ping timeout: 276 seconds) |
18:06:43 | BitPuffin | filwit: man that sucks |
18:06:51 | filwit | we're currently taking legal actions, but it's slow |
18:06:53 | BitPuffin | how are you guys recoverning? |
18:06:56 | BitPuffin | ah |
18:07:00 | filwit | and we just signed up a radio station too... |
18:07:12 | BitPuffin | :( |
18:07:29 | BitPuffin | filwit: hugs |
18:07:33 | * | gXen joined #nimrod |
18:07:39 | Araq | yeah my condolences |
18:07:49 | filwit | so things are a bit undetermined as far as my financial situation right now. But there's still hope too, so we'll see. |
18:07:51 | BitPuffin | hopefully it turns for the better |
18:07:52 | filwit | thanks, both |
18:09:01 | Araq | ok, guys here comes the important question |
18:09:33 | BitPuffin | guess this one should be labeled as feature https://github.com/Araq/Nimrod/issues/1095 |
18:10:15 | Araq | we need an annotation/pragma for global variable usage tracking |
18:10:15 | filwit | after Araq asks his question, everyone please give me feedback about my mascot design: http://reign-studios.net/philipwitte/nimrod/mascot.png |
18:10:38 | Araq | rigth now I am torn between 'accesses' and 'uses' |
18:10:54 | filwit | vote: uses |
18:11:06 | Araq | it doesn't distinguish between read and write access |
18:11:17 | BitPuffin | I'd say uses as well |
18:11:31 | Araq | as that's not as useful as I thought and much more work to implement |
18:11:37 | Araq | ok, so |
18:11:51 | BitPuffin | filwit: looks like it could punch the hell out of some gophers :D |
18:12:01 | Araq | proc foo() {.uses: [stdout, stderr].} |
18:12:02 | filwit | lol |
18:12:22 | filwit | usesGlobs ? |
18:12:29 | filwit | usesGlob |
18:12:34 | BitPuffin | I feel like there is a better name |
18:12:51 | filwit | actually... 'glob' is kinda pointless i guess huh? |
18:12:55 | Araq | well it needs to be short :P |
18:13:04 | BitPuffin | uses is short |
18:13:07 | Araq | and 'glob' is not a common abbrev |
18:13:10 | filwit | yeah and you can't really 'use' a local anyways |
18:13:19 | BitPuffin | Araq: glob is a common abbrev |
18:13:33 | BitPuffin | although you'd confuse it with another kind of glob |
18:13:34 | Araq | BitPuffin: not in nimrod's stdlib |
18:13:40 | BitPuffin | Araq: exactly |
18:14:16 | BitPuffin | I think me and Araq have a more difficult time coming up with the word for it since we are not native englishers |
18:14:17 | filwit | Araq, is there, or can you make, a pragma which allows a proc to be sort of "thought as" a variable ? |
18:14:36 | BitPuffin | you mean kinda like js? |
18:14:52 | Araq | filwit: you mean invokable without () ? |
18:14:55 | filwit | Araq, when i want a proc accessor to a global property (so i down expose the original), i can't do Something.foo.bar |
18:14:55 | BitPuffin | where function foo() == var foo = function() |
18:15:04 | filwit | i have to do Something.foo().bar |
18:15:07 | filwit | Araq: yes |
18:15:32 | Araq | a template allows for that, filwit though this feature needs to be re-thought |
18:15:57 | Araq | my plan is |
18:16:01 | filwit | Araq: okay, well i'll come back to that later. It's just one of the two problems i've had recently with macro OOP stuff |
18:16:16 | Araq | template foo: expr = bar # no () for invokation necessary |
18:16:25 | Araq | template foo(): expr = bar # () for invokation necessary |
18:16:32 | BitPuffin | hmmmmmmmmmmmmmmmm |
18:16:46 | Araq | though this is against nimrod's philosophy |
18:16:48 | BitPuffin | will template foo: expr = bar still be callable with () |
18:16:50 | BitPuffin | ? |
18:16:57 | Araq | yeah, BitPuffin |
18:17:00 | BitPuffin | hm |
18:17:04 | BitPuffin | kinda inconsistent then |
18:17:04 | filwit | Araq: yeah it kinda goes against "write however, use however" |
18:17:19 | Araq | yup |
18:17:19 | filwit | Araq: i would almost prefer a pragma cause it's more explicit |
18:17:21 | BitPuffin | plus that makes it weird |
18:17:25 | BitPuffin | like in docs and stuff |
18:17:39 | BitPuffin | why can't they be used interchangably? |
18:17:51 | Araq | yeah well, I need to think about it |
18:17:56 | filwit | yeah |
18:18:00 | BitPuffin | yeah |
18:18:08 | filwit | btw, Araq, thoughts on my mascot proposal? |
18:18:31 | Araq | filwit: it's cool but too childish |
18:18:33 | BitPuffin | the gopherpuncher 2000 |
18:18:43 | * | brson joined #nimrod |
18:18:45 | Araq | nobody will take us seriously with a mascot like that |
18:19:02 | BitPuffin | Araq: people take Go seriously |
18:19:13 | Araq | no they don't |
18:19:14 | BitPuffin | how about we make him hold a decapitated gopher head? |
18:19:25 | filwit | Araq: hmm.. okay. can you elaborate on what you'd like changed perhaps? |
18:19:56 | Araq | filwit: I'm not sure we need more than the crown we currently have, in fact |
18:20:18 | BitPuffin | that's where you are wrong |
18:20:19 | * | brson quit (Client Quit) |
18:20:25 | * | brson joined #nimrod |
18:20:28 | filwit | Araq: mascots are for TShirts and watermarks on the last page or presentations... the crown is the brand logo |
18:20:30 | BitPuffin | you need a nice cartoon animal to be successful these days |
18:20:34 | filwit | of** |
18:20:56 | Araq | well ok, IF we need an animal mascot |
18:21:16 | Araq | this is not it, it's not nearly friendly enough |
18:21:19 | BitPuffin | oh look, ocaml has a new website |
18:21:28 | BitPuffin | Araq: so what you're saying is more kawaii? |
18:21:39 | filwit | lol, Araq, you specifically told me to make him look angry last we talked about it |
18:21:55 | filwit | BitPuffin, lol @ kawaii |
18:22:08 | filwit | gunna draw an animu honeybadger now.. |
18:22:19 | BitPuffin | do it |
18:22:23 | BitPuffin | with sparkly eyes |
18:22:27 | filwit | LOL |
18:22:31 | Araq | filwit: maybe but I consider it a strength to be able to change his mind |
18:22:35 | BitPuffin | and like, pink cheeks |
18:22:44 | filwit | Araq: fair enough |
18:22:51 | filwit | and i concur |
18:22:56 | BitPuffin | Araq: that's one fancy way of saying you can't make up your mind :P |
18:23:27 | filwit | but still, the mascot is one of the harder things to make, so it'll take a little while to change it, especially to make it completely different |
18:23:30 | BitPuffin | filwit: did you draw tihs in krita? |
18:23:39 | filwit | no, Inkscape |
18:23:39 | BitPuffin | or inkscape |
18:23:43 | BitPuffin | ah |
18:23:45 | BitPuffin | thought so |
18:23:50 | BitPuffin | since it looked kinda vectory |
18:23:51 | Araq | filwit: you only need to change its face though |
18:24:18 | Araq | maybe try to make it more like "honey badger don't care" |
18:24:20 | BitPuffin | how does it look if you put grey in the chest hair? |
18:24:54 | filwit | Araq: okay, "don't care" is descriptive enough. I'll see what i can do later |
18:25:19 | BitPuffin | I can think of a million ways to do don't care |
18:25:20 | Araq | but don't make it look like it's on drugs! |
18:25:25 | BitPuffin | you sure it's descriptive enough |
18:25:36 | Araq | and don't make it look like it's stupid |
18:25:54 | Araq | give him sunglasses, lol |
18:26:06 | BitPuffin | make him passed out with a bunch of beer bottles next to him and his wife and children look beaten up and are leaving him forever and have a text that says "honey badger doesn't care" |
18:26:32 | BitPuffin | or sunglasses.. yeah.. that works as well |
18:26:46 | BitPuffin | or WAIT! |
18:27:08 | BitPuffin | make a gopher that is holding on for dear life to a cliff, and have the honey badger walk away, WITH SUNGLASSES! |
18:27:44 | filwit | Araq: lol @ the drugs... will combine BitPuffins anime with a stoned badger now.. perfect mascot! |
18:27:51 | Araq | https://www.youtube.com/watch?v=718T3rkJR5o |
18:28:15 | filwit | also, sunglasses are not cool.. this is no longer the 90s |
18:28:21 | filwit | :P |
18:28:36 | Araq | I beg to differ |
18:28:46 | filwit | you still think it's the 90s? |
18:29:01 | Araq | I think they're still hip and trendy |
18:29:02 | filwit | :} |
18:29:03 | BitPuffin | sunglasses only make me think of http://youtu.be/X-LZWMc-OEY |
18:29:11 | BitPuffin | filwit: lol you troll :) |
18:29:27 | filwit | in florida we have to weir sunglasses to drive or the UV's hurt our eyes |
18:30:23 | filwit | okay, let me finish some stuff up and show y'all the rest of the designs |
18:30:36 | BitPuffin | 80s hits are the complete opposite of cool Araq |
18:30:44 | Araq | well you better hurry with a better suggestion, BitPuffin |
18:31:06 | Araq | otherwise it's "uses" |
18:31:10 | BitPuffin | Araq: all of my suggestions were better |
18:31:15 | BitPuffin | oh |
18:31:17 | BitPuffin | you mean to uses |
18:31:21 | BitPuffin | well I can't think of one |
18:31:26 | BitPuffin | but it feels like there's something better |
18:31:44 | BitPuffin | however I imagine uses is the shortest |
18:31:59 | BitPuffin | when will this be needed btw? |
18:32:25 | Araq | BitPuffin: we have a new notion of "thread safety" |
18:32:52 | filwit | new notion: "safety is for looser squares" |
18:33:10 | Araq | where "thread safe" == "uses only globals that do not contain GC'ed data" |
18:34:39 | dom96 | back |
18:35:32 | dom96 | filwit: Really cool mascot. But I agree with others, it shouldn't look pissed off. |
18:35:51 | filwit | k, thanks for feedback |
18:36:23 | dom96 | filwit: But do save it. Maybe someday we will use it for something :) |
18:36:51 | dom96 | Araq: So 'uses' means "this global is used in a thread"? |
18:39:39 | Araq | no it simpy means proc uses global |
18:43:45 | dom96 | why not call it 'usesGlobal' then? |
18:44:43 | Araq | doesn't feel right |
18:46:04 | filwit | dom96, i suggested the same thing, but can you even 'use' a local really? |
18:46:46 | filwit | and i thought you already had read/writes ? |
18:47:54 | Araq | no but it is planned |
18:48:33 | filwit | well i know it's not done, i guess i'm asking what the difference is between 'read/write' and 'uses' |
18:50:12 | Araq | well 'uses: X' means 'reads: X; writes: X' obviously |
18:51:01 | filwit | k |
18:52:15 | dom96 | how about 'in'? |
18:52:44 | Araq | for "input"? |
18:52:51 | dom96 | yeah |
18:53:11 | BitPuffin | Araq: how is using globals that don't contain GC'd data thread *safe* |
18:53:12 | filwit | 'uses' makes more sense for what it does i think |
18:53:18 | BitPuffin | yeah |
18:53:23 | BitPuffin | I hate in and out keywords |
18:53:35 | dom96 | 'in' is already a keyword lol |
18:53:44 | BitPuffin | it is? |
18:53:47 | BitPuffin | I've never used it |
18:53:52 | filwit | :| |
18:53:58 | filwit | it's used everywhere in Nimrod.. |
18:54:08 | BitPuffin | wat |
18:54:12 | filwit | if Something in { A, B, C }: |
18:54:15 | BitPuffin | oh |
18:54:18 | BitPuffin | well that is fine |
18:54:24 | BitPuffin | I meant more like for function parameters |
18:54:26 | BitPuffin | like in D |
18:54:27 | filwit | for x in list: ... |
18:54:28 | BitPuffin | they had like |
18:54:30 | BitPuffin | in |
18:54:32 | BitPuffin | out |
18:54:33 | filwit | yeah |
18:54:34 | BitPuffin | inout |
18:54:36 | BitPuffin | never really got what it was for |
18:54:46 | BitPuffin | for x in arr is totally cool |
18:54:47 | filwit | inout was for const stuff |
18:55:10 | filwit | in was basically the same as 'const', and out is the same as C#'s out |
18:55:51 | BitPuffin | ah |
18:55:55 | BitPuffin | well then why not just const |
18:55:57 | BitPuffin | inout |
18:56:08 | filwit | inout means you can pass either a const or not |
18:56:10 | BitPuffin | the fuck kind of a way is that to describe a constant |
18:56:24 | BitPuffin | filwit: well in C you can also pass a const or not |
18:56:27 | filwit | i'm really not sure of the difference between 'in int' and 'const int' but i think there is one |
18:56:33 | BitPuffin | yeah |
18:56:37 | BitPuffin | that's why I was confused |
18:56:39 | BitPuffin | it's stopid |
18:56:39 | filwit | 'out int' means the variable is ref, but created in the proc |
18:56:41 | BitPuffin | anyway |
18:56:47 | filwit | yeah |
18:56:57 | filwit | can be confusing |
18:57:06 | filwit | const in C is worse in some ways though |
18:57:08 | BitPuffin | Araq: should you really be thinking of this now though? Probably better to focus on fixing bugs for release |
18:57:12 | filwit | cause placement is important |
18:58:47 | Araq | BitPuffin: upcoming release has too few killer features |
18:59:04 | Araq | so I'm adding the major parts of the new concurrency model |
18:59:23 | BitPuffin | Araq: in 4 days? ._. |
18:59:27 | Araq | yes. |
18:59:48 | Araq | I've already added 'shared ptr T' and 'spawn' and 'sync' |
19:00:24 | Araq | global tracking is trivial to implement |
19:00:39 | BitPuffin | Araq: yes but it needs extensive testing |
19:00:56 | Araq | for 0.9.6 only 'guarded' and deadlock freedom are left then |
19:01:44 | dom96 | Araq: What about async? :( |
19:02:25 | Araq | dom96: I'm still trying to fix it for the release |
19:03:07 | Araq | but it could be a time grave and then we have no killer feature for 0.9.4 |
19:03:27 | dom96 | Async await isn't a killer feature? |
19:03:44 | Araq | oh it is. |
19:04:11 | Araq | but it's too risky to only focus on that |
19:04:47 | Araq | so I'm doing both things instead |
19:05:03 | renesac | another pragma name suggestion: 'rwGlobals' |
19:05:10 | renesac | but I'm not sure if it is better than 'uses' |
19:05:29 | BitPuffin | dom96: maybe YOU should focus on it ;) |
19:05:32 | BitPuffin | seriously though guys |
19:05:36 | BitPuffin | bugsprint over the weekend? |
19:05:56 | renesac | Araq, are you sure distinction between reads and writes isn't needed? |
19:06:13 | renesac | a shared global state only for reading data is much safer than for rw data |
19:07:19 | dom96 | BitPuffin: I don't have the knowledge or the time. |
19:07:26 | Araq | renesac: when you have thread local heaps reading is actually not as harmless as it looks |
19:07:32 | BitPuffin | dom96: acquire |
19:07:45 | Skrylar | meep |
19:08:04 | BitPuffin | Araq: how can you implement uses when reads and writes hasn't been implemented |
19:08:16 | BitPuffin | if uses = reads + writes |
19:08:39 | Skrylar | it may just not make a distinction between the two |
19:08:57 | Skrylar | "this is a pointer therefore it is used" vs "i have analyzed the pointer is only read" |
19:09:02 | BitPuffin | dom96: what about if you look at it during a bug sprint tho |
19:10:11 | * | nande joined #nimrod |
19:10:57 | Araq | BitPuffin: what Skrylar said is correct |
19:11:10 | renesac | Araq, sure many things can still go wrong, but if the initial setup and latter destruction is well separated phase from the threaded code, not so much |
19:12:08 | BitPuffin | Skrylar, Araq: Ah, so it's basically saying that it both reads and writes without actually verifying it? |
19:12:25 | renesac | and I laughed a bit in nimrod's new notion of thread safety, but I understand where this come from |
19:12:26 | renesac | XD |
19:12:26 | Araq | BitPuffin: yes, it only says it 'uses' it |
19:12:46 | BitPuffin | then I get why it is more tirvial |
19:12:50 | Skrylar | renesac: new notion of thread safety? |
19:12:59 | Skrylar | did we get the concurrency model of a clown hat |
19:13:56 | BitPuffin | still have a hard time of seeing why this gives thread safety |
19:14:02 | renesac | Skrylar, [15:32:25] <Araq> BitPuffin: we have a new notion of "thread safety" [15:33:10] <Araq> where "thread safe" == "uses only globals that do not contain GC'ed data" |
19:14:20 | Skrylar | i thought it already did that |
19:14:32 | BitPuffin | it does |
19:14:43 | Araq | renesac: for a purely RC'ed GC any read operation is an RC update and thus racy unless it performs an atomic operation |
19:14:43 | BitPuffin | but it's not verified I guess |
19:15:00 | renesac | Araq, yeah |
19:15:06 | Skrylar | fortunately atomic operations for ints are in most of the compilers |
19:15:17 | BitPuffin | Araq: I believe the correct term is "racist" |
19:15:37 | renesac | thread safe GCs seems a very complex beast, unless you go the thread local heaps way like most new languages do, including nimrod |
19:15:46 | * | BitPuffin hides in a corner |
19:15:47 | Skrylar | operating only on static globals doesn't guarantee thread-safety, actually |
19:16:01 | Araq | yes, yes, I know |
19:16:04 | Skrylar | it prevents the RC racing that Araq mentioned, it doesn't do anything to stop two threads independently clobbering a global |
19:16:23 | renesac | yep, that is why it was funny |
19:16:25 | Araq | yes that's why will get more checking for globals later |
19:16:27 | Skrylar | renesac: threads are pain :( |
19:16:39 | BitPuffin | yeah |
19:16:41 | BitPuffin | well |
19:16:46 | BitPuffin | I mean |
19:16:54 | Skrylar | microthreading is <3, multithreading is </3 |
19:17:11 | BitPuffin | if we get as strong thread local stuff as other languages and a nice global system like this I think we're pretty good |
19:17:36 | BitPuffin | Skrylar: isn't microthreading fully transparenty though? |
19:17:37 | Araq | this rule patches a major hole that we have right now, it doesn't fix everything |
19:17:50 | Araq | read my blog for more details |
19:18:00 | BitPuffin | Araq: so right now there is nothing stopping me from using a ref as a global? |
19:18:12 | renesac | but does microthreading works for anything not trivially paralelizable/embarasingly parallel? |
19:18:35 | Skrylar | renesac: no, microthreading is used to maximize use of a single core |
19:18:46 | BitPuffin | aka hyperthreading? |
19:18:54 | Skrylar | no, hyperthreading pretends to be an extra cpu core |
19:18:56 | renesac | hum, to mask cache misses? |
19:18:57 | BitPuffin | or do you just mean the concurrency the cpu does automatically |
19:19:02 | Araq | there is a shitty global analysis pass that tries to ensure safety, BitPuffin |
19:19:13 | BitPuffin | Araq: ah, but it's easy to get around |
19:19:14 | Araq | but I will remove it |
19:19:34 | Skrylar | microthreading is useful in some cases like dealing with I/O and futures |
19:19:49 | Skrylar | since you can go "hmm there aren't any more packets yet? jmp to somewhere else instead of waiting" |
19:20:08 | Araq | Skrylar: we have that with async/await |
19:20:20 | Skrylar | isn't async/await unfinished :P |
19:20:31 | Araq | it works but leaks memory :P |
19:20:39 | Skrylar | then it doesn't work :F |
19:20:50 | Araq | ha, you have no idea |
19:21:24 | Araq | rails used to leak like no tomorrow, people used it in production nevertheless |
19:21:39 | Araq | ok, the Rails guys are special, but still |
19:22:05 | Skrylar | since when do rubyists care about things, its one of the slowest interpreters in the world xD |
19:22:22 | Araq | not anymore |
19:22:24 | renesac | Skrylar, it got faster |
19:22:40 | Skrylar | i haven't used ruby 2x |
19:22:58 | Skrylar | i remember they were trying to build rubinius and a few others to make the VM uncrappy |
19:23:11 | Skrylar | I bet luajit still wins :) |
19:23:42 | Araq | I bet it doesn't for GC heavy benchmarks |
19:25:24 | * | Varriount|Mobile joined #nimrod |
19:26:21 | * | nande quit (Read error: Connection reset by peer) |
19:26:42 | * | nande joined #nimrod |
19:31:21 | reactormonk | Araq, I'm special \o/ |
19:43:48 | BitPuffin | look at Araq acknowledging good things about ruby |
19:43:58 | BitPuffin | spelling.se |
19:44:38 | dom96 | I wonder if Yukihiro Matsumoto has a gun pointed to his head. |
19:46:25 | Skrylar | dom96: why would he? other people were writing VMs |
19:46:52 | Skrylar | matz always said ruby was about being fun to program in above all else |
19:48:49 | Varriount|Mobile | Araq: You rang? |
19:49:51 | Araq | Varriount|Mobile: how come even mingw gcc 4.8 doesn't support __sync_bool_compare_and_swap ? |
19:52:31 | Varriount|Mobile | Araq: No idea |
19:52:50 | Araq | it's really annoying to have no atomic ops for win32 |
19:53:55 | Varriount|Mobile | Araq: Have you tried asking #mingw? |
19:57:24 | Varriount|Mobile | http://sourceforge.net/p/mingw/bugs/1585/ |
19:57:59 | fowl | BitPuffin, i have another allegro test for u to run later (if u dont mind) |
19:59:57 | BitPuffin | fowl: HOW DARE YOU |
20:00:39 | BitPuffin | No but who could ever say no to someone called Billingsly Wetherfordshire |
20:00:46 | BitPuffin | too cool name to conceive |
20:01:09 | * | Matthias247 joined #nimrod |
20:05:16 | dom96 | oh cool. `%` supports named vars |
20:05:27 | dom96 | There should really be an overload which accepts a string table. |
20:06:13 | Araq | I think there is |
20:06:21 | Araq | it's in strtabs though |
20:07:00 | dom96 | oh cool |
20:08:20 | Varriount|Mobile | Araq: I think sync_bool_compare_and_swap is available on mingw-w64 |
20:13:39 | * | Mat3 joined #nimrod |
20:13:46 | Mat3 | hi all |
20:13:56 | Araq | hi Mat3 |
20:14:11 | Mat3 | hi Araq, what's new ? |
20:14:33 | Varriount|Mobile | filwit: I love the mascot! It really displays nimrod's "I'm a strong language and I don't care" attitude. |
20:14:51 | filwit | thanks for the feedback, Varriount|Mobile |
20:15:29 | Araq | Mat3: I've implemented 'spawn' |
20:15:45 | Mat3 | great ! |
20:16:36 | Araq | speaking of which, how do you measure low level cycle counting stuff? |
20:17:20 | Mat3 | I use the performance counters which depend on the processor type |
20:17:41 | Araq | ok |
20:21:34 | Mat3 | you will likely need three measures, one for the number of cycles, one for possible BTB misses and at last one for the number of cache misses |
20:26:36 | NimBot | Araq/Nimrod devel 6692d95 Dominik Picheta [+0 ±1 -0]: Fixes incorrect nodejs detection in tester. |
20:26:36 | NimBot | Araq/Nimrod devel 2fb5d62 Dominik Picheta [+0 ±24 -0]: Tester now appreciates the test target. Modified 'cmd' in specs. |
20:27:06 | * | wan joined #nimrod |
20:27:22 | Araq | hi wan |
20:27:31 | wan | hi |
20:29:07 | * | BitPuffin resist saying joke about being the chosen wan |
20:29:12 | wan | concerning the mascot, I think it looks too fat. It's a bear ! (or a fat dog...). Although honey badger have a loose skin, their arms are definitely slimmer |
20:29:39 | wan | *legs too |
20:30:37 | fowl | BitPuffin, :D |
20:31:06 | wan | The gradient on the crown is a little out of place, there is no other gradient in the character |
20:31:32 | BitPuffin | wan: the charecter and crown is not the same material either though so that doesn't make sense to say |
20:32:34 | fowl | dom96, i looked into making it allow dictionaries but the implementation is pretty involved |
20:33:01 | fowl | dom96, i mean "$x" % {"x":"hello"} |
20:33:17 | wan | BitPuffin: It does, however. It's like mixin flat design with web2.0 gradients, it doesn't mix that well |
20:33:53 | wan | especially considering the 'comics' look of shadows for the honey badger |
20:34:22 | wan | (fat pencil in the shadows zones) |
20:34:30 | dom96 | fowl: strtabs does indeed have its own % |
20:35:48 | fowl | yea but i dont generally need to start a strtab for the input |
20:35:55 | Mat3 | hmm, what mascot ? |
20:36:14 | dom96 | fowl: ahh indeed. |
20:36:30 | dom96 | fowl: So what was the problem, too much work? |
20:36:44 | fowl | ".." % ["x","hello"] works but {"x":"hello"} is actually [(key:"x", val:"hello")] so the implementation for it would be simpler than the current way |
20:37:17 | Araq | yup, fowl is right |
20:37:29 | fowl | dom96, well the current way (looks like) allows you mix $1 $2 $x |
20:38:06 | Araq | fowl: I don't think anybody used that feature though |
20:38:07 | fowl | thinking about it again, it doesnt sound difficult anymore, it should be a separate function than the other % |
20:38:33 | EXetoC | Araq: the dictionary sugar? |
20:38:35 | Araq | Mat3: please read the logs, filwit created a new mascot |
20:38:43 | EXetoC | %? |
20:38:53 | Araq | EXetoC: no, mixing $1 and $name |
20:38:56 | filwit | Mat3: http://reign-studios.net/philipwitte/nimrod/mascot.png |
20:39:26 | fowl | filwit, i like the color scheme on the far right |
20:39:30 | fowl | reminds me of gobo :> |
20:40:00 | filwit | yeah i like that one two.. fits into the a slide on the homepage well |
20:40:05 | filwit | :) |
20:40:10 | filwit | just about ready to show |
20:40:23 | filwit | kinda rushed some last graphics, but you folks'll get the idea |
20:41:11 | fowl | http://distrowatch.com/images/yvzhuwbpy/gobo.png |
20:41:32 | Mat3 | filwit: I can not access the server |
20:41:48 | filwit | Mat3 really, odd... |
20:41:58 | filwit | it's my own server, try again in a minute |
20:42:01 | wan | filwit: I realized I didn't say anything positive about your mascot. I shall have! I do like the all-grey look. I'm only good at criticizing and noticing defaults, though, don't take it the wrong way |
20:42:25 | filwit | wan, i missed all comments from you before, sorry :S |
20:42:42 | filwit | wan, wasn't paying attention, but i'll rescan logs and look in a minute |
20:43:08 | filwit | wan, also, thanks for the feedback, positive or not |
20:45:13 | filwit | wan, ah, i see "too fat". Yeah i was trying to slim him down a bit, and i can do that more. I was using these as reference: http://ngm.nationalgeographic.com/ngm/0409/feature6/images/ft_hdr.6.jpg http://www.badassoftheweek.com/honeybadger1.jpg |
20:45:37 | wan | Has anyone come accross a 'web templates' library that's nimrod-compatible? Like Mustache, something that exists for other languages as well (not like source code filters)? |
20:48:05 | wan | 'cause I'll soon have something for jade templates (compiling them to nimrod code), don't know if anyone would be interested |
20:48:56 | dom96 | wan: OrionPK created a templates thing |
20:50:14 | wan | Is it on github somewhere? I guess the username is not the same. Do you have it? |
20:50:28 | dom96 | I think this is it: https://github.com/onionhammer/onion-nimrod/tree/master/templates |
20:51:32 | wan | Thanks, I'll see how he does the calling. Could be interesting to have a common convention |
20:54:57 | OrionPK | it doesnt work on devel for some reason though |
20:55:06 | OrionPK | idk if it's a regression of what |
20:55:08 | OrionPK | or* |
20:55:22 | OrionPK | my templates work well with NimLime wan |
20:56:10 | Araq | OrionPK: thanks for reporting that |
20:56:26 | OrionPK | https://dl.dropboxusercontent.com/u/417554/logic_example.png |
20:56:31 | OrionPK | araq lol sorry |
20:56:39 | OrionPK | araq I've been super busy last...... 4 weeks |
20:56:43 | wan | Ah, that solves the syntax highlighting for strings inside nimrod files, nice. I'm on vim though, so not for me, but that feature is cool. |
20:56:57 | wan | Didn't know about NimLime |
20:57:30 | OrionPK | right, the html""" """ prefix just tells sublimetext what it is |
20:57:32 | OrionPK | how to highlight it |
20:57:56 | OrionPK | the tmpl/i bit translates it into result.add's and nimrod logic at compile time |
20:59:27 | wan | For interfacing, I was planning on doing something like `proc my_template(locals): string = ...` (haven't tested yet) |
21:00:02 | wan | Because I want the templates in separate files (.jade), I don't want to declare what they take as parameters |
21:02:09 | OrionPK | why have the templates in separate files? |
21:02:25 | OrionPK | I guess it's nice if you want to hcange them w/o having to recompile your nimrod |
21:02:30 | OrionPK | but then you have runtime costs associated |
21:02:32 | Mat3 | filwit: how about a sword as logo (because Nimrod is secure) ? |
21:02:32 | wan | syntax highlighting was one reason, reusing them for client-side is another |
21:02:50 | EXetoC | OrionPK: you can cache it |
21:03:27 | filwit | Mat3: pretty sure logo wont change to something completely different :) and mascots are usually a creature of some kind, not an object |
21:03:42 | EXetoC | in some cases |
21:03:58 | wan | runtime costs? No, my_tempalte.jade->my_template.nim in a makefile, then `import my_template` in nimrod |
21:04:51 | Mat3 | filwit: how about a frog with a crown ? |
21:05:14 | Mat3 | (because Nimrod share so much hidden features) |
21:05:16 | wan | OrionPK: so I still have to recompile when I change my templates |
21:05:16 | EXetoC | a snail |
21:07:12 | Mat3 | the frog is also the enblem of the merowinger dynasty |
21:07:14 | filwit | Mat3: the honeybadger wasn't chosen by me, but by someone else, and liked by Araq |
21:08:19 | OrionPK | wan ah then probably my templates are better :P |
21:09:52 | wan | OrionPK: well, I'll never miss closing a tag with mine B) |
21:10:15 | EXetoC | can doc comments be positioned below constants and fields? |
21:12:07 | Araq | EXetoC: use #\ |
21:12:13 | Araq | # it like this |
21:12:13 | OrionPK | heh if you forget in mine, it wont compile |
21:13:44 | wan | OrionPK: I really want to try the philosophy of sharing templates between client and server, not having to either recode your templates or make javascript necessary. That was my goal for porting (most of) jade |
21:14:16 | OrionPK | it's an interesting idea |
21:15:09 | wan | The problem being that you need to use the same template engine on both sides, and the choice is limited. Highly dependent on your stack... |
21:17:06 | Araq | how do you share the template without javascript on the client? |
21:17:48 | EXetoC | clients? templates? |
21:17:57 | OrionPK | use html on the server araq |
21:17:59 | OrionPK | :p |
21:18:05 | wan | You serve already-filled html to the client, the ones with javascript can then dl scripts and pre-compiled templates, and query json api for an enhanced experience |
21:18:57 | wan | I'm designing my server-side views so that each one answers to json and html |
21:19:34 | wan | perfect marriage of webapp and website |
21:19:47 | Araq | hmm I know the words you're using but I don't get anything |
21:19:49 | wan | no compromise on SEO |
21:20:27 | wan | SEO* I mean crawlability |
21:20:29 | OrionPK | yeah im not sure I see where you're going w/ it wan |
21:21:08 | OrionPK | why not just have the clients download the precompiled HTML and serve it rather than use JSON |
21:21:26 | * | gXen quit () |
21:22:25 | wan | JSON saves on bandwith when you have already fetched the pre-compiled templates. |
21:22:52 | OrionPK | JSON means more client-side processing |
21:23:05 | OrionPK | to translate what came back into HTML |
21:23:08 | OrionPK | and then render that |
21:23:29 | wan | I'm betting that phones have enough power to do that well, 3G connection is still more of a problem for latency nowadays |
21:23:31 | fowl | better than overheating the server |
21:23:35 | OrionPK | lol |
21:23:56 | OrionPK | fowl I saw you (or someone) fixed that dependency in the sdl lib, thanks |
21:23:59 | wan | Yeah, the server doesn't care, it's not that more expensive to serve html |
21:24:15 | fowl | OrionPK, gracias pointing it out |
21:24:35 | OrionPK | i got the skeleton running on my mac :D |
21:24:53 | OrionPK | (again) |
21:25:58 | Araq | wan: serving static html can go through a highly optimized path in nginx for instance |
21:26:20 | Araq | so the server does care |
21:26:35 | * | Clement joined #nimrod |
21:26:43 | Araq | hi Clement welcome |
21:26:58 | Clement | Hello Araq |
21:26:59 | * | Clement is now known as Guest87695 |
21:27:33 | wan | Oh yes, but this is for static files. Templates are for when your pages are dynamic, of course. |
21:28:26 | Guest87695 | Could you please tell me whether this is a bug of an intended behavior ? https://gist.github.com/ClementJnc/a31a8dcf61668e2d045e |
21:28:27 | EXetoC | not only |
21:30:58 | dom96 | Guest87695: Works for me. Are you using 0.9.2? |
21:31:11 | Guest87695 | I have different behavior with "result &= ..." and with "result = result & ..." |
21:31:26 | Guest87695 | Using the last version from Git. |
21:31:50 | fowl | how about result.add ".." |
21:32:00 | dom96 | oh, I see what you mean. |
21:32:04 | dom96 | Thought it crashed. |
21:33:05 | Guest87695 | result.add give the same behavior as &= |
21:34:53 | Araq | Guest87695: is that a regression you hunted down to a minimal snippet? |
21:35:18 | Guest87695 | Yes |
21:35:51 | wan | regression means it worked before, then? |
21:36:15 | Araq | report it please. Oh and we need a 'regression' tag. |
21:36:48 | Araq | wan: that's what 'regression' means, yeah. And these are our biggest problem. |
21:36:59 | Guest87695 | OK, I'll prepare a report. |
21:38:32 | wan | I didn't know the compiler changed that much. I guess after a while, you'll have a nice collection of tests if things break more often. |
21:38:41 | * | Demos joined #nimrod |
21:39:07 | wan | Dirty trick for getting test contributions: break things. |
21:39:22 | wan | I'm joking of course |
21:39:40 | Guest87695 | In fact, I have to check, I'm not sure this exact version has worked with an older version. |
21:42:26 | wan | (That's why I asked about regression (I know what it means!). Araq's question had two components: is it a regression, and have you made it minimal. I sensed that the singular response might need some double checking) |
21:43:28 | Demos | wan: protip -- you can use git bisect to quickly find out if it is a regression |
21:43:35 | Demos | well fairly quickly |
21:43:46 | Demos | it helps that nimrod compiles really fast |
21:43:54 | Araq | wan: between 0.9.2 and the upcoming 0.9.4 we have over 1300 changes |
21:44:18 | Araq | so much for the "compiler doesn't change that much" |
21:44:29 | Araq | :D |
21:44:37 | EXetoC | c(:)-< |
21:44:43 | wan | Demos: does it recompiles backward for each commit and stops when it works? That seems awesome, didn't know about bisect! |
21:45:32 | Demos | it is a git feature, you give it a known working commit and a known buggy commit and it will checkout the commit between them, you test, then you tell git if it worked or not |
21:45:49 | Demos | you can also give git a script that does the test and reports the result (by exit code I think) |
21:46:16 | Demos | it really pushes home how cool log(n) algorithms are |
21:47:24 | wan | binary search ftw? |
21:47:35 | Demos | pretty much :D |
21:48:24 | Demos | a fun project would be to integrate that into the builder, so you could add a test and then see when it started failing in the past |
21:48:51 | wan | Doesn't the history purge kinda limit that? |
21:49:00 | Demos | no |
21:49:06 | * | faassen left #nimrod (#nimrod) |
21:49:21 | Demos | the history is still there, all the hashes just changes since we deleted some large binaries and c sources |
21:49:28 | Demos | *changed |
21:49:52 | filwit | Okay, due to an oversight on my part, I wont be showing the Web/Forum/Docs designs publicly. However, if you'd like to see them, please PM me and I'll see about showing them to you. |
21:51:25 | wan | Nice futuristic look, however MASSIVE lack of contrast |
21:51:42 | filwit | the designs are ready to show, and i'd appriciate any feedback, so please let me know if you're interested |
21:51:44 | wan | you need the main background to be whiter |
21:51:58 | wan | (already found the links without asking you) |
21:53:22 | wan | you might want to turn up the opacity on that #fff rgba that I suspect you have there |
21:54:00 | wan | the grey-on-blue seems nice though |
21:54:10 | dom96 | I thought the same thing. I wonder if filwit's monitor's brightness is set to "THE SUN". |
21:54:44 | filwit | wan... damn you! |
21:54:51 | filwit | but yes, that's the general idea |
21:54:56 | * | Guest87695 quit (Quit: Page closed) |
21:55:05 | filwit | also, not everything is fully fleshed out obviously |
21:55:13 | BitPuffin | YOU KNOW WHAT |
21:55:14 | Mat3 | need some sleep, ciao |
21:55:19 | * | Mat3 quit (Quit: Verlassend) |
21:55:19 | BitPuffin | Desperate times |
21:55:22 | BitPuffin | desperate measures |
21:55:23 | wan | filwit: Oh, did you mean you prefer feedback to be given in pm? |
21:56:27 | filwit | wan, it's okay, just that we don't want to spread the idea of a logo change, and don't want random people to think it's changing due to these images |
21:56:29 | BitPuffin | for some reason doing this feels like admitting failure |
21:56:31 | BitPuffin | but it's not really |
21:57:17 | wan | BitPuffin: care to share your worries? |
21:58:12 | BitPuffin | wan: well since bugs with generics is causing my 3d math lib not to work at all I am developing a "boring" subset of the library |
21:58:31 | BitPuffin | ie one that is only generic with the type of the vector/matrix components and not size |
21:59:15 | Demos | I just converted some of my functions to have names based on the size and type, this way I can convert back eaisly when the compiler supports static[T] better |
21:59:18 | BitPuffin | so the boring subset will basically be just like every 3d math lib for every language whereas the regular ones that don't work are generally moar powerful than what is offered |
21:59:39 | EXetoC | it's temporary so whatever |
22:00:17 | wan | filwit: on the docs page, the docstring below procs is too grey, need to be blacker |
22:00:46 | reactormonk | proc createModel(db: TDBConn, cc: ContextCounters, into: string) = |
22:00:47 | wan | filwit: otherwise that one looks fantastic |
22:00:53 | reactormonk | expression 'createModel(db, cc, "basic")' has no type (or is ambiguous) |
22:00:58 | filwit | wan, yes the docs are generally not contrasted enough |
22:01:04 | reactormonk | oh, it doesn't have a return type |
22:01:11 | filwit | wan: this will be fixed once i turn it into HTML |
22:02:07 | wan | filwit: I was talking about docs.htm, not the pictures this time |
22:02:14 | filwit | oh i see |
22:02:25 | filwit | docs.htm is not a graphics design thing |
22:02:40 | filwit | colors where chosen to be consistent, not production |
22:03:12 | filwit | it's just to illustrate different things, like when you click on a type, it isolates all it's procs... the sidebar is togglble, etc... |
22:04:30 | wan | Oh yeah. Much wow. |
22:05:02 | dom96 | BitPuffin: Just implement what you need instead of a whole damn library. |
22:05:33 | wan | You can improve the colors if you want, the design is such a great step forward compared to the current docs... |
22:05:57 | filwit | great! |
22:06:05 | filwit | thanks for your input, wan |
22:06:10 | dom96 | yeah, in fact I would say it's better than any docs i've ever seen. |
22:06:33 | wan | filwit: happy to help |
22:08:03 | BitPuffin | dom96: well I want it to be available for others as well |
22:09:08 | fowl | thats what we have SVN for |
22:09:39 | BitPuffin | fowl: you are drunk? |
22:12:51 | wan | filwit: (back to the pictures)the forum is a bit bland. Maybe expand each line's height? You could try having the posts and/or views counts on the left, a bit separated (in their own box) a la stackoverflow, or even a la HackerNews. |
22:13:03 | BitPuffin | dom96: we should really *really* fix the security derps with the forum before the new release btw |
22:13:15 | BitPuffin | if this brings a wave of new users it's simply unacceptable to keep doing this |
22:13:22 | dom96 | BitPuffin: are you volunteering? |
22:13:40 | BitPuffin | maybe yeah |
22:13:51 | BitPuffin | just that jester doesn't really work on mac |
22:13:54 | * | Matthias247 quit (Read error: Connection reset by peer) |
22:14:02 | filwit | wan, thanks. I'll experiment more once this is in HTML/CSS and we can play with those sorts of things |
22:14:06 | dom96 | BitPuffin: why not? |
22:14:13 | BitPuffin | dom96: redirect |
22:14:29 | dom96 | BitPuffin: that's a compiler bug right? |
22:14:35 | BitPuffin | aye |
22:14:43 | fowl | BitPuffin, yep |
22:14:47 | wan | filwit: we need to break up this 'lines, lines everywhere' aspect of the forum. Maybe introduce images on the left, a la forum.nofrag.com/forums/nofrag ? |
22:14:53 | dom96 | gosh, so many problems with them Macs. |
22:14:59 | BitPuffin | fowl: cool, what are you drinking? |
22:15:02 | BitPuffin | dom96: agreed |
22:15:09 | * | brihat joined #nimrod |
22:15:28 | fowl | american beer! |
22:15:35 | dom96 | BitPuffin: Could you test async await on mac? |
22:15:56 | BitPuffin | dom96: signed cookies would be acceptable compared to sending the password hash back and forth, but I'd really prefer the session store since that's the real solution |
22:16:09 | BitPuffin | however changing the hashing is probably prio #1 |
22:16:16 | filwit | wan, pointless pics don't add much though... maybe show a small icon of the OP's avatar or something tho |
22:16:25 | BitPuffin | dom96: the easiest way to migrate would probably be to have everyone reset their password |
22:16:54 | EXetoC | password recovery next then |
22:17:02 | BitPuffin | EXetoC: not necessarily |
22:17:29 | BitPuffin | EXetoC: could be first a login attempt with the new hash, if that fails, try with md5 and compare, if successful, ask them to write new password |
22:17:59 | BitPuffin | dom96: I could, but you'd have to show me the way |
22:18:57 | * | flaviu joined #nimrod |
22:19:15 | fowl | did u all put heartbleed bugs in ur softwares yet? |
22:19:17 | BitPuffin | fowl: local brew? |
22:19:23 | wan | filwit: yeah, I know, useless pics are useless. Well, if you feel like adapting the layout of another open-source forum, I recommend esotalk.org/forum/, which I think has the best forum design that I've seen (but has too big fonts though). Or I could help copying esotalk's design, if it's a fit. |
22:19:23 | dom96 | BitPuffin: nimrod c -r tests/async/tasyncawait |
22:19:34 | BitPuffin | fowl: heartbleed does not affect nimrod, we don't use ssl anyway lol |
22:19:54 | dom96 | we do in babel :P |
22:19:57 | BitPuffin | dom96: too much work sorry |
22:19:59 | BitPuffin | jk |
22:20:04 | filwit | wan, yeah that forum looks slick |
22:20:16 | EXetoC | BitPuffin: not talking about that |
22:20:31 | EXetoC | it's an essential feature |
22:20:32 | BitPuffin | dom96: 5000 |
22:20:59 | BitPuffin | EXetoC: babel doesn't count, we are not providing the service for babel :P |
22:21:00 | dom96 | BitPuffin: cool, now write a kqueue implementation for the selectors module :P |
22:21:03 | BitPuffin | EXetoC: what? |
22:21:09 | BitPuffin | I meant dom96 |
22:21:12 | BitPuffin | with the babel stuff |
22:21:27 | dom96 | yeah, true. |
22:21:30 | fowl | BitPuffin, the next time you write packet serializing do it sloppily :D |
22:21:43 | EXetoC | BitPuffin: for the forum |
22:21:47 | BitPuffin | dom96: someone needs to get us an SSL cert for the forum login |
22:21:47 | dom96 | I say we all voluntarily help the NSA. |
22:22:02 | BitPuffin | dom96: it's probably either you or Araq in that case |
22:22:04 | BitPuffin | probably Araq |
22:22:15 | BitPuffin | fowl: wat |
22:22:15 | dom96 | Means they don't need to spend as much money on breaking our security, which means they use less of our tax dollars, which means we can pay less tax! |
22:22:23 | Araq | BitPuffin: let me work |
22:22:27 | BitPuffin | Araq: ? |
22:22:34 | Araq | don't highlight me |
22:22:51 | BitPuffin | don't look at highlights, rather |
22:23:19 | BitPuffin | plus it's not like it wasn't work related -_- |
22:23:21 | dom96 | Araq: /msg *status detach #nimrod |
22:23:52 | BitPuffin | Araq: don't be rude |
22:23:55 | wan | dom96: Europeans don't pay taxes for the USA |
22:24:03 | BitPuffin | wan: at least we THINK |
22:24:15 | dom96 | wan: Well we have our own NSA equivalents. |
22:24:23 | dom96 | Gotta help 'em out too. |
22:24:34 | BitPuffin | GCHQ + FRA + NSA <3 |
22:24:35 | fowl | BitPuffin, bleeding heart caused by lazyness https://github.com/fowlmouth/nimrod-enet/blob/master/pkt_tools.nim#L50 |
22:25:56 | dom96 | The one thing I hate about spring is all these damn insects flying around my room. |
22:26:13 | dom96 | RIP moth. |
22:27:11 | BitPuffin | fowl: there is no heartbleed in there |
22:27:21 | wan | filwit: (home pic) the <pre> on the top of the page shouldn't use this font. The parenthesis look like square brackets, that's very confusing. |
22:28:03 | BitPuffin | fowl: well, if you wrapped malloc into a LIFO pool then maybe |
22:28:06 | fowl | BitPuffin, depends on how its used |
22:28:16 | filwit | wan, yeah that's an artifact of an older design i forgot to change. |
22:28:18 | dom96 | haha: http://www.mumsnet.com/features/mumsnet-and-heartbleed-as-it-happened |
22:28:25 | filwit | wan, notice the code on the docs image doesn't have that font |
22:28:44 | BitPuffin | fowl: well the important thing about heartbleed was the stupid irresponsible fucking malloc wrapper |
22:29:19 | flaviu | filwit: It looks good, but the background is a bit too dark for my preference. I'm also not a big fan of the white in the syntax highlighting |
22:29:24 | filwit | wan, also things are not fully visualized in these designs. Like how the page content isn't all there, or the "lastest news" |
22:29:31 | fowl | BitPuffin, it would have been avoided with a simple check to see if the packet has enough bytes |
22:29:36 | BitPuffin | fowl: yes, the fact that it didn't check the incoming size was bad, but if they didn't wrap malloc then the extra bytes it would send back would not be anything useful, in fact it would probably crash for accessing memory it did not own |
22:29:49 | filwit | flaviu, okay, thanks for your input |
22:30:00 | BitPuffin | fowl: yes it would have, but the real source of the problem was malloc wrapper |
22:30:02 | Demos | The real problem in heartbleed was that it was disclosed in a really dangerous way |
22:30:18 | BitPuffin | Demos: it was really fucking strange how it was disclosed |
22:30:38 | BitPuffin | like some random cloud company I've never heard of before knew it one week before it was disclosed |
22:30:53 | BitPuffin | Amazon didn't even know before them |
22:30:55 | BitPuffin | like wtf |
22:30:56 | wan | filwit: by the way, what the hell happened with "Nimrod is efficient" kerning? `letter-spacing: calc(3px + random(10));`? The font kerning pairs informations for `ffi` seems to conflict with letter-spacing. |
22:31:04 | Demos | they should have waited until the patch was in wide circulation before telling the world, sure attackers could read the patch notes but still |
22:31:26 | BitPuffin | and Debian + FreeBSD security officers didn't even know until it was out there |
22:32:03 | filwit | wan, eh? |
22:32:18 | fowl | BitPuffin, someone slipped up and told a friend, they told a friend, etc etc, probably nobody wanted to be the public discloser of it |
22:32:28 | BitPuffin | yeah |
22:32:33 | BitPuffin | well it's fucked up anyway |
22:32:37 | flaviu | filwit: On the first link, web1 |
22:32:47 | Demos | the other thing is that I dont think you could get specific info, you just got whatever was in memory, which makes the disclosure situation even more insane |
22:32:59 | flaviu | Demos: Someone got private keys |
22:33:12 | BitPuffin | Demos: well whatever was latest free'd |
22:33:28 | filwit | wan, flaviu, sorry i'm not sure what you're talking about. the ".efficient ..." thing on the homepage? |
22:33:33 | Demos | flaviu: right, but it was not "I want this user's keys" it was "I got the keys in memory" |
22:33:47 | filwit | wan, flaviu: if so, that's pretty much as it always has been... |
22:33:50 | wan | filwit: yes, the font in the docs image looks okay. Apart for, you know, italics. It's very weird for me to see italics in the code, maybe because I use vim in a terminal all day long, or maybe because italics shouldn't be used in code. |
22:33:51 | flaviu | filwit: No, in the body, under "Welcome to Nimrod" |
22:34:15 | fowl | BitPuffin, i bet there was a commit long ago patching malloc for openssl to fix the crash caused by the bug lol |
22:34:47 | filwit | wan, i disagree, i code with italics to distinquesh things with similar color but distinct differences (ei, properties vs methods) |
22:34:52 | Demos | so it was disclosed by cloudflare (I large CDN) in a public blog. They were like "look how on top of security we are" |
22:35:16 | filwit | wan, flaviu: oh, lol.. that's old content from the previous nimrod design |
22:35:28 | BitPuffin | fowl: haha, no the reason they wrapped malloc was for performance on some platforms |
22:35:31 | BitPuffin | which is a horrible reason |
22:35:40 | filwit | wan, flaviu: i just copy pasted it, as it wasn't really important for the design, just to get the idea across |
22:36:03 | wan | filwit: for italics, I'm just saying, I was surprised to see italics. Do other programming languages use italics in their <pre>? |
22:36:18 | flaviu | filwit: The point is that it looks like 'Nimrod is E ffi cent' |
22:36:22 | filwit | wan, italics are an IDE thing, not a language thing |
22:36:30 | filwit | wan, though idk if other sites use it |
22:36:32 | Demos | OK cloud flare posted the blog after the patch was out.... but only 1 hour after |
22:36:47 | wan | filwit: I'm talking about other languages' homepages or docs. |
22:36:55 | BitPuffin | http://article.gmane.org/gmane.os.openbsd.misc/211963 |
22:36:58 | filwit | flaviu: yeah that's something odd with the font, or maybe i added a space on accident, dunno |
22:36:58 | * | brson quit (Ping timeout: 258 seconds) |
22:37:08 | filwit | wan, yeah i have no idea |
22:37:26 | filwit | wan, the exact way the code is highlighted is ultimately not up to me |
22:37:40 | wan | filwit: Is it reasonable to assume that italics are okay, or that italics are weird, because they are very often used / not very often used on docs pages around the web? |
22:37:42 | filwit | wan, and probably wont look exactly like my designs here |
22:38:09 | filwit | wan, that's an argument from popularity, and not a very good reason to make a choice :P |
22:38:29 | filwit | wan, but then, if most people are completely against them, i guess it makes sense not to have them |
22:38:34 | flaviu | I personally like the italics |
22:38:38 | filwit | me too |
22:38:47 | BitPuffin | fowl, Demos: Honestly it's really suspicious, this is not the kind of thing you accidentally do |
22:40:20 | EXetoC | fowl: want to review the pull? |
22:40:37 | EXetoC | and maybe someone else who is interested https://github.com/nimrod-code/opengl/pull/3 |
22:40:45 | Demos | BitPuffin: who knows. I am going to assume it was some clueless MBA type who thought "oooh we could get PR", seems more likely than disclosing the bug (1h /after/ the patch came out) because of evil |
22:42:32 | BitPuffin | Demos: https://www.youtube.com/watch?feature=player_detailpage&v=X0_3rpA5_WE#t=3212 |
22:44:41 | wan | filwit: yes, yes, I was trying to justify something based on its popularity, and that's not usually a good way to defend an argument. I don't remember seeing them around docs for python stuff or in <pre> in github repos' READMEs, and do find it highly unusual. Of course, each and everyone has their own experiences and usages, I'm just expressing my surprise. |
22:45:27 | BitPuffin | Demos: but yeah, OpenBSD is generally fantastic but the OpenSSL team is really weak imo |
22:45:47 | Demos | OpenSSL is not part of the OpenBSD project |
22:45:55 | Demos | in any way |
22:46:46 | filwit | wan, you're not allowed to express any emotion on the internet anymore. The NSA made that illegal last week. I'm going to have to report you to the authorities ;) |
22:47:05 | fowl | EXetoC, whats with the search in checkGlError()? just use $ error.TGlError |
22:47:30 | BitPuffin | Demos: oh it isn't? |
22:47:36 | BitPuffin | I always thought that |
22:47:39 | BitPuffin | guess not |
22:47:53 | BitPuffin | well thaaaaat explains everything |
22:47:53 | filwit | wan, just kidding of course, and thank you for all your feedback and interest |
22:48:36 | EXetoC | fowl: what about any unknown error codes? might be a little excessive though. anyway, I could use an 'in' check instead |
22:48:45 | filwit | wan, i just did what looks good to me in my designs, but it may be completely out of place and not something we want in the final production. You'll have to convince Araq of that though, not me. |
22:48:59 | fowl | EXetoC, they'll get something like (Invalid data!) |
22:49:21 | filwit | wan, btw, i haven't seen you around here before. are you new to Nimrod? |
22:49:56 | fowl | EXetoC, why change ptr GLchar to cstring? they should be the same thing |
22:50:25 | EXetoC | fowl: apart from the implicit casting |
22:50:27 | fowl | EXetoC, but the wrapper should reflect GL's man pages |
22:50:29 | * | brson joined #nimrod |
22:50:30 | BitPuffin | Demos: I was ordering plane tickets and stuff earlier and I was actually kinda worried about heartbleed |
22:50:45 | BitPuffin | like I dunno if Ryan air and stuff has patched their OpenSSL if they use it |
22:50:48 | BitPuffin | likely not |
22:50:52 | fowl | EXetoC, there is no implicit cast if GLchar is char then ptr GLchar is ptr char aka cstring |
22:51:01 | wan | filwit: I dropped in the irc some months ago, I have been lurking from time to time thanks to the irclogs mostly, I'm usually not talkative |
22:52:37 | filwit | wan, i see. well late-welcome i guess |
22:52:58 | EXetoC | fowl: cstring allows implicit casts from strings. I haven't found any functions yet that don't expect null-terminated strings |
22:53:09 | * | Varriount|Mobile quit (Remote host closed the connection) |
22:53:11 | wan | filwit: thanks |
22:53:16 | EXetoC | which is according to the convention, but I could have a closer look some other time just to be sure |
22:53:24 | * | Varriount|Mobile joined #nimrod |
22:53:38 | EXetoC | as it doesn't appear that often last time I checked |
22:53:46 | flaviu | BitPuffin: They use ASP.NET, so I don't think they're affected |
22:54:10 | BitPuffin | flaviu: ah |
22:54:20 | BitPuffin | flaviu: well I also ordered from uuuhh |
22:54:24 | BitPuffin | what are they called |
22:54:43 | BitPuffin | stanstedexpress.com |
22:55:36 | fowl | EXetoC, you'll still have implicit conv from strings |
22:56:11 | flaviu | BitPuffin: https://filippo.io/Heartbleed/#www.stanstedexpress.com |
22:56:12 | flaviu | That site didn't work for ryanair, their website had some sort of issue, but the end of the url was .aspx |
22:56:29 | fowl | oh |
22:57:12 | * | Varriount|Mobile quit (Client Quit) |
22:57:19 | BitPuffin | flaviu: yeah I basically just did the same thing but with a mcaffee tool |
22:57:34 | EXetoC | fowl: that was not the case yesterday |
22:57:37 | fowl | EXetoC, cstring used to be ptr char.. its not anymore |
22:58:08 | EXetoC | the current module uses it in some cases. it's binary compatible isn't it? |
22:58:30 | EXetoC | it uses cstringArray as well |
22:59:32 | BitPuffin | I would probably use NSS rather than OpenSSL nowadays |
22:59:44 | fowl | EXetoC, yes but weak to future opengl updates, make PGLchar* = cstring then, actually, when GLchar is char: type PGLchar* = cstring else: type PGLchar* = ptr GLchar |
23:00:36 | fowl | EXetoC, yea cstringarrays are annoying to deal with |
23:01:50 | EXetoC | I don't think they'll ever change |
23:02:31 | renesac | dom96, BitPuffin: http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/src/ssl/d1_both.c.diff?r1=1.7;r2=1.8;f=h <-- quality coding |
23:03:10 | fowl | EXetoC, you dont like that compromise? |
23:03:27 | BitPuffin | renesac: a lot better than openssl at least :P |
23:03:37 | EXetoC | fowl: it's fine |
23:04:09 | Araq | good night |
23:04:11 | EXetoC | I didn't include PGLchar etc though, because of the upcoming changes. should I? I don't think it'll break much code |
23:04:48 | filwit | i really wish the standard was just to use 'ref Foo' everywhere |
23:04:52 | fowl | EXetoC, not sure how you use this: GLeglImageOES* = distinct pointer, if you need to be able to isNil() on it, its easier to use `ptr object` |
23:05:18 | filwit | but that's because i'm still unclear on how to obtain a 'value type' of a 'ref object' |
23:05:23 | fowl | EXetoC, oh i see what u mean |
23:05:48 | fowl | filwit, you can dereference it |
23:06:14 | filwit | no, i mean when you need to pass the type for generics |
23:06:22 | renesac | and somehow, I think Microsoft already knew this bug for a long time...: https://github.com/joyent/node/commit/28c6e42e |
23:08:04 | EXetoC | fowl: with? |
23:08:20 | EXetoC | know about 'distinct with'? was added recently I think |
23:08:20 | fowl | EXetoC, you changed the types to GL* |
23:08:48 | fowl | i dunno what you're talking about |
23:08:58 | renesac | filwit, your bear looks too violent :P |
23:09:03 | EXetoC | fowl: "x = distinct with `isNil`" or something |
23:09:11 | renesac | but my complaint is only about the face |
23:09:24 | fowl | EXetoC, oh really? |
23:09:58 | fowl | EXetoC, i used regions in a recent wrapper |
23:10:12 | fowl | it looks nice: ptr[Lacewing, TTimer] |
23:10:14 | filwit | renesac, sorry brb |
23:10:28 | fowl | not really necessary at all though >_> |
23:13:18 | EXetoC | right |
23:17:46 | EXetoC | uh oh segfault "sigmatch.nim(506) maybeSkipDistinct" |
23:17:57 | BitPuffin | fowl: what was it you wanted me to test? |
23:19:44 | EXetoC | ok I'll just use 'ptr object' then |
23:20:25 | BitPuffin | EXetoC: pointer |
23:20:44 | EXetoC | fight! |
23:21:37 | fowl | BitPuffin, im trying to fix a bug before i have u run it.. its pissing me op >:/ |
23:23:12 | BitPuffin | ah |
23:23:18 | BitPuffin | well let me know! |
23:23:27 | * | darkf joined #nimrod |
23:32:47 | filwit | renesac, back |
23:33:04 | filwit | renesac, that the mascot looks a bit too angry is the general feedback about the mascot |
23:33:14 | filwit | renesac, did you see the other designs? |
23:33:28 | renesac | the ones changing the color? |
23:33:46 | filwit | renesac, no, the new web/forum/docs designs |
23:33:50 | filwit | i'll PM you |
23:33:57 | renesac | not yet |
23:36:17 | * | zahary quit (Ping timeout: 250 seconds) |
23:38:30 | * | askatasuna quit (Quit: WeeChat 0.4.3) |
23:43:55 | NimBot | Araq/Nimrod devel 84c1aa9 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds missing import. |
23:43:55 | NimBot | Araq/Nimrod devel 208ef29 Simon Hafner [+0 ±0 -0]: Merge pull request #1101 from gradha/pr_adds_missing_import... 2 more lines |
23:44:27 | NimBot | Araq/Nimrod devel de04c97 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Improves startProcess docstring for poEvalCommand usage. |
23:44:27 | NimBot | Araq/Nimrod devel 6886a47 Simon Hafner [+0 ±1 -0]: Merge pull request #1102 from gradha/pr_improves_startProcess_docstring... 2 more lines |
23:49:16 | * | BitPuffin quit (Ping timeout: 240 seconds) |
23:54:28 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
23:54:31 | filwit | later folks |
23:54:34 | * | filwit quit (Quit: Leaving) |
23:59:03 | * | zahary joined #nimrod |