<< 06-04-2016 >>

00:07:51*desophos quit (Remote host closed the connection)
00:12:58*desophos joined #nim
00:17:25*desophos quit (Ping timeout: 250 seconds)
00:18:25*fredrik92 quit (Read error: Connection reset by peer)
00:48:30*gokr quit (Ping timeout: 276 seconds)
00:52:05*Demon_Fox quit (Quit: Leaving)
01:07:07*BitPuffin|osx quit (Ping timeout: 260 seconds)
01:22:17*saml_ quit (Quit: Leaving)
01:23:55*chrisheller quit (Remote host closed the connection)
01:24:15*chrisheller joined #nim
01:27:37*chrisheller quit (Read error: Connection reset by peer)
01:54:16*desophos joined #nim
01:54:36*chrisheller joined #nim
01:58:42*ludocode quit (Remote host closed the connection)
02:28:05*brson quit (Quit: leaving)
02:49:57*izi quit (Quit: Leaving)
03:37:46*vendethiel joined #nim
03:41:47*Demon_Fox joined #nim
03:44:52*vendethiel quit (Ping timeout: 264 seconds)
03:52:47*darkf quit (Ping timeout: 250 seconds)
04:10:02*Guest70507 joined #nim
04:11:28*GangstaCat quit (Quit: Leaving)
04:20:11*nsf quit (Ping timeout: 244 seconds)
04:37:31*Guest70507 quit (Quit: Guest70507)
04:39:39*ludocode_ joined #nim
04:44:33*ludocode_ is now known as ludocode
05:00:59*nsf joined #nim
05:01:26*darkf joined #nim
05:07:57*InfinityBear joined #nim
05:08:02InfinityBearQuick question
05:08:11InfinityBearNim compiles to .exe without .dll's??
05:08:27*endragor joined #nim
05:36:04veganskInfinityBear, you mean without external dependencies?
05:36:56InfinityBearyes
05:38:13InfinityBearvegansk,
05:38:22veganskit depends. if you will use impure libraries or wrappers, you will need .dll/.so/.dynblib. but if you will use pure libraries, in 90% cases, you don't
05:38:40InfinityBearok
05:38:41veganskit's just like in c/c++
05:39:29InfinityBearok
05:50:02VarriountInfinityBear: It also depends on the compiler you use. On Windows, MinGW links to msvcrt.dll, while vcc links to msvcrtX.dll, where X is the version number linked against.
05:50:30VarriountPersonally, I disagree with MinGW's choice, but w/e
05:52:34InfinityBearVarriount, so on windows will it make a .dll?
05:52:38InfinityBearwell not make, require?
05:52:58InfinityBearor is it part of the C++ runtime that you have to install :p
05:53:13VarriountInfinityBear: It's the C/C++ runtime
05:53:22InfinityBearyes, i know that.
05:53:38InfinityBearWill I be required to install the runtime or will it link against the one that always comes with windows.
05:54:09VarriountInfinityBear: Again, depends on the compiler and settings.
05:54:15InfinityBearok
05:54:50VarriountMinGW links against msvcrt.dll, which is the runtime that's supposed to *only* be used by the system
05:55:14Varriountvcc links against one of the msvcXXX.dll runtimes
05:57:34VarriountInfinityBear: If you want to link to a specific C runtime using mingw, this link looks promising: https://sourceforge.net/p/mingw-w64/mailman/message/31072870/
06:08:57*InfinityBear quit (Ping timeout: 246 seconds)
06:15:56*McSpiros joined #nim
06:22:04*endragor_ joined #nim
06:25:45*endragor quit (Ping timeout: 250 seconds)
06:40:37*endragor_ quit (Remote host closed the connection)
06:40:56*patariki joined #nim
06:41:05*endragor joined #nim
06:44:01*patariki left #nim (#nim)
06:47:26*gunn quit (Ping timeout: 248 seconds)
06:57:38endragorIf a procedure returns `var` value, and I assign the value to a variable (var a = theProc()), should modifying the variable modify the returned reference?
07:16:06*yglukhov joined #nim
07:20:33yglukhovAraq: do i add a skipHidden to types.nim that does the same as skipConv except only for nkHiddenStdConv, nkHiddenSubConv?
07:20:53*gokr joined #nim
07:25:47veganskyglukhov, hi! please look at my comment here: https://gist.github.com/vegansk/68af805063e50f0d673caa00efbce2d0
07:27:14*Trustable joined #nim
07:48:24*girvo quit (Ping timeout: 244 seconds)
08:12:51*dorei joined #nim
08:30:40*fredrik92 joined #nim
08:32:01*Demon_Fox quit (Quit: Leaving)
08:38:07Varriountendragor: The way to imagine a 'var' parameter is as a pointer to the actual location of the variable (usually on the stack).
08:39:51fredrik92some languages also call that By-Reference-Parameters (and some use sth. like a 'ref' keyword for that)
08:50:03endragorVarriount: I understand that, I was asking about the expected behaviour. Right now `theProc() = 3` changes the original value, but `var a = theProc(); a = 3` doesn't.
08:50:29endragorfredrik92: I was asking about var return value, not var parameter
08:50:30*coffeepot joined #nim
08:50:53fredrik92andragor, ah, my bad...
08:50:56Varriountendragor: Could you provide a code snippet?
08:53:10endragorVarriount: sure: https://gist.github.com/endragor/ca3d81deac5d82e92a46480d80176d6d
08:54:35Varriountendragor: I can see *why* it works that way, at least from a practical perspective, but not from a language perspective.
08:56:57Varriountendragor: I never quite understood how var return types were supposed to work, when references work perfectly well.
09:00:39endragorI think at some point `var` return value might had been added to support operators so that you can write `table[x] = y`. On the other hand, that is also possible by defining `[]=`. Not sure which appeared first and whether there is an actual use case for var return value - it's quite confusing now and acts inconsistently with iterators
09:05:22Varriountendragor: From a purely programmatic perspective, var return types sound very hard to produce for anything other than straightforward expressions.
09:05:45VarriountI mean, when you consider the code backend and memory safety and everything.
09:07:24Varriountendragor: Have you worked with term-rewriting macros at all?
09:07:56endragorVarriount: in practice? no
09:12:03Varriountendragor: I think the basic principle of var types is that they aren't transitive across assignments (I think that's the proper term).
09:14:16VarriountA type doesn't retain it's 'var' characteristic across assignments, much like you can assign a var to a `let` expression.
09:14:54*desophos quit (Read error: Connection reset by peer)
09:16:01endragorVarriount: I understand the point, thanks. I also understood from the beginning why it was done this way. It's still somewhat unclear why var return values exist at all, it's hard to think of a use case
09:16:11*t4nk125 joined #nim
09:16:36t4nk125hi
09:16:47VarriountHello t4nk125
09:16:57fredrik92Hi, there! :)
09:17:03dom96hi guys
09:17:11t4nk125Hello Varriount
09:17:52flyxendragor: you could do `var val = addr(table.mget(1)); val[] = 42
09:17:55dom96endragor: var return values are useful when you want a mutable string for example.
09:18:18flyx(well at least I think that would work)
09:18:32dom96if you're assigning a new value then it's not really useful, but when you're modifying a value then it is.
09:18:53dom96In your gist you're using int, so say you wanted to call `inc` on that int then the mget() is useful.
09:19:25dom96But when you assign an mget'ed value to a variable, it gets copied.
09:22:44*enthus1ast quit (Ping timeout: 260 seconds)
09:24:26endragordom96: thanks, yeah inc/dec is nice for that case (although you probably usually want to do some checks on the value before/after doing inc/dec). And what's with the mutable string? Is there something else you need except `[]=` and alike?
09:24:30*t4nk125 quit (Ping timeout: 250 seconds)
09:25:10dom96endragor: strings are mutable, in many cases I want to append data to them with `add`.
09:25:36*flyx tested it. you can do addr(table.mget(1)). this obviously wouldn't work if the return value wasn't var
09:27:07endragordom96: yes, right, and what about var return value? `add` doesn't return anything
09:27:33dom96endragor: not sure what you mean
09:28:00endragordom96: you began with saying "var return values are useful when you want a mutable string for example". I was trying to understand what exactly you meant by that :)
09:28:50dom96I meant that if you have a Table[string, string] and you want to append some data to one of the values in that table, you can do something like this: table.mget("foo").add("blah")
09:29:58endragordom96: ah, I see, thanks
09:32:29flyxusing a var return value will also be faster for large data structures, because they do not need to be copied. but you'd probably use refs for those anyway.
09:36:30endragorflyx: that's true. but only if you need to change one field of the structure. and in practice I feel it happens rare that you change values stored somewhere without doing some work with those values before or after changing them.
09:37:48flyxendragor: well for that case, you can still use the addr() method.
09:39:09dom96keep in mind though that using 'addr' is unsafe
09:39:18endragorflyx: yeah, with the addr hack you can do all you want, but it's a hack :)
09:39:47flyxI think it is intentionally clumpsy to handle because you should think about what you're doing when you use it. even C++, which uses „var“ values for a lot of things, you need to explicitly specify that you want to keep the „var“ when you assign it to another variable.
09:40:39endragoryou can also use things like addr/cast to directly access memory of data structures like hash tables without `var` return values
09:41:34flyxendragor: I think casting is much lower level than addr. addr still gives you type safety.
09:42:49endragornot memory safety though - GC loses track of where that addr goes to. I mean both those features are something not recommended to do anyway.
09:45:02flyxI'd rather say you can use it if you „know what you're doing“. if the Table does not go out of scope while juggling around with the ptr var, nothing bad will happen.
09:45:41flyxbut I wouldn't use it unless it provides a real benefit
09:46:47*PMunch joined #nim
10:09:27*ekarlso- quit (Ping timeout: 276 seconds)
10:13:56*desophos joined #nim
10:18:22*desophos quit (Ping timeout: 252 seconds)
10:22:46*arnetheduck joined #nim
10:23:56*ekarlso joined #nim
10:45:50*yglukhov quit ()
10:49:44*girvo joined #nim
10:56:59*girvo quit (Ping timeout: 244 seconds)
10:57:47*yglukhov joined #nim
11:00:17*elrood joined #nim
11:41:03*BitPuffin joined #nim
11:53:56*girvo joined #nim
11:55:18*krux02 joined #nim
11:56:36cheatfatedom96, why you are marking my issues with os/arch specific :(((
11:57:01cheatfatenobody cares about os/arch specific issues
11:59:55federico3...why?
12:01:13cheatfatefederico3, it was a joke :)
12:01:36federico3:)
12:06:52*girvo quit (Ping timeout: 260 seconds)
12:12:46*gokr quit (Ping timeout: 252 seconds)
12:13:10*zahary quit (Read error: Connection reset by peer)
12:13:28*zahary joined #nim
12:18:32*enthus1ast joined #nim
12:33:36*vegansk is now known as veganskaway
12:44:11cheatfatedom96, i think i finished my notification library and currently i'm looking in asyncdispatch.nim
12:44:47cheatfateand there a problem, because asyncdispatch.nim is for some reason works and designed to work only with sockets
12:46:01cheatfatemy library can work with sockets/pipes/signals/processes/timers/user events
12:46:29cheatfateand i think with file descriptors too
12:52:27dom96I'm certain it can be made to work with those
12:52:48dom96asyncdispatch support file descriptors
12:52:57dom96via asyncfile
12:54:09cheatfatedom96, i think we need to invent some kind of framework
13:02:00nivi have a question: why does this do "new result" here? isnt the result object allocated automagically? https://github.com/nim-lang/Nim/blob/a61d5e466beb8dc5efeb4a96511c8162fe16f38c/lib/pure/logging.nim#L157
13:02:29*girvo joined #nim
13:03:24*lcm337 quit (Quit: Page closed)
13:03:44cheatfateniv, you need to allocate "ref object" objects
13:04:02cheatfatebut you can use result = ConsoleLogger() it will do the same
13:04:04nivoh, otherwise the ref is something akin to nullptr?
13:04:28cheatfateyep its nil[null] otherwise
13:04:37nivim pretty new to nim still. dug into it a few months back and wrote some code, but forgot all i learned really. what always confused me was newString() vs ""
13:05:01nivi have been using newString() to explicitly allocate a buffer to pass to a importc function
13:05:33cheatfate"" do the same as newString()
13:07:10nivyes, but not if i do newString(128) to allocate 129 bytes for str.cstring, right?
13:09:16cheatfateniv, i think you can get more info/examples in http://rosettacode.org
13:10:01nivcheers
13:12:00*McSpiros quit (Ping timeout: 250 seconds)
13:14:18*darkf quit (Quit: Leaving)
13:15:21*girvo quit (Ping timeout: 276 seconds)
13:17:24*thotypous joined #nim
13:23:34*fredrik92 quit (Read error: Connection reset by peer)
13:31:11*gokr joined #nim
13:49:39*coffeepot quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
14:04:04*izi joined #nim
14:11:17*girvo joined #nim
14:14:45*fredrik92 joined #nim
14:23:16*girvo quit (Ping timeout: 264 seconds)
14:29:08*alexsystemf_ joined #nim
14:38:54*pregressive joined #nim
14:42:45*McSpiros joined #nim
14:56:45*McSpiros quit (Quit: Page closed)
14:58:52*arnetheduck quit (Ping timeout: 252 seconds)
15:01:20*pregressive quit (Read error: Connection reset by peer)
15:02:18*pregressive joined #nim
15:07:58*dorei quit (Quit: Page closed)
15:11:59*InfinityBear joined #nim
15:19:45*girvo joined #nim
15:29:25elroodnim docset for dash/zeal up at https://www.dropbox.com/sh/7jdv2e8zdr03dfz/AADlSvHZ5IRehieM--J1c4Dxa?dl=0
15:32:19*girvo quit (Ping timeout: 248 seconds)
15:39:08dom96elrood: maybe you could document how you generated that in the wiki?
16:04:39federico3dom96: what is this XXTEA algorithm in nimble? :-/
16:05:05dom96dunno, why?
16:07:19*vendethiel joined #nim
16:08:29federico31) XXTEA does not seem to be that secure https://en.wikipedia.org/wiki/XXTEA 2) it's implemented in Nim instead of using a well known, well tested library 3) there is no mention of any security review of the implementation
16:11:06*GangstaCat joined #nim
16:15:28*pregressive quit (Remote host closed the connection)
16:15:45dom96federico3: Package repositories (or at least package repositories which don't belong to system package managers) don't typically vet packages for criteria like the ones your described.
16:16:10federico3(technically, some do.)
16:16:54*InfinityBear quit (Ping timeout: 246 seconds)
16:16:59dom96I'm sure some do, yes. But most don't, and we really don't have the resources to spend time validating packages in such a way.
16:17:04federico3...and given the size of the repository and that PRs are required to commit to it, it would be quite easy to reject or remove packages
16:17:50dom96But why is it an issue? Just don't use it if you don't trust it.
16:19:16federico3it's an issue only if there's an expectation that the packages in Nimble match some basic criteria :)
16:20:03dom96Currently they don't, we have such a low amount of packages that I am just accepting all of them :P
16:20:17federico3if the list is not being curated at all, please put a big warning on https://github.com/nim-lang/packages/blob/master/README.md
16:22:04*yglukhov quit (Ping timeout: 240 seconds)
16:22:06federico3"such a low amount of packages" -> I see your point, but I'm not sure that keeping all sort of packages around (especially broken/obsolete ones) help grow the community - it can discourage people
16:22:09*brson joined #nim
16:28:15*girvo joined #nim
16:29:45*brson quit (Ping timeout: 244 seconds)
16:30:31*brson joined #nim
16:32:32krux02dom96: A low amount of packages can also be the reason to be able to check all of them
16:33:07dom96federico3: feel free to go through the list of packages and pick out ones which are broken/obsolete :)
16:35:55*brson quit (Ping timeout: 244 seconds)
16:36:31elrooda reasonably automated and easy to use way to mark packages as outdated or broken shouldn't be that hard to set up, and it would benefit the language as a whole tremendously
16:36:35federico3I'll send a PR for the readme file
16:36:45*brson joined #nim
16:37:10federico3elrood: https://github.com/nim-lang/packages/blob/master/.travis.yml#L20
16:38:12*desophos joined #nim
16:38:34*niv quit (Ping timeout: 240 seconds)
16:38:38dom96The package repository already contains tags for each package.
16:38:54dom96I would prefer to tag things "unsafe" or "obsolete" or whatever instead of removing them.
16:39:14dom96Although you might find that the authors of those packages are not too happy to have their package's deemed unsafe :P
16:41:07*girvo quit (Ping timeout: 248 seconds)
16:41:09elroodi still remember how dsource for d slowly turned into a pile of bitrot, discouraging any newcomers and people searching for a comprehensible list of usable libraries. no way of telling how many people dismissed d or any comparable project for similar causes, it would be a shame if nim stumbled into the same trap unnecessarily
16:42:03*niv joined #nim
16:46:42elroodfederico3, that's nice as the very bare minimum, but not sufficient at all. the very least one should aim for is a list stating the last time a package was updated, and a way to comment or vote on its status
16:49:12federico3+1 elrood, and ideally travis CI could test if the packages are compatible with the latest Nim release.
16:57:18dom96Which is why we need a dedicate Nimble packages website.
16:57:46nivleft-pad.nim plz
16:58:07dom96lol
16:58:51federico3:D
16:59:05dom96Pretty sure strutils.indent already does it's job
16:59:09nivalso can i badger you about when you might be working on jester again?
16:59:14federico3dom96: a website?
16:59:24*brson quit (Quit: leaving)
16:59:45dom96niv: good question :)
17:00:03nivi dont expect instant gratification, im just being whingy about the global exception handler thing
17:00:07dom96niv: Hopefully soon, I haven't worked on it in a long time.
17:00:25dom96federico3: like npmjs.com or hackage
17:00:27nivi had a brief look at the code but this whole macro/route/template business is a bit wooshy for me
17:02:17federico3urgh npm /o\
17:03:11*desophos quit (Remote host closed the connection)
17:04:14*desophos joined #nim
17:04:28*enthus1ast1 joined #nim
17:05:53*enthus1ast quit (Ping timeout: 244 seconds)
17:06:20dom96niv: I'll see about adding a global exception handler today, but can't make any promises. Are there any other things you would like to see in Jester?
17:07:02nivreally just a way to capture exceptions for individual requests and return custom data instead of the precooked 500 string
17:07:13*yglukhov joined #nim
17:07:18nivyou dont have to hurry on my account, i was just being badgery
17:07:33nivthe next big item on the wishlist would be middlewares but thats much more involved
17:07:33*yglukhov quit (Remote host closed the connection)
17:08:03niv[rack actually does error handling with middlewares too, but its not neccessary i guess just for that]
17:08:05*yglukhov joined #nim
17:09:23*enthus1ast1 quit (Ping timeout: 248 seconds)
17:10:31nivdom96: if youre curious, here's my hacky code where im using jester :) https://gist.github.com/niv/444a1f5fb7f14c2e761f3145cbdc5d8f
17:10:40*Jesin quit (Quit: Leaving)
17:11:13nivyou can see how im using excpetions to validate arguments in authenticateServer, but right now jester just 500s instead of giving a proper error
17:11:16dom96niv: A more important thing I think is to finally release Jester 0.1, it's been release-less for far too long...
17:12:31*yglukhov quit (Ping timeout: 252 seconds)
17:12:40dom96yeah, jester is designed to show the stack trace in the browser.
17:13:07nivthats not something you want to show up on api consumers though
17:13:21*desophos quit (Remote host closed the connection)
17:16:44*pregressive joined #nim
17:19:02nivactually, middlewares shouldnt even be hard to do
17:19:09nivhmm.
17:24:09*pregressive quit (Remote host closed the connection)
17:26:33*silven quit (Ping timeout: 244 seconds)
17:27:21*silven joined #nim
17:30:50*brson joined #nim
17:31:19nivdom96: adding middlewares would probably be the best way for global exception handlers too
17:31:52dom96I have a feeling that both may involve implementing a similar thing
17:32:07nivshould be really easy, just wrap the actual handler call with the call chain. then support addMiddleware() that pushes a handler onto a seq
17:32:40nivi can stub out some pseudocode if you want to start off
17:33:09dom96sure, that would be helpful. Would also like to see the usage you envision
17:33:20dom96just some code showing how you will use the middlewares
17:33:47*alexsystemf_ quit (Quit: Connection closed for inactivity)
17:37:23*girvo joined #nim
17:50:00*girvo quit (Ping timeout: 246 seconds)
17:53:50nivdom96: https://gist.github.com/niv/8c214f65743c7909c1686b51fa9213a3 example code typed down in a hurry. imactually late for something so i have to run, but i'll be around tomorrow again if you want to chat about it
17:55:45nivim not too sure on how to do the custom request data. cant very well have it untyped i guess, but it needs to be flexible - for example, a request mixing in it's JsonNode representation somehow
17:58:06*Jesin joined #nim
18:01:07*endragor quit (Read error: Connection reset by peer)
18:02:14*endragor joined #nim
18:04:44*Jesin quit (Quit: Leaving)
18:13:28*endragor_ joined #nim
18:14:40*Jesin joined #nim
18:15:45*InfinityBear joined #nim
18:16:40*endragor quit (Ping timeout: 244 seconds)
18:17:26*yglukhov joined #nim
18:17:39*endragor_ quit (Ping timeout: 246 seconds)
18:19:22*boopsiesisaway is now known as boopsies
18:26:01*anp1 joined #nim
18:31:17*McSpiros joined #nim
18:32:09*pregressive joined #nim
18:45:05*desophos joined #nim
18:45:11*Matthias247 joined #nim
18:46:12*pregressive quit (Ping timeout: 276 seconds)
18:46:17*girvo joined #nim
18:48:29*pregressive joined #nim
18:49:45dom96So guys, myself and Araq have been working on this for the past two days. We thought that we should ask what you think before publishing it everywhere. We've started a Bountysource Salt campaign: https://salt.bountysource.com/teams/nim
18:50:16*desophos quit (Ping timeout: 264 seconds)
18:58:58*McSpiros quit (Quit: Page closed)
18:59:17*McSpiros joined #nim
19:00:30*pregressive quit (Remote host closed the connection)
19:01:32McSpirosHey Dom. I think this will be good for Nim of it picks up, even a little
19:02:17*desophos joined #nim
19:02:40dom96hey McSpiros, glad you think so :)
19:03:20McSpirosis it live now?
19:03:53dom96yeah, although it's only available through that URL really.
19:04:00*desophos quit (Remote host closed the connection)
19:04:04*Matthias247 quit (Read error: Connection reset by peer)
19:04:16dom96McSpiros: have you read through it, anything you think we could improve in the text?
19:05:01McSpirosYes i did, but give me a moment to check it again and see if I can come up with anything
19:05:26dom96Brilliant, thank you
19:06:09*pregressive joined #nim
19:06:33nivfirst blood!
19:06:47*desophos joined #nim
19:07:37dom96niv: Thank you! :D
19:08:53*desophos quit (Remote host closed the connection)
19:09:12niv:)
19:09:24McSpirosaah, you beat me to it :)
19:09:37*desophos joined #nim
19:09:52McSpirosdom i think the text is pretty clear
19:10:07dom96McSpiros: Great :)
19:10:12dom96Thank you for reading
19:10:17dom96and for the donations!
19:10:23McSpirosand well written, i can't think of anything that could be improved there
19:10:26niv10/10 would read again
19:11:18dom96niv: hah
19:11:58*enthus1ast joined #nim
19:14:01dom96Now to edit some HTML to put this on the front page of nim-lang.org
19:14:32McSpirosi guess 2nd place isn't that bad :)
19:16:51*niv sniggers
19:17:58McSpiros:)
19:18:37nivnow that i spent $5, i demand 24/7 personal support
19:18:55*pregressive quit (Read error: Connection reset by peer)
19:20:03McSpirosniv: It is only fair after all
19:20:11Araqhey niv. what can I do for you?
19:20:19nivyes, $5 buys like three cups of ramen
19:20:31dom96hello niv, me and Araq are both at your service.
19:20:36dom96:P
19:20:38McSpiroshahah
19:20:45*niv grins evilly
19:21:08Araqfor $5 I shall tell you why your favorite OS is garbage.
19:21:24nivwhats wrong with nimOS?!
19:21:33Araqit doesn't exist.
19:21:40nivhence its crap?
19:21:53Araqyup. it's vaporware.
19:25:47*yglukhov quit (Remote host closed the connection)
19:31:44*Jesin quit (Quit: Leaving)
19:33:03*Varriount quit (Ping timeout: 240 seconds)
19:35:58*BitPuffin quit (Ping timeout: 248 seconds)
19:43:05*Varriount joined #nim
19:43:40*McSpiros quit (Quit: Page closed)
19:43:47nivAraq: so why is osx garbage then?
19:44:06*McSpiros joined #nim
19:44:28*yglukhov joined #nim
19:45:05nivhaving a really hard time deciding on my favourite os. im pretty sure i think myself they're all garbage, but i use them anyways
19:45:30Araqbecause it's based on this "document based" philosophy but underneath is Unix which is based on processes. so there is a mismatch and spanning multiple processes is much easier than writing a program that can deal with multiple documents
19:45:59Araqand there are all kind of things that don't work. for example 'fork' doesn't work with Cocoa.
19:46:13nivoh, and resource forks. a great idea, 20 years ago
19:46:50AraqIMHO 'fork' is a horrible interface.
19:47:48nivyeah, ive never seen it used in anything but server daemons
19:52:33nivi'll ask next month then why linux is gargabe
19:52:38nivgarbage. words.
19:53:38Araqbecause it doesn't run Starcraft 2.
19:54:17krux02actually with wine starcraft 2 does work on linux (I've heared it, not tested it)
19:54:49nivi have win10 on my desktop, works fine for gaming :)
19:55:14krux02I have arch linux, works fine for playing indie games
19:55:23krux02btw: stop gaming start playing
19:55:26Araqkrux02: IME nothing works fine with wine. but maybe it got better.
19:55:53nivkrux02: whats the difference?
19:56:30*desophos quit (Remote host closed the connection)
19:57:17krux02niv: I think there is no real difference, but I have the impression gaming is used, when playing games is taken seriosly, like meeting regularly and doing training and complaining about that other people do not enouch in the guild etc
19:57:25krux02and playing is when it's just about having fun
19:57:35nivugh no. :) not what i meant at all
19:58:46krux02Araq: let's say in wine there are things that work well, but you should better not expect it.
19:59:34nivi tried wine on my macbook for some light 3d apps and none worked. i figured its very chipset-dependent
19:59:41nivthe newer intel ones seem not too great
19:59:54*desophos joined #nim
20:00:15krux02I use it for windows xp time games
20:00:19krux02works mostly
20:00:44krux02or better said, often
20:02:29nivi'd rather play natively to get best perf and compatibility
20:02:53krux02yes but sadly windows is not always the best option to play windows games
20:03:00krux02especially when time goes by
20:03:31krux02There are games that work on wine, that don't work on windows anymore
20:04:02nivyoure not supposed to play old games, you need to buy the newest yearly installment for best experience
20:05:02cheatfateAraq, and what is your favourite OS now? :)
20:06:23cheatfateor maybe OS philosophy?
20:10:00krux02how about templeos
20:12:16Araqcheatfate: Windows XP :-)
20:13:57cheatfatewindows 2000 was much better than xp :)
20:17:46*pregressive joined #nim
20:21:04*mat4 joined #nim
20:21:10mat4hello
20:21:26krux02mat4: hello
20:21:39*pregressive quit (Client Quit)
20:22:46*desophos quit (Remote host closed the connection)
20:23:49mat4hi krux02
20:24:16krux02ask your question
20:24:55Araqkrux02: mat4 is just a friendly Nim user. he doesn't join to ask questions. he knows everything.
20:25:41mat4not everything of course
20:27:31*Jesin joined #nim
20:28:05AraqI still don't understand your threaded interpreters ;-)
20:28:16Araqblack magic.
20:31:58*desophos joined #nim
20:37:28cheatfatethreaded interpreters? interesting
20:37:36mat4there misuse the branch-target buffer of out-of-order superscalar processors for static branch prediction, eleminating the call overhead
20:39:26krux02aha, now I get it
20:44:00mat4it works quite well and reduce the whole dispatch overhead to less than two cycles in the current version
20:44:08mat4(Intel Core i3)
20:44:11dom96The bountysource campaign is live on http://nim-lang.org now. Still fighting caching though (anybody got any tips regarding caching and nginx btw?)
20:47:44dom96Oh well, I guess it's just Firefox being overly silly about caching.
20:51:37cheatfatedom96, what you want to cache?
20:52:00dom96I think I need to once and for all set up caching properly.
20:53:13cheatfatedom96, http caching, static files caching, dynamic content caching?
20:53:30dom96cheatfate: static files
20:54:24federico3dom96: https://github.com/nim-lang/packages/pull/340 https://github.com/nim-lang/packages/pull/339 :)
20:56:25yglukhovdom96: nim doesnt have a description when viewed in the list on the front page: https://salt.bountysource.com
20:58:02*Jesin quit (Quit: Leaving)
20:58:11dom96yglukhov: hrm, there doesn't appear to be a way to set that
20:58:48yglukhovdom96: somehow its set for other projects though =)
20:58:50cheatfatedom96, do you want to implement caching in jester or with nim?
21:00:25dom96cheatfate: I'm setting up caching for nim-lang.org (which runs on nginx)
21:00:41dom96I think I did it anyway, just a matter of setting correct 'Expires' options
21:01:19dom96yglukhov: Seems like a Bountysource bug ;)
21:01:52*InfinityBear quit (Ping timeout: 252 seconds)
21:02:57cheatfatedom96, ahh ok
21:04:22yglukhovdom96, its kinda unfortunate that only nim subjected to that bug =). maybe you should ping their support team?
21:05:14dom96yglukhov: Was just about to do that :)
21:05:22yglukhovcool!
21:07:32dom96in fact, just asked #bountysource
21:07:39dom96IRC support ftw
21:08:09mat4just noticed, the LXDE project name is even wrong written (LXLE)
21:15:38dom96yglukhov: Fixed :)
21:15:54dom96Turns out that field was in the ordinary bountysource team settings page
21:15:56dom96not the salt one
21:16:34yglukhovyay! =)
21:17:54nivdom96: alright, done being busy with less important stuff. did you have a chance to check over my "document"?
21:19:49dom96hah
21:20:50dom96Still gotta finish some stuff
21:21:01*Demon_Fox joined #nim
21:28:16dom96niv: ok, where is this document of yours?
21:28:42niv[19:53:50] <niv> dom96: https://gist.github.com/niv/8c214f65743c7909c1686b51fa9213a3 example code typed down in a hurry. imactually late for something so i have to run, but i'll be around tomorrow again if you want to chat about it
21:28:43niv[19:55:45] <niv> im not too sure on how to do the custom request data. cant very well have it untyped i guess, but it needs to be flexible - for example, a request mixing in it's JsonNode representation somehow
21:30:56*BitPuffin|osx joined #nim
21:32:44*yglukhov quit (Remote host closed the connection)
21:33:49*^aurora^ joined #nim
21:34:26dom96niv: doing next.call in every middleware callback would still be verbose, but I'm sure there is a way to automate that
21:34:39dom96looks good, but I don't think i'll get a chance to implement it today
21:34:51dom96wanted to at least do some work on Nim in Action today :)
21:34:54nivthe point is something akin to "yield", so the middlewhere can decide where (pre/middle/post/wrap) and if at all to call the next
21:35:14nivthe actual syntax i wrote is broken ofc, since im a shrub
21:36:29*kevin__ joined #nim
21:36:46nivnot sure how else you could do it and keep the same functionality
21:36:59dom96I'll have to see how it's done in Sinatra et al.
21:37:28*kevin__ is now known as nivek
21:37:38nivdom96: https://github.com/rack/rack/blob/master/lib/rack/server.rb#L342
21:39:14nivits a bit more involved in rack, since it builds a tree of separate apps (which you can use atomically or as a chain i guess), but the principle is the same
21:40:36dom96but in there it's just returning a boolean to determine whether to call the next middleware right?
21:41:22*desophos quit (Remote host closed the connection)
21:43:02nivits returning the full response all the way down the chain. each middleware can edit the response, or omit/replace it
21:43:40Araqsounds like you're reinventing function calls.
21:44:18nivwell yes, its a nested call chain of functions
21:44:56enthus1astmaybe you could add a (digital) copy of "Nim in Action" ? : )
21:45:26Araqniv: jester supports function calls because Nim does. ;-)
21:45:45nivwhat are you on about?
21:46:03nivthis is about adding a middleware stack, however it looks, to jester. it cant be done the way it is now
21:46:13Araqwhy not?
21:46:29nivbecause jester needs to call our middlewares for each request and wrap them
21:46:36nivit cant be done from inside the routing
21:46:40dom96enthus1ast: to jester? :)
21:47:07enthus1astdom96: is someone is supporting the bountysource campain
21:47:09enthus1astif
21:47:36dom96enthus1ast: wish I could, that would require some agreement with my publisher
21:47:52dom96enthus1ast: but you know, you could always just buy a copy
21:50:15*boopsies is now known as boopsiesisaway
21:52:56*couven92 joined #nim
21:56:52*fredrik92 quit (Ping timeout: 252 seconds)
22:00:22krux02I just found out that the typeinformation of sets and enums get completely compiled away, that makes it a bit harder to support those types in debuggers
22:03:00mat4hmm, do you use the Gnu debugger ?
22:03:09mat4(alias gdb)
22:03:29Araqkrux02: ha, I noticed that too
22:05:42Araqkrux02: we can change the C codegen for that, but it's unclear what to produce
22:05:52Araqsince C doesn't know about sets at all
22:05:54krux02typedefs should be fine
22:06:42krux02c doesn't know, but there should if there is some naming convention for typedefs, the debugger can know
22:07:42krux02typedef NU8 myenum_Enum
22:08:10Araqah yeah.
22:08:18Araqthat's a good solution.
22:08:34krux02typedef UN16 myenum_Set
22:10:30mat4well, I think such naming conventions are debugger specific (just to note I don't use gdb for example)
22:11:52krux02mat4: gdb doesn't know those conventions either, but I can teach gdb to know them
22:12:18krux02lldb should be able to do the same
22:15:18mat4also it can be assumed the generated machine code which access thouse data representations is always characteristic, so I'm using an assembler level debugger and just insert some assembler code to identify there addresses. This procedere I found easier than extend some configuration files
22:16:19*anp1 doubts this works at optimized code
22:18:12krux02who is talking through the server?
22:18:36mat4anp1: works well, the x86 opcode CC for example is not optimized away for both GCC and Clang
22:19:28mat4(there is also the possibility to declare such insertions as volatile)
22:20:10anp1obviously not CC, but normal operations
22:20:46anp1there's also the possibility to generate dwarf debug info
22:21:13mat4yes of course
22:21:44anp1with the advantage that there's no impact on run time
22:23:00*McSpiros quit (Quit: Page closed)
22:26:52*gunn joined #nim
22:33:04*izi quit (Quit: Leaving)
22:33:46*darkf joined #nim
22:38:36*desophos joined #nim
22:40:40*mat4 quit (Quit: Leaving)
22:42:55*desophos quit (Ping timeout: 250 seconds)
22:46:39*Trustable quit (Quit: Leaving)
22:51:01*desophos joined #nim
22:56:22*krux02 quit (Quit: Verlassend)
22:59:15*desophos quit (Remote host closed the connection)
23:05:46*girvo quit (Quit: leaving)
23:05:50*desophos joined #nim
23:07:07*elrood quit (Quit: Leaving)
23:08:18*couven92 quit (Quit: Bedtime! Good Night to all! :))
23:27:37*anp1 quit (Ping timeout: 260 seconds)
23:40:04dom96Let's see how HN reacts to a link to our Bountysource campaign :)