[00:23:07] *** fredreichbier_ has joined #ooc-lang [00:26:52] *** fredreichbier has quit IRC [00:41:38] *** Oddity007 has quit IRC [01:19:52] *** fredreichbier_ has quit IRC [02:47:21] *** Oddity007 has joined #ooc-lang [03:22:53] *** echelog-2 has joined #ooc-lang [03:47:36] *** shahri has quit IRC [04:35:16] *** MrSamuel has quit IRC [05:03:55] *** MrSamuel has joined #ooc-lang [05:18:16] *** Oddity007 has quit IRC [06:13:48] *** mickael9` has quit IRC [07:45:32] *** aanderse has quit IRC [07:48:42] *** aanderse has joined #ooc-lang [08:57:04] *** Nilium has quit IRC [09:01:42] *** Nilium has joined #ooc-lang [09:01:42] *** ChanServ sets mode: +v Nilium [10:29:15] *** MrSamuel has joined #ooc-lang [12:28:38] *** MayDaniel has joined #ooc-lang [12:50:17] *** MayDaniel has quit IRC [13:34:35] *** MayDaniel has joined #ooc-lang [13:46:47] *** MayDaniel has quit IRC [16:56:48] *** Oddity007 has joined #ooc-lang [21:26:43] *** echelog-2 has joined #ooc-lang [21:30:57] <duckinator> nddrylliog: so i've tracked the issue down to this line: bytesRecv := socket recv(descriptor, chars, length, flags) [21:31:07] <duckinator> nddrylliog: after that point, it's completely butchered [21:31:23] <duckinator> wait, what... [21:31:38] <duckinator> in receiveByte() that works... [21:31:40] * duckinator dies of confusion [21:33:40] *** Nilium_ has joined #ooc-lang [21:33:40] *** ChanServ sets mode: +v Nilium_ [21:36:07] *** MayDaniel has joined #ooc-lang [21:36:56] <duckinator> ok i failed, receiveByte() doesn't use that...hm... [21:41:57] *** curtism has joined #ooc-lang [21:47:24] *** MayDaniel has quit IRC [21:47:57] *** Nilium_ has quit IRC [21:50:15] <duckinator> ...*FACEDESK* [21:50:29] <duckinator> nddrylliog: apparently the entire issue is readLine() [21:50:50] <duckinator> nddrylliog: replacing `conn in readLine() println()` with a nasty loop fixed it... [21:52:55] *** joshthecoder has joined #ooc-lang [21:52:55] *** ChanServ sets mode: +v joshthecoder [21:59:12] *** Nilium_ has joined #ooc-lang [21:59:12] *** ChanServ sets mode: +v Nilium_ [22:00:45] *** Nilium_ has quit IRC [22:07:58] <nddrylliog> duckinator: so how do we fix readLine ? [22:08:08] <duckinator> nddrylliog: i'm not entirely sure :( [22:08:48] <duckinator> i'm thinking the fix for ASCII files ending with a backspace might be related but idk [22:08:53] <duckinator> if(c == end || (!hasNext?() && c == 8)) { <-- that [22:14:44] <duckinator> nddrylliog: huh...apparently NOT having that c==8 breaks sockets as well o.O [22:14:49] <duckinator> i don't understand this lol [22:15:27] <duckinator> anywho, brb/bbs [22:15:32] <nddrylliog> hm [22:15:51] <nddrylliog> well hasNext is kind of weird for sockets [22:15:52] <duckinator> nddrylliog: my fork's socket branch works if you avoid readUntil() and anything using it [22:15:59] <duckinator> nddrylliog: i've fixed that :) [22:16:24] <duckinator> afaik, it's solely down to readUntil() behaving bizarrely [22:17:22] <duckinator> nddrylliog: https://github.com/duckinator/ooch/blob/master/ooch.ooc [22:17:38] <duckinator> nddrylliog: replacing the readLine() with a disgusting loop yields a perfectly functional httpd [22:19:02] <nddrylliog> (haha I like ooch) [22:19:20] <duckinator> isn't it nice? :> [22:19:38] <duckinator> hmm [22:20:02] <duckinator> nddrylliog: since twiddling with the if() condition yields nothing, it may be related to Buffer append(Char) [22:21:15] <duckinator> i'm really just sorta making half-assed guesses at this point, because none of the issues even make sense really [22:24:47] <duckinator> ...derp [22:24:50] <duckinator> what the hell [22:25:00] <duckinator> nddrylliog: wd, i think hasNext? might actually be the issue still :| [22:25:16] <duckinator> idk *HOW*, but yea [22:27:56] <nddrylliog> duckinator: I don't know how you're testing, but this shouldn't be that hard [22:28:16] <duckinator> well o cam [22:28:25] <duckinator> ...let's try that again [22:28:55] <duckinator> hm [22:29:09] <duckinator> nddrylliog: in readUntil(), the loop isn't reading all the bytes it should be [22:29:40] <duckinator> while(hasNext?()) { c := read(); c toString() println(); /* ... */ } only prints "E/" instead of "GET /" [22:36:22] <nddrylliog> duckinator: so read() reads one too much? and toString() messes up? [22:36:35] <duckinator> seems so [22:36:51] <duckinator> but i mean... [22:36:57] <nddrylliog> duckinator: is there a simple test independent from ooch and your changes I could try? [22:36:57] <duckinator> read: func ~char -> Char { source receiveByte() } [22:37:05] <duckinator> how CAN that read too much :S [22:37:18] <nddrylliog> duckinator: look at the generated C code ? [22:37:22] <nddrylliog> duckinator: ..maybe it's calling it twice ? [22:39:49] <duckinator> return net_TCPSocket__TCPSocket_receiveByte(this->source); -- so read() itself is fine [22:41:10] <duckinator> unrelated issue, but receiveByte~withFlags(flags) doesn't actually pass the flags on [22:41:39] <duckinator> ... [22:41:53] <duckinator> are you fucking serious... [22:42:04] <duckinator> nddrylliog: receive(c&, 1, 0) -> receive(c&, 1, flags) and it works... [22:45:27] <duckinator> heh [22:47:17] <duckinator> nddrylliog: now i think the only issue is specific to my httpd, probably not flushing the socket or similar [22:54:01] <nddrylliog> huh [22:54:02] <nddrylliog> weird [22:54:03] <nddrylliog> anyway [22:54:08] <nddrylliog> gonna doze off for tonight, [22:54:18] <nddrylliog> got stuff to deal with [22:54:35] <nddrylliog> duckinator: thx for your work, make a pull request when I can pull your changes in [22:54:37] *** nddrylliog has quit IRC [22:54:41] <duckinator> alri---bye? [23:12:36] *** fredreichbier has joined #ooc-lang [23:12:36] *** ChanServ sets mode: +v fredreichbier [23:25:11] <duckinator> ohai fredreichbier [23:25:23] <duckinator> fredreichbier: i fixed the ooc socket bugs :D [23:25:25] <fredreichbier> hey theres [23:25:26] <fredreichbier> YES [23:25:29] <fredreichbier> how? [23:25:40] <duckinator> https://github.com/duckinator/rock/commits/sockets ^^ [23:26:26] <duckinator> it's all very small changes [23:26:28] <duckinator> probably 10 lines total [23:27:17] <fredreichbier> mmmmkay! [23:27:19] <fredreichbier> very nice! [23:27:44] <duckinator> submitting a pull request now [23:28:48] <duckinator> http://loadimpact.com/result/mono.ath.cx:8000/-9b0448828a435d2052c70a3529f13e11 that's a very load test of a very simple httpd [23:28:53] <duckinator> er [23:28:56] <duckinator> http://loadimpact.com/result/mono.ath.cx:8000/-9b0448828a435d2052c70a3529f13e11 that's a load test of a very simple httpd* [23:34:35] <fredreichbier> is that ... good? :D [23:35:20] <duckinator> fredreichbier: 40 clients hitting a 100% unoptimized server simultaneously getting ~0.6s...i think it's decent :P [23:35:33] <fredreichbier> cool! :D [23:35:41] <fredreichbier> my mongodb bindings is working so far [23:36:03] <duckinator> hmm [23:36:20] <duckinator> it's not good at concurrency (namely because it is a single thread...), but it's very fast [23:37:43] <fredreichbier> maybe use ooc-coroutines or so [23:37:52] <duckinator> yea [23:37:56] <duckinator> assuming they work on arch now [23:38:05] <duckinator> there was bizarre issues with them last i tried [23:39:00] <duckinator> fredreichbier: https://gist.github.com/1163672 [23:39:03] <fredreichbier> hehe [23:39:22] <duckinator> longest transaction out of 10,000 was 0.02s [23:39:32] <fredreichbier> Transaction rate: 151.40 trans/sec <- okay? [23:39:43] <duckinator> that's the same as 151 views a second [23:39:55] <duckinator> that's WITHOUT adding any concurrency [23:40:57] <fredreichbier> niiiice! [23:42:34] <duckinator> fredreichbier: btw that was 100 bursts of 100 simultaneous connections, btw [23:42:49] <fredreichbier> hehe [23:42:53] <fredreichbier> that's okay i guess. :D [23:47:57] <duckinator> fredreichbier: https://gist.github.com/1163699 <-- groups of 100 simultaneous hits for 30 seconds, ended up with 323,609 requests, all answered within 0.03s [23:48:27] <fredreichbier> sounds quite okay! [23:48:38] <duckinator> trying bursts of 900 now [23:48:47] <duckinator> 80% CPU on all 4 cores :D [23:49:47] <fredreichbier> hehe [23:50:07] <duckinator> still "Lifting the server siege" :P [23:50:45] <duckinator> ....still [23:51:03] <duckinator> i think it died [23:52:25] <duckinator> O.o [23:52:41] <duckinator> fredreichbier: i stepped it down to 500 simultaneous requests. at 5130 transactions/second, it's still got 99.96% availability [23:53:15] <duckinator> bbl, dinner [23:53:20] <fredreichbier> hehe [23:53:25] <fredreichbier> enjoy :D