<< 13-02-2014 >>

00:01:04EXetoCI'm referring to when you responded to my PR saying that I should instead create a package for mongo and then follow up with a PR that removes it from the stdlib
00:03:22fowlEXetoC, ill make the repos for you
00:03:28fowlwhats your github name
00:03:44EXetoCEXetoC
00:03:54AraqAraq
00:05:49fowlEXetoC, https://github.com/nimrod-code/mongo
00:06:47EXetoCthanks
00:08:00VarriountAraq: should I use UPX on the binaries being placed in the installer?
00:08:30VarriountI'd only do it for 32 bit, because UPX support for 64 bit is experimental.
00:08:35Araqno, you should never use upx
00:09:05VarriountAraq: Ok. Any particular reason why I should never use it?
00:11:26AraqVarriount: http://wiki.freepascal.org/Size_Matters#UPX
00:11:27EXetoCdone. I haven't added much, but I should release early so that people can tell me if it sucks
00:15:40VarriountAraq: Huh, interesting.
00:16:27VarriountAt least for me, the only strong point in that argument is the whole memory-mapping drawback, but that's good enough for me.
00:17:19Demosimo binary sizes are not much of a problem unless they get into the 100M+ range.... or if you have link time problems
00:17:44VarriountDemos: *cough*visual studio 5 gb*cough*
00:18:07Demosthat is the total size of the product, there is more than just the binary. But yes that is large
00:18:16Demosor RAGE which clocks in at 30GB for everything
00:18:22VarriountRAGE?
00:18:25Demosa game
00:18:38VarriountPh, well, a game I can understand.
00:18:45Demosa very good one if you get the chance, it does some nifty stuff
00:19:03VarriountThough, 30 gb seems a bit excessive, unless some very fancy graphic techniques are being used.
00:20:29VarriountAraq: How soon does the installer need to be completed? As soon as possible?
00:21:17Demosit does virtual texturing, so there is essentially one "motherfucking huge" compressed texture that can be progressively decompressed as the data gets to the GPU, at least this is how I understand it. This means that they do not need to tile their landscape textures and they can have the game run at 60fps on anything.
00:22:40*BitPuffin joined #nimrod
00:23:27VarriountAnyone here have a blank 64 bit windows vm free?
00:23:45VarriountThe 64 bit nimrod installer needs testing
00:27:39OrionPKyou might be able to get one from Microsoft
00:27:48VarriountOh?
00:28:01OrionPKthey have images for testing IE
00:28:24dom96https://github.com/Araq/Nimrod/wiki/GSoC-2014-Ideas
00:28:31dom96Thoughts?
00:28:59AraqVarriount: as soon as possible is good enough
00:29:22Araqwill be at least 1 week until we're ready for a release
00:29:33VarriountAraq: Well, the 64 and 32 bit installers are currently being generated, however they need testing.
00:30:05AraqI can test the 32 bit build on my XP VM
00:30:30VarriountOn a side note, I was wondering if using nimrod executables in place of the build shell scripts would be a good idea.
00:31:28Araqnah, .bat files are cool
00:31:44Araqdon't change what works
00:32:18VarriountAraq: Adding mingw and msys is going to increase the size quite a bit, and I don't know what's safe to remove.
00:32:34Araqmsys is not necessary
00:33:00Araqalso we have the Gamera edition with a minimal GCC package
00:33:48*carum joined #nimrod
00:33:58Araqtools\trimcc.nim is a program that trims the GCC installation to a bare minimum
00:34:06AraqI used that to build Gamera
00:34:14VarriountGamera?
00:35:42AraqVarriount: we got the name from http://www.youtube.com/watch?v=Gqejmh-nJFo
00:35:45vbttdom96, Araq: knowledge of C could be added to the desirable skills under coroutines.
00:36:05dom96hrm, and asm too I guess
00:36:15Araqvbtt: meh, I prefer knowledge of assembler
00:36:29dom96I added both.
00:36:35Araqk
00:36:37vbtteither is fine i guess - just knowledge of machine architecture is what i'm getting at.
00:36:51dom96Knowledge of C is true for many things since Nimrod compiles to C anyway.
00:37:56vbttprobably rephrase 'assembler' to 'assembly language'
00:37:57OrionPKhttp://www.modern.ie/en-us/virtualization-tools
00:39:07vbttnot sure why Lua is highlighted. I can think of Lua, Erlang, Python (using greenlets), Go
00:39:49AraqGo has no coroutines
00:39:56Araqneither does Erlang
00:39:59Araqneither does Python
00:40:27vbttwhat are goroutines then? or erlang processes?
00:40:38Araqnot in the "collaborative" multi tasking sense
00:41:05Araqgoroutines are light-weight processes
00:42:01vbttdo you mean the difference is preemptive vs cooperative scheduling?
00:43:45Araqyes
00:43:49vbttwhat else will you use erlang processes or goroutines for, if not collaborative multi tasking?
00:44:02vbttgo is not preemptive, btw. erlang is. python greenlets are not preemptive either.
00:44:42vbttit's just that they are also well integrated with the io operations (i.e. io ops automatically do async system calls and automatically call 'yield')
00:45:12Araqgo is preemptive, otherwise it couldn't run on multiple cores
00:45:55Discolodafun fact, Wings3D (easy to use 3d modeler written in Erlang) doesnt use processes (or it didnt years ago)
00:46:45vbttby preemptive i mean, go runtime will not suspend any running go routine doing pure cpu work.
00:46:53vbttit only suspends them when they do io.
00:47:00*noam_ is now known as noam
00:47:08AraqI know but that's not enough to prevent races
00:47:10dom96gah, the competition is tough.
00:47:10*xenagi joined #nimrod
00:47:16vbttright, fair point.
00:47:22dom96Other idea pages are much more thorough than ours :\
00:48:03vbttok, so perhaps mentioning go and erlang is not a good idea.
00:49:06Araqdom96: I really need to sleep now, others need to expand this stuff
00:49:07vbtti see what you're saying. perhaps mentioning that the coroutines we want are bound to a single threaded, non moving (not best choice of words)
00:49:30vbttgood night Araq. I'll try to come up with some expansions you can review tomorrow.
00:49:42dom96vbtt: Thanks :)
00:49:55dom96zahary_: Varriount: Could you guys try to help out too if at all possible?
00:50:31dom96I need to sleep now too.
00:53:05vbttdom96:good night.
00:55:11*Icefoz_ quit (Ping timeout: 245 seconds)
00:56:20Varriountdom96: Help out how?
00:58:03DemosI added some stuff to the CAAS section. Do we want to mention adding some kind of debugging support or is that not really part of CAAS?
01:01:07dom96Varriount: Expand the descriptions. Add more detail. Provide links to helpful sites.
01:01:30dom96I asked for a review in #gsoc and the guy said we need to be more thorough.
01:01:50VarriountEeep
01:02:03dom96and that we need to write what the intended outcome is.
01:02:29dom96Last year 42% of the orgs got accepted.
01:02:38dom96But I will not give up now :P
01:02:54dom96oh, and write a paragraph about what Nimrod is if you can please.
01:03:13dom96Good night.
01:03:21Varriountdom96: What, the information on the website isn't enough? Goodnight
01:03:37dom96"<carols> dom96: you'll probably also want some info on your org itself on that page since that may be the first thing students see about you before anything else"
01:05:50VarriountAraq: ping
01:17:23*Demos quit (Quit: Textual IRC Client: www.textualapp.com)
01:21:10*vbtt quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
01:31:54*Icefoz joined #nimrod
01:38:07*Demos joined #nimrod
01:43:40VarriountHi icefoz
01:54:01*carum quit (Remote host closed the connection)
02:08:19*DAddYE_ joined #nimrod
02:13:50*evil_CarpNet joined #nimrod
02:14:30*brson quit (Quit: leaving)
02:15:21*athaudia1 joined #nimrod
02:15:28*DAddYE quit (Read error: Connection reset by peer)
02:15:37*XAMPP_ quit (Ping timeout: 260 seconds)
02:15:37*CarpNet quit (Ping timeout: 260 seconds)
02:15:38*JStoker quit (Ping timeout: 260 seconds)
02:15:49*zahary___ joined #nimrod
02:15:54*xtagon_ joined #nimrod
02:16:10*JStoker joined #nimrod
02:16:25*BitPuffi1 joined #nimrod
02:18:28*icebattl1 joined #nimrod
02:18:31*epsylon joined #nimrod
02:18:40*DAddYE joined #nimrod
02:18:47*epsylon` quit (Ping timeout: 260 seconds)
02:18:52*xtagon quit (*.net *.split)
02:18:53*icebattle quit (*.net *.split)
02:18:53*ics quit (*.net *.split)
02:18:54*Zuchto quit (*.net *.split)
02:18:55*athaudia quit (*.net *.split)
02:18:56*mietek quit (*.net *.split)
02:19:10*DAddYE quit (Remote host closed the connection)
02:19:32*[Pete_27] quit (Ping timeout: 260 seconds)
02:20:05*ics joined #nimrod
02:20:07*[Pete_27] joined #nimrod
02:20:17*Zuchto_ joined #nimrod
02:22:29*DAddYE_ quit (*.net *.split)
02:22:30*Demos quit (*.net *.split)
02:22:30*BitPuffin quit (*.net *.split)
02:22:31*renesac quit (*.net *.split)
02:22:32*zahary_ quit (*.net *.split)
02:22:32*EXetoC quit (*.net *.split)
02:22:32*OrionPK quit (*.net *.split)
02:30:34*icebattle joined #nimrod
02:31:24*Varriount quit (Ping timeout: 265 seconds)
02:33:36*[Pete_27] quit (*.net *.split)
02:33:36*icebattl1 quit (*.net *.split)
02:33:37*zahary___ quit (*.net *.split)
02:36:03*ttt joined #nimrod
02:36:07*Varriount joined #nimrod
02:37:34*zahary___ joined #nimrod
02:38:50*[Pete_27] joined #nimrod
02:38:58*EXetoC joined #nimrod
02:39:01*wa_ joined #nimrod
02:41:14*mietek joined #nimrod
02:43:15*fowl quit (Ping timeout: 260 seconds)
02:43:35*fowl joined #nimrod
02:44:30tttdoes the current compiler support nested types such as TTable[foo[T], TQueue[foo[T]]]. If so, I may just be having trouble inserting into the table
02:46:26*xenagi quit (Ping timeout: 260 seconds)
02:46:39*xtagon joined #nimrod
02:47:55*xenagi joined #nimrod
02:48:24*carum joined #nimrod
02:48:48*carum quit (Remote host closed the connection)
02:50:00*xtagon_ quit (*.net *.split)
02:50:00*athaudia1 quit (*.net *.split)
02:50:03*brihat quit (*.net *.split)
02:50:03*skrylar_ quit (*.net *.split)
02:50:03*askatasuna quit (*.net *.split)
02:50:05*musicalchair quit (*.net *.split)
02:50:05*krusipo quit (*.net *.split)
02:50:16EXetoCttt: yes it does
02:50:24EXetoCeither there's a type mismatch, or the table is constant
02:51:03tttif a function is creating and returning the table, the new(result) section will create a non-const table?
02:51:04*krusipo joined #nimrod
02:51:41*musicalchair joined #nimrod
02:52:02*skrylar joined #nimrod
02:53:55EXetoCttt: it should depend on whether or not the caller uses 'let' or 'var'
02:55:37EXetoCbut you cannot pass result to a 'var' argument, so you might need a temporary in that case
02:56:47EXetoCnevermind that last statement
02:57:08EXetoCI think I was thinking of closures
02:58:09*ddl_smurf_ joined #nimrod
02:58:21*Zuchto joined #nimrod
03:01:02*carum joined #nimrod
03:04:06*ddl_smurf quit (Read error: Connection reset by peer)
03:04:06*ddl_smurf_ is now known as ddl_smurf
03:04:08*Zuchto_ quit (Ping timeout: 260 seconds)
03:04:14*musicalchair quit (Ping timeout: 260 seconds)
03:04:15*athaudia1 joined #nimrod
03:05:16*musicalchair joined #nimrod
03:07:09*renesac joined #nimrod
03:08:59*brihat joined #nimrod
03:14:23*ttt quit (Ping timeout: 245 seconds)
03:30:10*wa_ quit (Changing host)
03:30:10*wa_ joined #nimrod
03:34:29*xtagon quit (Ping timeout: 248 seconds)
03:35:18*xtagon joined #nimrod
03:37:17*DAddYE joined #nimrod
03:46:45*DAddYE quit (Remote host closed the connection)
03:47:12*DAddYE joined #nimrod
03:47:32*carum quit (Remote host closed the connection)
03:47:52*carum joined #nimrod
03:51:24*carum quit (Remote host closed the connection)
03:51:26*DAddYE quit (Ping timeout: 245 seconds)
03:52:16*carum joined #nimrod
03:56:43*carum quit (Ping timeout: 260 seconds)
04:13:19renesacnimrod has map() but not reduce()?
04:13:49*reactormonk joined #nimrod
04:36:44*Icefoz quit (Ping timeout: 245 seconds)
04:37:18*Icefoz joined #nimrod
04:38:09Varriountrenesac: foldl and foldr
04:40:07renesacoh, in sequtils
04:40:19renesacand I was used to "reduce" as the name
04:40:20renesacthanks
04:42:04reactormonkI think we need search aliases ^^
04:43:05*carum joined #nimrod
04:54:56*askatasuna joined #nimrod
05:00:35*reactormonk quit (Quit: WeeChat 0.4.1)
05:05:54*askatasuna quit (Ping timeout: 245 seconds)
05:09:43*brihat quit (Ping timeout: 272 seconds)
05:15:45renesachttps://gist.github.com/ReneSac/56fa1fa99d1551d3ca96 <-- converters are supposed to fail that way?
05:23:30*dmac joined #nimrod
05:30:10renesacwell, I submitted a issue
05:41:05*xenagi quit (Quit: Leaving)
05:48:30*xtagon quit (Quit: Leaving)
05:55:30*carum quit (Remote host closed the connection)
05:56:05*carum joined #nimrod
06:00:29*carum quit (Ping timeout: 245 seconds)
06:37:43*vbtt joined #nimrod
06:39:45vbtthello
06:40:14vbttdom96, Araq: I've expanded the gsoc coroutine idea
06:42:22vbttbtw, anyone know what code generates the website from the txt files?
06:43:54vbttnm, found nimweb
06:53:25*skyfex joined #nimrod
07:05:02*reactormonk joined #nimrod
07:12:12*DAddYE joined #nimrod
07:20:01*skyfex quit (Quit: Computer has gone to sleep.)
07:29:18*aftersha_ joined #nimrod
07:30:01*vbtt quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
07:39:16*BitPuffi1 quit (Ping timeout: 265 seconds)
07:43:21*aftersha_ quit (Quit: Computer has gone to sleep.)
07:44:19*vbtt joined #nimrod
07:53:26*wa_ quit (Quit: Page closed)
08:12:41*rndbit quit (Ping timeout: 245 seconds)
08:13:06*Trixar_za quit (Ping timeout: 245 seconds)
08:13:29*Trixar_za joined #nimrod
08:14:21*musicalchair quit (Ping timeout: 245 seconds)
08:14:38*musicalchair joined #nimrod
08:15:11*fowl quit (Ping timeout: 245 seconds)
08:15:38*fowl joined #nimrod
08:17:01*rndbit joined #nimrod
08:49:03*_davidk_ joined #nimrod
09:14:06*surma joined #nimrod
09:16:25*DAddYE quit (Remote host closed the connection)
09:34:27*_davidk_ quit (Ping timeout: 272 seconds)
09:34:37*_davidk_ joined #nimrod
10:13:58*ddl_smurf quit (Quit: ddl_smurf)
10:17:31*DAddYE joined #nimrod
10:21:44*DAddYE quit (Ping timeout: 245 seconds)
10:33:20*zahary joined #nimrod
10:36:27*ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
10:44:13*zahary quit (Quit: Leaving.)
10:51:58*vbtt quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
10:56:07*BitPuffi1 joined #nimrod
11:24:39*_davidk_ quit (Ping timeout: 245 seconds)
11:25:14*_davidk_ joined #nimrod
11:31:06*_davidk_ quit (Ping timeout: 245 seconds)
11:59:21*BitPuffi1 is now known as BitPuffin
12:01:20dom96hrmpf
12:01:21dom96-MemoServ- Bitpuffin has read your memo, which was sent at Jan 26 17:59:31 2014
12:01:27dom96Took you long enough :P
12:01:28BitPuffindom96: :P
12:02:00dom96lies
12:07:53BitPuffindom96: :D
12:18:08*ddl_smurf joined #nimrod
12:36:27dom96BitPuffin: sup?
12:36:42BitPuffino
12:36:46BitPuffinjust coding
12:36:48BitPuffinand you?
12:38:21dom96working on GSoC ideas
12:42:47BitPuffindom96: what's the ideas?
12:42:58dom96https://github.com/Araq/Nimrod/wiki/GSoC-2014-Ideas
12:43:05BitPuffinI know
12:43:07BitPuffinlol
12:43:59BitPuffindom96: we should play dota ability draft
12:44:01BitPuffinit's hilarious
12:44:12BitPuffinyou get a random hero and then you pick skills from a bunch of different heroes
12:44:25dom96ooh, that sounds cool
12:44:49BitPuffinso you can for example be tidehunter with juggernaut ulti
12:45:12BitPuffinand venomancer plague wards
12:45:16BitPuffinor whatever
12:45:18BitPuffinyou get the drift :P
12:45:32BitPuffinor a riki with pudge hook lol
12:46:40dom96Problem is I won't know what to pick lol
12:46:49dom96I'll end up picking some silly abilities.
12:48:06BitPuffinthat's fine
12:48:13BitPuffinit's a for shits and giggles thing anyway
12:49:24*Ycros quit (Quit: No Ping reply in 180 seconds.)
12:49:51*Ycros joined #nimrod
12:56:24*askatasuna joined #nimrod
12:56:41BitPuffindom96: lol: https://www.youtube.com/watch?feature=player_embedded&v=LLOlGkipXyU
13:12:25*ddl_smurf quit (Quit: ddl_smurf)
13:12:31dom96BitPuffin: wtf is this I don't even
13:16:27renesacBitPuffin: wow, a new addittion to my fukkireta collection
13:18:10surmaAm i doing this wrong? I want to pass a TChannel as a parameter to a thread proc. Since it needs to be variable (and the thread parameter is not), I defined a reference type for TChannel. But how do I actually make it reference a TChannel?
13:19:12dom96surma: You should make the TChannel a global var
13:20:07surmareally? That is so not compatible with my Go mindset ^^
13:20:17BitPuffindom96: too much fun watching over edited dota 2 videos :(
13:21:13dom96surma: Yeah. I can imagine. Out of curiosity, what made you leave Go?
13:27:18fowlwhere is nimgrep??
13:27:25BitPuffindom96: like this one https://www.youtube.com/watch?feature=player_embedded&v=qcw10LhMTuk
13:27:29renesacis there a technical reason that requires TChannel to be global?
13:29:02dom96Well, the TChannel has to be kept alive. Best way to do that is to put it in the global namespace I guess.
13:29:22EXetoCfowl: in the tools dir
13:29:49dom96I dunno. Maybe it is possible to pass a ref TChannel to a thread.
13:29:58fowlEXetoC, ty
13:30:32dom96BitPuffin: 420noscopeswardingbrrrawwww
13:33:30*surma_ joined #nimrod
13:35:42BitPuffindom96: hellyeee
13:36:37*surma quit (Ping timeout: 248 seconds)
13:40:26fowlwaft
13:46:11*bbodi joined #nimrod
13:46:41bbodihi all! How can I copy a string in memory?
13:47:08bbodiDo I have to copy it byte by byte, or is there a simpler way?
13:47:18fowlstring2 = string21
13:47:23fowlstring2 = string1 *
13:47:51fowlthere's copyMem()
13:48:37bbodistring2 = string1 just creates an other references to string1, but I want to create two copies of the string in different locations in memory
13:49:05fowlbbodi, no, string2 would be a copy of string1
13:49:26bbodifowl: I try it, thanks a lot!
13:55:00bbodifowl: I try it, thanks a lot!
14:03:15*darkf quit (Quit: Leaving)
14:07:00*OrionPK joined #nimrod
14:08:03*dmac quit (Ping timeout: 272 seconds)
14:17:26surma_dom96: Who said I left Go ;) I still love Go, I'm actually the organizer of Berlin's Go User Group. But for certain things I want to have more control (and freedom). And nimrod actually seems to satisfy all my needs while still being compiled, statically typed, cross platform and not stupid.
14:17:36*surma_ is now known as surma
14:17:47EXetoC\o/
14:17:48*surma quit (Changing host)
14:17:48*surma joined #nimrod
14:18:04dom96heh, I shouldn't have assumed you left it.
14:18:22surmaI actually expect quite a lot of syerngy
14:18:25surmasynergy*
14:18:50dom96You should spread the news of Nimrod in your user group :)
14:19:01skrylarI remember using Go... I thought it was adorable. lol :)
14:19:06surmaThat is actually the plan, once I actually got up to speed
14:19:15surmaWe did Rust vs Go a while back
14:19:25skrylaradmittedly at the time they hadn't solved the dynamic linking problem, exceptions or Windows support, so it wasn't useful to me :(
14:19:32surmaAnd I assume some people really crave generics (although I'm here for the meta)
14:19:58dom96surma: oh, I would be interested in such a comparison. Too bad I don't live in Berlin D:
14:20:25surmaWell, Windows is done, exceptions are called `panics` (have always been there) and are discouraged to be used for flow control and dynamic linking only at compile time
14:20:58skrylarby panics you mean the 'stop the world abort()' calls that self respecting library designers will never use? :P
14:21:00surmadom96: Let me see if I can find the slides. But the main result was, that Go and Rust are actually not really the big rivals HN & others want them to be
14:21:18surmaskrylar: Exactly. They should never be used by a library.
14:21:21dom96I don't understand how people can live with Go's exception situation.
14:21:42fowlgo has exceptions now?
14:21:45skrylarsurma: abort() should never be used, at all
14:22:23dom96fowl: I bet they realised that they are really useful in some scenarios so decided to implement them. But still discourage their use for some silly reason.
14:22:34skrylardom96: no, 'panic' is abort()
14:22:46skrylarits the equivalent of doing a println() and segfault
14:22:48fowli dislike the error-check api
14:23:04dom96skrylar: So it's basically quit() in Nimrod?
14:23:05fowlerr, foo := something(); if err: die()
14:23:23skrylardom96: worse, because abort() tends to lead an OS to throw up crash warnings
14:23:24surmaskrylar: No. They are recoverable
14:23:33skrylarthey weren't when i used it :P
14:23:40surmapanic() always had recover()
14:23:47surmasince the very first release afair
14:23:54skrylarI used it before 1.0
14:24:06dom96surma: Would love to see the slides if you can find them.
14:24:07surmame too ;) That's why I said release, not stable
14:24:08skrylari don't remember them having a recover, but *shrugs*
14:24:40skrylari don't see why libraries shouldn't use exceptions, they're useful things that serve a use; there's even some microcontroller code that uses the setjmp varient of them
14:24:58skrylarthey did this analysis and found it was way more efficient than branching after *every* procedure call to check for an error
14:25:00surmaskrylar: Its used - for example - to sandbox the goroutines for each incoming http connections. If one of them panics (may that be a custom panic or a runtime panic like Index OOB), it doesn't affect anythng else and produces a 500 response
14:25:29skrylar(source: http://www.on-time.com/ddj0011.htm )
14:25:37surmaskrylar: You can, you might. But you should really think about if it's the right way to do that. There are perfectly valid usecases for panics in libraries.
14:26:23*rixx joined #nimrod
14:26:29dom96hello rixx
14:27:00rixxhi :)
14:27:09dom96welcome to #nimrod :)
14:27:17rixxthanks
14:27:47skrylarsurma: i just went and looked up 'recover'... it looks like its the equivalent of rust fail!
14:30:12EXetoCmakes sense
14:30:20EXetoCno, wait..
14:30:47skrylarIMO i tend to prefer a first class try/catch system, since when they are used properly they are very nice ways of dealing with problems
14:31:38skrylarthough i think they suffer from C++ being most people's implementation of it, which is a horrible system (as is a lot of C++)
14:32:12surmaskrylar: I'm always afraid it will turn code into try/catch-hell like I have gotten to know from Java. In my experience, the amount of function-call-and-error-handling-code goes down a lot. It isn't really as annoying as it first seems.
14:32:44surmaskrylar: Also, in that way, Go really is forcing you into a lot of things. But they bring their benefits esp. at large scale projects
14:33:03surmaCode is very explicit and maintainable without being noisy.
14:33:20skrylarI prefer when compilers obey instead of dictate
14:33:36surmaYeah, than Go is not for you ;)
14:33:45skrylarAnd i hate having to "if (x != 0) { welp(); }"
14:34:50skrylarI left Rust because there were bugs and incompletions in the workaround for getting a display-tree GUI working
14:36:34skrylaradmittedly i could replace the parent pointers with lookup handles but that would add in an unpleasant degree of bookkeeping
14:37:07surmaFunnily enough, I never touched (native) GUI programming ever since I started with Go
14:37:34surmaAnd I don't plan to change that in the futuer with any language I look at
14:38:03skrylarheh
14:38:07skrylarI still prefer my non-cloud :)
14:40:36skrylarI kinda miss the days when Applescript was taken seriously and you could tie two GUI apps together, and when this whole concept of applications being cross compatible was an idea people sometimes used
14:41:06surmaI'm not saying I dont like using GUIs. I just find them incredible boring to write.
14:41:30surmaSo I usually just write a web api and use the humongous eco system of libraries for web dev to write a GUI there (even for local applications)
14:41:33surmayeah, AppleScript was fun
14:41:39surmaEven if a little weird to write
14:42:25skrylaryay hypertalk \o/ the system they killed because it was too successful at what it did
14:42:51skrylarKinda sets a bad precedent when technologies die because they were good at something o_o
14:44:39surmaJust wait for Skynet....
14:44:46surma(written in Go(tm) btw ^^)
14:44:58fowlbrought to you by google
14:45:14fowlthey're working on robots and self-driving cars.. spooky
14:45:17dom96They have bought Boston Robotics recently...
14:46:53skrylarI'm not worried about a Skynet from Google
14:47:00skrylarthey can't tell their ass from a hole in the ground most of the time
14:48:16skrylarI've spoken to more than a few people who has client contracts with Google and they're completely unhelpful, for instance
14:49:03skrylarI've also seen a lot of stupidity like when they banned the guy who made Choice of Games from adsense, and they wouldn't bother to highlight what section he actually supposedly violated
14:51:39OrionPKskynet written in Go would be pretty slow wouldnt it? :P
14:51:55surmaOh the flame bait ^^
14:51:57OrionPKi imagine it'd have to rewrite itself in binary
14:52:28skrylarI was going to say something about "Go isn't *that* slow" but then I remembered seeing the benches ._.
14:52:37OrionPKlol
14:52:42skrylarits actually not bad compared to a lot of languages
14:52:43surmaSkynet is actually a project by one of the more known Go users https://github.com/skynetservices/skynet
14:53:21surmaIt's a reputation that just stuck with people from the early days, where performance was alright but not good. A lot has changed tho
14:53:42OrionPKi converted a benchmark from go go nimrod not that long ago
14:53:49OrionPKhttps://github.com/kidoman/rays
14:53:51skrylarHmm no, I recall seeing some more modern benches where Rust was outperforming Go
14:54:19skrylarhttp://togototo.wordpress.com/2013/08/23/benchmarks-round-two-parallel-go-rust-d-scala-and-nimrod/
14:54:34OrionPKthat benchmark was actually written to demonstrate how fast Go is iirc
14:54:44bstrieskrylar: https://github.com/nsf/pnoise
14:54:53skrylarNimrod has the lowest SLOC but that could just be the removal of closing braces
14:55:07surmaI dont really like the SLOC metric
14:55:33skrylari don't care about the sloc on that chart, mostly found it interesting that LDC was outdoing C++ o_o
14:55:39surmaand also: I find it interesting how people focus so hard on miniscule performance difference. 99% of people don't have issues which have to be solve by performance of the language itself
14:55:57OrionPKwell.. it's not miniscule when it's 50% difference
14:56:31OrionPKbut benchmarks are pretty artificial usually
14:56:40skrylarI usually look at the 'miniscule' difference as an example of toolchain bloat
14:56:48skrylarbut i tend not to use the same benchmarks
14:57:11skrylarby toolchain bloat i mean "if i write 'a=b+c' how many clocks is it before i get an answer?"
14:57:25skrylarIn something like python you take a 50% or more hit just because
14:57:41OrionPKi would say... how many clocks before it even gets to the question
14:57:44OrionPKnot the answer
14:58:23surmaI'd rather see development benchmarks. "How long does compiling take?" "How easily is debugging set up?" "How navigatable is the documentation".
14:58:26surmalol
14:58:35OrionPK;)
14:58:52OrionPKthat's all a bit subjective, unfortunately
14:59:00skrylarcompiling, eh
14:59:11skrylari'm happy with FPC's compile times
14:59:14OrionPKwell, compile time isnt subjective
14:59:24skrylarits probably a lot slower than Go, but its significantly faster than most
15:00:02surmaFPC?
15:00:06skrylarFreepascal
15:00:28skrylarOrionPK: the total time is objective, but if that time is a problem isn't
15:00:47skrylarfor instance i doubt people care much about build times for a final dev release, which you rarely make
15:00:58surmaI have to say, Go spoiled me the most when it comes to documentation and tooling.
15:01:02skrylarat that point you just want the program fast and all the instrumentation is removed
15:01:20surmaskrylar: Probably true. But when I think back at my C/C++ times - I couldn't stand that anymore
15:01:49skrylarsurma: yeah but those problems have solutions :(
15:01:55skrylarthe C derps just aren't interested
15:03:17skrylarthere's a handfull of things like storing symbol caches to mitigate the 60mb worth of header and template hell, and the compiler as a service so it doesn't have to reindex the cache every single file
15:03:23skrylarGCC doesn't want any of that
15:03:44skrylarand sadly, the majority of C++ compile time *is* spent in the parser
15:04:59skrylari think it comes down to a culture of this http://xkcd.com/303/ lol
15:05:03surmaWell, with that kind of syntax, what do you expect ;)
15:06:03skrylarsurma: Wirth suggested as much :P but nobody listens to him
15:06:34skrylarSome of the weirdisms in Pascal actually had/have everything to do with being able to build a humongous code base from zero in a minute
15:08:07skrylarBut C++ devs usually live in cognitive dissonance land where they don't want to understand that they live in infinite complexity, because they will tell you all these things about how "those languages aren't optimized so of course they are faster" and completely breeze over any instrumentation that shows the optimizer isn't the problem lol
15:08:18skrylarso nothing gets fixed :/
15:13:18OrionPKC can compile pretty quick ;)
15:13:57skrylarit can, yeah
15:14:07skrylardon't ask it to parse 60mb of sadness :)
15:14:36surmaa_lot_of_sadness.c
15:14:47surma#include <insanity.h>
15:15:16skrylarmaybe its unfair to compare things with C because C does have to basically include megabytes of overhead for each file, whereas almost literally everything which is not C has done it symbolically
15:15:40skrylareither through symbol tables or the Lisp/Forth/Smalltalk system of images
15:17:21skrylaror they did at the time; i think ruby still parses files every time it goes to read them, though python does have .pyc's
15:19:15*surma left #nimrod (#nimrod)
15:24:08skrylaranyhow, back to line wrapping hell for me \o/
15:35:14dom96You guys think this is thorough enough? https://github.com/Araq/Nimrod/wiki/GSoC-2014-Ideas
15:37:35skrylarLight Table you say
15:37:41*skrylar peers at this website with curiosit
15:42:03skrylaroh. its primarily a clojure thing
15:51:46Araqhi rixx welcome
15:52:07rixxhi :)
15:52:19rixxthanks ^^
15:58:11*[1]Endy joined #nimrod
16:05:44*brihat joined #nimrod
16:10:19Araqskrylar: from my limited experience FPC compiles much faster than Go ...
16:12:01*[2]Endy joined #nimrod
16:15:38*[1]Endy quit (Ping timeout: 252 seconds)
16:43:53reactormonkare seqs on the stack or heap?
16:44:32Araqheap
16:50:23*vbtt joined #nimrod
16:57:10skrylarAraq: I would be really surprised if it did
16:58:32OrionPKwoow
16:58:49OrionPKadding noinit to some procs in this benchmark improved the time by like 50%
16:59:15OrionPKwould be nice if the compiler somehow didnt generate a result variable if it's not used
16:59:40skrylarhow would that work? :)
16:59:55AraqOrionPK: planned optimization
17:00:04OrionPKthought so :)
17:00:25skrylarwell, if it could prove there was no exit branch that didn't end in 'return'
17:00:53OrionPKright
17:01:20skrylarnot surprised removing initializers speeds code up though
17:01:31skrylarthats a series of probably unoptimized mov's
17:02:02renesacOrionPK, what benchmark?
17:02:15OrionPKhttps://github.com/nsf/pnoise
17:02:18OrionPKconverted that to nimrod
17:03:00OrionPKC runs ~ 0.290s, nimrod is ~ 0.337s on my machine
17:03:02*skrylar feels stupid commenting on compiler optimizations while spending 3 days to fail a line wrapping alg
17:03:38fowlOrionPK, now beat rust
17:03:54OrionPKfowl i dont have rust compiler on my machine, so i have no idea what it's at
17:04:07skrylareh, throw it through clang
17:04:27skrylarRust mostly works through making LLVM IR and then asking LLVM to run its built-in passes over it
17:04:37OrionPKnimrod was 0.730s before the noinit's
17:05:26renesachum, maybe something similar is killing D speed
17:05:50skrylarrenesac: D automatically initializes
17:06:04skrylarits non-optional at least in D1 IIRC
17:06:18OrionPKif anyone wants to compare rust, the nimrod version is here: https://gist.github.com/onionhammer/8979260
17:06:36skrylari have a rust compiler still if everyone's just curious
17:06:37renesacIIRC there were ways to get unitilialized memory in D2
17:07:01AraqFoo foo = void;
17:07:32fowlOrionPK, lerp and smooth should be inline
17:07:56OrionPKfowl they were actually
17:08:12OrionPKsaw no difference in performance
17:08:24AraqOrionPK: just compare the assembler that C produces with the assembler that nimrod's C output produces for fuck's sake
17:08:41OrionPK:P
17:08:47OrionPKwhy would I do that
17:09:17OrionPKim not asking any questions, this is purely informational
17:09:26fowlOrionPK, why not pass around var tnoise2dcontext instead of ptr
17:09:33Araqoh well, I will do it one day
17:09:40skrylarrust 0.10-pre; build time 5s, run time 0.420s
17:09:49skrylar--opt-level=3
17:09:55OrionPKfowl no idea
17:10:20*ics joined #nimrod
17:11:51OrionPKskrylar what about nimrod
17:12:08skrylarnimrod: compile 2.19s, --opt:speed -x:off
17:12:16skrylarruntime: 0.355s
17:12:43fowlwhat -x:off do
17:12:49skrylarall runtime checks off
17:12:55fowloh
17:12:56skrylare.g. don't bounds check array access
17:13:02OrionPKso it beats rust :P
17:13:20skrylarthey both might have run faster if i wasn't running them in an SSH shell lol
17:13:30OrionPKi dont think that would matter..
17:13:36skrylarnimrod to dev null: 0.278
17:13:48skrylarrust to dev null: 0.363
17:14:03bstrieskrylar: yeah I was poking at the rust version this morning, I have no idea how nsf got his numbers. we must have regressed since his measurements
17:14:04OrionPKoh you were just outputting to stdout?
17:14:16skrylaryeah
17:14:27skrylarstdout via tmux via ssh
17:14:38OrionPKso there u go fowl
17:14:42OrionPKit beats rust
17:14:58skrylarits possible i didn't set rust to fast mode correctly
17:15:14bstrieskrylar: no, even on my current test machine rust is twice as slow as C
17:15:24bstrieskrylar: I'm trying to figure out where the rust is going wrong
17:15:28OrionPKthere's always more flags to pass in skrylar
17:15:34skrylari could have sworn LLVM made better code than GCC
17:15:42bstrieskrylar: not usually, no :P
17:15:46OrionPKskrylar this is how I was compiling nimrod c -d:release --passC:-std=c99 --passC:-Ofast --passC:-march=native --passC:-msse3 --passC:-mfpmath=sse -o:bin_test_nim test.nim
17:15:48OrionPK:P
17:16:03OrionPKI also had a test.nimrod.cfg with even more flags
17:16:08Araqsometimes LLVM is faster, sometimes GCC is
17:16:13fowlOrionPK, surely you could do --passC:"opt1 op2 op3"
17:16:22skrylarI know I prefer using LLVM/Clang
17:16:32skrylarpartly because the error messages are useful and the architecture is nicer
17:16:36*ddl_smurf joined #nimrod
17:17:16skrylarmy guess is that llvm probably beats gcc in extreme microoptimizations, if nothing else because you *can* go and tell it to run different opts on different obj files
17:17:29skrylarif you knew what each llvm pass did and felt like minmaxing them
17:17:33zahary___Rust have decided to ditch segmented stack, but have they done this already?
17:17:54bstriezahary___: I'll check
17:18:10skrylare.g. if you want you can have tail call recursion in C through llvm :o
17:18:39zahary___gcc is doing it too - we actually had a GC related problem due to tail recursion once
17:19:12bstriezahary___: totally gone, yeah
17:19:37BitPuffinSo hey guys how do you like this bug I'm working with
17:19:44BitPuffinWhen I have this line in the code:
17:19:45BitPuffinNSLog(@"Adding file with id %@", identifier);
17:19:49BitPuffinit doesn't crash
17:19:55BitPuffinbut if I comment it out it does
17:21:20BitPuffin:'D
17:23:47AraqBitPuffin: -d:useGcAssert -d:useSysAssert
17:24:26BitPuffinAraq: it's an objective-c thing
17:25:19*Mat3 joined #nimrod
17:25:24Mat3hi all
17:26:44*Demos joined #nimrod
17:31:27fowlOrionPK, i get 3.5s for ur thing
17:33:12fowlnvm, 0.494s
17:39:07*DAddYE joined #nimrod
17:41:50Mat3hi DAddYE
17:42:16dom96reactormonk: BitPuffin: EXetoC: fowl: and anyone else: would you guys mind being "backup" mentors for GSoC?
17:42:53*vbtt quit (Ping timeout: 260 seconds)
17:43:57dom96I'm assuming you will help GSoC students in here anyway. But just in case one of the "primary" mentors disappears, which is unlikely to happen, it would be cool if you guys could help out more.
17:48:36Mat3for my Nimrod subset I plan to abstract memory access though type objects which collect memory references and ensure valid access instead of the type casting mechanism. What are your opinions about this idea ?
17:49:11renesacpypy got funding through some european financing program... did someone here tried something similar for nimrod?
17:51:26BitPuffindom96: sure
17:51:33dom96BitPuffin: Great :D
17:51:43Mat3dom96: I think only of help for machine-level programming stuff, sorry
17:53:27dom96Mat3: Why?
17:53:29DemosMat3, sounds like a java-style garbage collector
17:53:40renesacOrionPK, that pnoise benchmark don't specifies the random number generator... it could be a big reason for some of the speed differences
17:54:20Mat3Demos: Jes, i is an similar idea (the Java solution however is .. ehm, academic)
17:54:24Mat3^Yes
17:54:59DemosI like the idea of being able to set up my memory in such a way as to be able to defragment it
17:55:03Demosbut it sounds really hard
17:55:43Mat3dom96: I have to less experience with the Nimrod compiler - probably I can help out implementimng coroutines at demand though
17:56:01dom96Mat3: That would already be a big help.
17:57:51Demoswell lets see if nimrod even gets accepted first
17:58:22Mat3Demos: That's an side-effect of this approach. Much more important is memory tagging for dynamic error detection (illegal accesses, wrong storage type, buffer overflows etc.)
18:00:31Demosright, but I think the compaction and defrag is more important. you can use bonds checking to get rid of some illegal accesses and you can allocate memory in such a way that segfaults happen more often for some others. Not ideal but still.
18:00:36dom96Demos: There is some tough competition like for example: ReactOS.
18:01:00Mat3it also a valid replacement for complex, static type systems... (which have some impact on the code-size, specially for implementations on say micor-controllers)
18:01:01Demosnimrod is more useful than react though :D
18:01:37Mat3^micro-controllers
18:01:48Demoswell static type systems have no runtime binary size impact, beyound like generic generation and such
18:01:57Demosand doing the static type system means you either need to explicitly managed sizes or have everything on the heap
18:01:57dom96Demos: :)
18:02:19dom96Demos: What do you think of our ideas page? https://github.com/Araq/Nimrod/wiki/GSoC-2014-Ideas
18:02:30Mat3Demos: I plan an interpretative environment - not much related to the Nimrod compiler
18:03:07Demoswhy is the "times" module improvements marked easy?
18:03:33Demosalso I see react has a little FAQ for like "what happens for diappearing mentors" and the like
18:03:46Demosalso, I need to go to a chemestry lecture in -3 mins
18:03:51dom96I'd say it's easy compared to the other tasks.
18:04:00*brson joined #nimrod
18:04:52*Mat3 the Nimrod compiler really do not fit in 16 kByte ;)
18:04:56Demosright, like it needs little compiler knowlege, but it is /times/
18:05:15*brson quit (Client Quit)
18:05:24DemosMat3, sure, but the generated executables can fit
18:05:44*brson joined #nimrod
18:05:55Demosanyway I gotta go
18:06:01*Demos quit (Read error: Connection reset by peer)
18:06:13EXetoCis the C++ backend unused?
18:06:58Mat3Demos: Yes of course, but this approach do not allow rapid prototype development on the target (which is the *top* thema nowadays, see eLua for example)
18:07:38bstrieskrylar OrionPK: got nsf to update his perlin noise benchmark repo with your nimrod program: https://github.com/nsf/pnoise
18:07:42Mat3or ML on Bare-Metal, or the reactivation of various Basic dialects etc...
18:08:50EXetoCI'd like to compare the overhead of the exception mechanism
18:08:55*DAddYE quit ()
18:09:01Mat3(I hope he read this later on the log)
18:09:25EXetoCMat3: speaking of which, how far have you gotten? because the asm backend should be similar in that regard
18:15:03*DAddYE joined #nimrod
18:15:40Mat3EXetoC: The VM is finished and also the AOT compiler. I'm currently work on the documentation of these stuff (as requested from Araq) and start the environment implementation
18:16:06*DAddYE quit (Client Quit)
18:16:13EXetoCok
18:17:08*DAddYE joined #nimrod
18:17:20EXetoChow can I ensure that something with a reference count of 0 is collected?
18:18:02dom96Mat3: Is the source available anywhere?
18:18:35Mat3I am preparing a web site (shoud be finished next week)
18:19:01EXetoCor rather, that the finalizer gets called. I know that finalizers are preferred over destructors for now, but I haven't heard anything about any issues
18:19:08*skyfex joined #nimrod
18:19:10dom96Mat3: great
18:20:34EXetoCok, GC_fullCollect. 'quit' mentions GC_collect but it's not exported
18:25:03EXetoCactually it doesn't exist
18:33:42reactormonkdom96, uhm, yup, but I don't have too much clue about the compiler
18:34:34dom96reactormonk: Hopefully every student won't be doing compiler work but also stdlib stuff.
18:35:41skrylarI'm not a student so I guess I can't do doc writing :P
18:36:28reactormonkskrylar, you can still do it, but we can't pay you for it
18:37:05skrylari have actually yet to see 'nimrod doc x.nim' produce more than an empty html file
18:37:16EXetoCdoc2?
18:37:47skrylarlib/terminal.nim(329, 21) Error: internal error: not used
18:38:45skrylari actually had an idea for a doc tool but i never got around to writing it; basically using a special tag and vim markers so you could assign a keyword to arbitrary text, then it would checksum that text and store it in an index
18:39:17Araqnimrod doc lib\pure\terminal.nim works for me ...
18:39:29skrylarthe reason for that is you could then take the keyword and index, go to your other docs and put in the ":foobar:30823084:" in a comment, and then your external docs could be auto-checked for calling changed methods
18:39:50skrylarwhich would be useful because docs you placed in wiki text for instance would get auto-flagged
18:40:59Mat3ciao
18:41:06AraqMat3: bye
18:41:09*Mat3 quit ()
18:41:57reactormonkskrylar, first we fix bugs, then we add features ;-)
18:42:19skrylarreactormonk: that was a standalone tool ;p
18:42:46reactormonkAraq, https://github.com/Araq/Nimrod/pull/910#issuecomment-34998628 <- that's gonna be interesting.
18:44:37OrionPKbstrie ah thanks
18:47:06OrionPKbstrie get him to add test.nimrod.cfg as well ;)
18:47:07OrionPKhttps://gist.github.com/onionhammer/8979260
18:53:45EXetoCAraq: are there any plans to allow user-defined constructors to be allocation-agnostic (heap, GC heap, stack)? the proposed 'func' pragma comes to mind
18:59:04EXetoCI suppose 'var' parameters allows for that if you're willing to perform casts
19:04:49*micklat joined #nimrod
19:05:27*carum joined #nimrod
19:05:40AraqEXetoC: I have no plans for that before 1.0 is out
19:13:52*vbtt joined #nimrod
19:18:22*carum quit (Read error: Connection reset by peer)
19:18:43*carum joined #nimrod
19:28:18reactormonkmicklat, works as intended.
19:28:38micklatsorry, what?
19:28:46micklatyou mean it compiles on your machine?
19:30:32reactormonkmicklat, nope, the error works as intended. you can't mix containers and values with varargs
19:30:47micklatwhy?
19:31:00reactormonkhm.... because you can't in ruby? :-)
19:31:21reactormonkbut as soon as you have varags[seq[T]] stuff gets hairy
19:31:40micklathonestly, what's the problem?
19:33:09skrylarI would guess the way you transferred the sequence in
19:33:58micklatskrylar: I don't follow
19:34:43skrylarmicklat: i don't see why its not technically possible either, though usually when i say things like that someone comes in with this weird obscure explanation about the compiler doesn't allow you to do that on tuesdays
19:37:55micklatruby isn't even statically typed
19:38:37reactormonkmicklat, yeah, that's why you can't do it there
19:38:58micklatbut you can do it in python
19:39:09reactormonkhow does it decide what's what?
19:39:22micklatHow does what decide what's what?
19:39:36reactormonkwell, you have to treat containers different from values
19:39:52micklatis it because of the value semantics?
19:40:19micklatdo you copy the whole array to stack, and having array arguments complicates your life?
19:40:36reactormonkno idea
19:40:58micklatso I don't understand your question then
19:42:25Araqmicklat: what does thirteen("a", 1, 2) produce?
19:42:31micklat13
19:42:42micklator, at least it should
19:42:49Araqlol
19:42:57Araqwell what does the compiler say?
19:43:13Araqin any case, it's a bug
19:43:42micklatthe compiler compiles it correctly
19:44:01Araqso it's confused by the []
19:46:10micklatecho thirteen({1}, 2) works too
19:47:13Araqyeah well [] with varargs is special, because you can write [1,2] instead of 1,2 for varargs[int]
19:47:29*xtagon joined #nimrod
19:47:39Araq... except when it's varargs[expr]
19:47:52*bbodi2 joined #nimrod
19:48:26micklatyou mean that thirteen([1,2]) is a call with 2 rather than 1 argument?
19:48:32micklathow inconsistent
19:49:10bbodi2Hi all! I have a question: How can I get a data structure's memory as a byte array?
19:49:48fowlbbodi, cast[ptr array[sizeof(x), byte]](obj.addr)
19:50:07bbodi2fowl: thanks a lot
19:50:49bbodi2fowl: are there any difference between a byte array and a string? ( I ask it because with string I can use Streams )
19:52:38fowlstrings end with '\0', have a length, are garbage-collected
19:53:09fowlwhat are you trying to do
19:53:11*eager-beaver joined #nimrod
19:53:18Araqhi eager-beaver welcome
19:53:59micklatis there any hope of trying to convince anyone that arrays should not be a special case in varargs?
19:54:22Araqmicklat: you convinced me already
19:54:23bbodi2I convert any data structure to a byte array, then modify the byte array so that the data structure's field will be modified as well.
19:54:28micklatyay!
19:54:45*brson quit (Ping timeout: 248 seconds)
19:54:57*shodan45 joined #nimrod
19:55:14dom96Whoa. Look at that user count.
19:55:27dom96welcome eager-beaver
19:55:42*brson joined #nimrod
19:56:02fowlbbodi, if you're reading/writing data id recommend using streams
19:56:09eager-beaverthank you all for the welcome
19:56:36bbodi2I would like to use it too. But if I know it well, there aren't Stream for byte arrays
19:57:38bbodi2hi eager-beaver!
19:57:39*skrylar sighs of relief as this wordwrap code finally greens all the tests
19:57:46fowlbbodi2, see my example https://github.com/Araq/Nimrod/issues/907
19:58:35fowlbbodi, then to unserialize your obj type you would define proc `>>` (left:PStream; right:var MyObj) = left >> right.field1 >> right.field2
19:58:40*tdc joined #nimrod
19:59:00*eager-beaver is now known as bezeredi
19:59:46bbodi2fowl: thanks a lot!
20:00:15fowlbbodi2, also take a look at streams.nim, it wont be hard to implement a stream for a byte array if you want to
20:01:53dom96oh cool. When I google "nimrod programming" I get a picture of Araq now.
20:03:06*nande joined #nimrod
20:03:12fowlbbodi2, now that im looking at streams.nim i would probably just steal the private read[T] function from it, no need for these overloads
20:03:48Araqhi nande welcome
20:05:46nandehi Araq :) thanks
20:05:58nandeive seen Nimrod a lot of time before and i love it :)
20:06:04Araq:O
20:06:25nandetoo bad the zip linked on the web doesnt compile maybo you should update it.
20:06:39nandenow im trying to build from git but takes a lot to dowload
20:09:45Araqgit clone --depth 1 iirc
20:09:53Araqthe wiki tells you
20:10:04micklatBTW, is anyone taking "nimrod i" seriously?
20:10:36micklatI mean, should I bother with bug reports about it?
20:10:53Araqno
20:11:04micklatok
20:11:34nandei did exactly as the wiki said. took more than 10 mins
20:11:54nandehttp://screencloud.net/v/CzIJ
20:12:16nandeitll be nice to have updated info on the front page. might scare newcommers
20:12:55*carum quit (Remote host closed the connection)
20:13:22Araqnande: afaict you didn't do exactly as the wiki said
20:14:16dom96nande: You didn't clone with the '--depth 1' switch.
20:14:17fowlAraq, it says use --depth 1 on csources but not nimrod for some reason
20:14:37Araqand yes we know the website is outdated, happens when a release is overdue but nobody fixes showstopper bugs
20:14:52Araqfowl: oh
20:15:05fowlbtw i recently found out that --depth 1 checks out only the master branch, i had to jump through some hoops to get the other branches
20:15:09nandethe wiki didnt said -1 except on the second clone
20:15:24*zahary joined #nimrod
20:16:01reactormonkAraq, showstoppers == https://github.com/Araq/Nimrod/issues?labels=major&page=1&state=open ?
20:17:10Araqreactormonk: almost, bug #124 is no show stopper
20:17:45reactormonkAraq, I'll retag it as minor
20:18:05Araqno, we need a new category for that
20:18:39reactormonkAraq, showstopper?
20:18:54Araqok
20:19:46Araqthough it makes no sense to have showstopper bugs when I plan to go with a "release by date" model
20:20:17reactormonkAraq, just make a release once every showstopper is killed
20:20:29reactormonkand at least each month
20:21:00reactormonkAraq, done. Feel free to uncheck a few boxes.
20:23:06skrylarer, i disagree
20:23:20skrylaryou don't want to do the Rust thing and have a release where code segfaults out of the bod
20:23:23skrylar*box
20:23:33bbodi2I have a data field like that: data*: array[int, byte] and a line of code: result.data = cast[array[sizeof(T), byte]](addr data)
20:23:35nandealso http://screencloud.net/v/99Dy theres a permission error on the wiki
20:23:46bbodi2But i get compiler error: Error: type mismatch: got (array[int, Byte]) but expected 'array[int, Byte]'
20:24:26Araqbbodi2: not sure but data*: array[int, byte] is wrong
20:24:49fowlbbodi2, are you working on the streams thing?
20:24:53bbodi2yes
20:25:07bbodi2But now, I just want to convert a custom data type to a bunch of bytes
20:25:33fowlbbodi2, you'll want to store it as ptr array[int.high, byte] since array cannot be dynamic sized
20:25:40reactormonknande, yeah, someone messed up the generation script
20:25:55reactormonknande, take it as a slight entrance check >;)
20:26:06nandeis just a detail just saying
20:26:10nandeentrance check?
20:26:18reactormonknande, you know, like the bouncer in a club
20:26:29Araqbbodi2: use 'cstring' instead of 'array ...'
20:26:40fowlyea do that ^
20:26:50bbodi2what is the different?
20:27:07Araqcompiler is more forgiving when it comes to 'cstring'
20:27:16reactormonknande, https://github.com/nimrod-code/csources <- wrap up a PR here
20:28:19nandeoh thanks reactormonk. english is not my native language.
20:28:23bbodi2fowl, Araq: thanks guys, you are awesome
20:30:20nandealso im trying to build aporia but it complains of a missing library which i seem to have installed. am i missing something? http://screencloud.net/v/wYGy
20:31:23reactormonknande, you got libglib2.0-dev ?
20:31:30fowlnande, its missing a (nimrod) module, not a library
20:31:47fowlyou need the gtk package from babel
20:33:20nandereactormonk: yes i have that installed
20:33:26nandei have no idea whats babel.
20:33:43reactormonknande, the nimrod lib package management
20:34:07reactormonkgit clone https://github.com/nimrod-code/babel.git
20:34:09reactormonknimrod c -r src/babel install
20:34:10nandecool . i've run koch boot, do i have it now?
20:34:22nandeoh, you answered me . thanks
20:36:00bbodi2good night guys
20:36:04*bbodi2 quit (Quit: Leaving)
20:37:16Araqskrylar: there is a difference between "built automatically and crashes" and "built automatically after tests passed"
20:37:41NimBotAraq/Nimrod devel 8029a5d Araq [+0 ±3 -0]: more things case consistent
20:37:41NimBotAraq/Nimrod devel 02662f5 Araq [+0 ±1 -0]: fixes #612
20:37:41NimBotAraq/Nimrod devel 729d61a Araq [+0 ±1 -0]: edited compiler's config
20:37:41NimBotAraq/Nimrod devel 6d294ae Araq [+0 ±1 -0]: the tester now produces a diff in the JSON
20:37:41NimBot1 more commits.
20:38:11Araqdom96: please add this "diff" output to nimbuild
20:39:55nandehttp://screencloud.net/v/cdRA i cant install nimrod... says it cant find it..
20:41:08nandehttp://screencloud.net/v/yzKB and if i want to run pour command reactormonk it says it cant find nimrod too
20:42:25Araqnande: if nimrod is not in your path, how did you manage to compile "koch"?
20:43:06nande./bin/nimrod c kach
20:43:14nandei hate to touch the path
20:43:32Araq*shrug* I hate Unix
20:43:41nandei like it :)
20:43:47BitPuffinAraq: what about windows?
20:44:07nandealso it what it says on the wiki http://screencloud.net/v/mopU
20:44:09fowlnande, the easiest way to install it is symlink the nimrod binary into your PATH
20:44:37fowlinto ~/bin or ~/local/bin
20:44:49reactormonknande, just symlink it in there
20:44:52nandethanks fowl i also hate to install devel stuff on my machine. i tend to forget what ive installed
20:45:11reactormonknande, then make a package out of it
20:45:23nandemm good but i dont know how
20:45:27skrylarnande: I have a /home/name/Local folder i put all of that in
20:45:28reactormonknande, which system?
20:45:35nandeubuntu
20:45:44skrylaryou can have a login shell put that in your path, install your dev ware to ~/local
20:45:48skrylarand use git to package manage it
20:45:58skrylare.g. git add . && git commit -a -m "nimrod 0.9-blah"
20:45:59BitPuffinso dom96, will the API of asyncio module change or just the implementation?
20:46:17skrylarif you want to chuck dev-ware, you can use git-rebase to delete the commit
20:46:18reactormonknande, http://packaging.ubuntu.com/html/
20:46:19skrylar'tis handy
20:47:17nandei know im earning some boots at my head but i dont really have that much time to package stuff. thanks for the link though
20:48:29reactormonknande, just symlink to ~/bin
20:48:35nandeim on that :)
20:51:30nandeonce i made the symlink i've no need to run "koch install" right?
20:52:12Araqright "koch install" is an abomination anyway
20:52:24Araq(any installation on unix is)
20:54:20skrylarlol
20:54:22vbttAraq:why is installing in unix worse than, say, win or mac?
20:54:40skrylarvbtt: probably because the canonical way to install on unix is to shove things in a giant unmanageable folder
20:55:14vbttrather.. one of many possible such folders. is that what you are referring to, Araq?
20:55:21Araqyup
20:55:35Araqalso it requires root rights
20:55:42skrylarnix is okay with you using other folders, however GNU is stupid about it
20:55:46Araqit's just a bizzare clusterfuck
20:55:51*tdc quit (Quit: Leaving)
20:56:00skrylarfor instance autotools are retarded about picking up libs in ~/local even with PATH and LIBRARY_PATH set
20:56:47vbttthe need for autotools demonstrates another failure of unix.
20:57:11skrylareh? autotools served a purpose once
20:57:48AraqI still think this nails it: http://xkcd.com/1200/
20:57:49skrylarits good at checking the size of int, if libs are installed, etc, all though the way its implemented is dumb
20:58:04Araqnothing makes any sense in unix land ...
20:58:30nandeok so much for my free time. must go back to work
20:58:40VarriountHi guys
20:58:42nandethanks for the assistance and the hard work.
20:58:53nandeif i can ill send a couple af btcs :)
20:59:07skrylarAraq: eh, that chart is funny but misses the point
20:59:18nandebtw itll be awesome to have nimrod on the repository i could convince my friends to try it out
20:59:29skrylarit makes sense when you figure it was a mainframe OS; you didn't want someone else installing things on the mainframe
20:59:55skrylaryou also don't want the mysql account getting compromised and deciding to replace bash for instance
21:00:38vbttyeah the unix permission system is quite lacking for desktop use. but somewhat adequate for server use.
21:00:49skrylarit was never really meant for end users
21:00:58skrylarapple did a pretty decent job covering up the unix parts
21:01:36vbttnot really - underneath it's still one key to the kingdom. e.g. if a process can run as me it can access all my files and the entire internet at the same time.
21:01:42nandehttp://screencloud.net/v/tm9D btw i get this "could not load: libgtksourceview-2.0.so(|.0)" ?
21:01:45vbttthat's the flaw.
21:02:21skrylarvbtt: the 'average user' is somewhat of an idiot; they would be more confused by sandboxing files than helped by it
21:02:58vbttskrylar:sandboxing is a hacky workaround for a broken system underneath anyway. of course it'll be confusing.
21:03:05fowlnande, thats a missing library
21:03:17fowlnande, gtksourceview
21:03:19nandeyeah but which and how should i install it
21:03:23nandewith babel?
21:03:28skrylarvbtt: by sandboxing i meant you *can* have multiple keys for your files, as far as a password for one folder or another
21:03:35skrylarit's just most people don't really seem to want it
21:03:37fowlnande, no, through your system package manager
21:03:42VarriountIt's a pity that GoboLinux is dormant :/
21:03:44skrylari mean loads of people still use one password for those different cloud sites
21:03:53fowlVarriount, lucas is working on 015
21:03:55vbttskrylar:consider this - the syscalls are list-directory and open-file - which means by design the process should have permission to do both in order to do anything useful. it's designed for batch usage.
21:04:12Varriountfowl: 015?
21:04:17nandefowl: http://screencloud.net/v/hLaf one of those right?
21:04:28fowlVarriount, the gobolinux version that comes after 014
21:04:34nandethough they depend on mono. i sensed that was wrong
21:04:53fowlnande, yea
21:04:55vbttskrylar:rather the syscall could be 'find-file' which makes the os display the file selector to the user and gives access to the just that file.
21:04:56nandeno sorry those where the -cil
21:04:58fowlnande, the -dev one probably
21:05:12nandethe -dev too? thanks
21:05:28nandenopes the -dev wasnt needed :)
21:05:36vbttanyway dont want to create too much off topic noise..
21:05:36nandemain screen turn on. ship it
21:05:55vbttAraq:where is the website hosted and who runs nimweb on a regular basis?
21:05:59skrylarvbtt: i'm not saying anything about someone couldn't redesign it, i'm just saying it doesn't seem like there is a combination of people wanting it hard enough + someone with a design better enough to be worth gutting the relevant code
21:06:05BitPuffinhmm
21:06:10BitPuffinwhat was it we had again
21:06:12BitPuffinassert and like
21:06:15BitPuffinwas it doAssert?
21:06:19fowlyea
21:06:19skrylardesktop and server permissions are very different for instance, since most desktop users don't want to be asked for passwords to do anything
21:06:26nandethat was some trip. c ya ppl
21:06:29*bezeredi quit (Quit: Konversation terminated!)
21:06:51BitPuffincoolio
21:13:21*Demos joined #nimrod
21:13:21*[2]Endy quit (Ping timeout: 260 seconds)
21:13:26*bbodi quit (Ping timeout: 264 seconds)
21:16:33skrylarvbtt: sorry, didn't mean to sound combative
21:18:02dom96BitPuffin: It will change.
21:18:09BitPuffindom96: daw
21:18:11BitPuffinoh well
21:18:15BitPuffinI guess I will have to adapt
21:18:51vbttskrylar: didn't sound that way.
21:19:20BitPuffindom96: what's the difference between connect and bindaddr?
21:19:27vbtti just decided to do other stuff atm and vent when i have more free time.
21:19:37dom96BitPuffin: Connect is for clients, bindaddr is for servers
21:19:53BitPuffindom96: gotcha
21:19:54dom96Araq: Tomorrow.
21:20:07BitPuffindom96: what do I put as address?
21:20:09Varriountdom96: A better term would probably be "listen"
21:20:21skrylarisn't it called 'listen' by berkeley sockets
21:20:31skrylarwait
21:20:34skrylari think listen is used for something else
21:20:40BitPuffinlisten is another proc I think
21:20:43fowllisten for tcp
21:20:51skrylari think was confusing listen and accept for a second
21:21:02dom96You need to call both bindAddr and listen.
21:21:12BitPuffin Marks socket as accepting connections. Backlog specifies the maximum length of the queue of pending connections.
21:21:14fowlsockets are a PITA
21:21:20dom96BitPuffin: There is a default value, just use that.
21:21:31dom96BitPuffin: Unless you don't want to allow remote access.
21:21:32BitPuffindom96: do NOT TELL ME WHAT TO DO
21:21:33bstrieOrionPK: I don't even know what a nimrod.cfg is, just make a pull request to the repo :P
21:23:16OrionPKbstrie its in the gist
21:23:17OrionPKand nah
21:23:40Araqdom96: please do it now
21:24:00BitPuffindom96: hmm, how do I try several ports
21:24:06BitPuffinI'm thinking looping through a range
21:24:10BitPuffinjust in case one is already taken
21:24:27dom96BitPuffin: Use a try catch I guess.
21:24:30BitPuffinbut how do I determine that it was successful
21:24:32BitPuffinyeah I know
21:24:35fowlBitPuffin, use enet, be happier
21:24:52BitPuffinthat's what I was thinking
21:25:17BitPuffinbut then how do I stop the loop if it was successful, and how do I make sure that the exception stays when it reaches the end of the loop
21:25:21BitPuffinif all of them are taken
21:25:29BitPuffinfowl: this is for a multiplayer game
21:25:42skrylarthere is an easier way, BitPuffin
21:25:45skrylaris this for network handles?
21:25:47fowlBitPuffin, that you're writing?
21:25:48BitPuffinzmq?
21:25:52BitPuffinfowl: yes
21:25:56fowlBitPuffin, use enet
21:25:57BitPuffinfowl: no that YOU are writing
21:26:20dom96Maybe there is a way to query is a port is taken.
21:26:30*zahary quit (Quit: Leaving.)
21:26:32skrylarIIRC you just bind it
21:26:34dom96*if
21:26:35skrylarit will fail if its not available
21:26:40fowlBitPuffin, ..opposed to say, you connecting to a server or something
21:28:29BitPuffinskrylar: yeah it raises an exception, but that makes it difficult to keep the exception at the end of the loop
21:28:31BitPuffinor actually not
21:28:41BitPuffinI guess I can just check if port is the highest port and re-raise
21:28:46BitPuffinfowl: what's enet
21:28:49BitPuffinand why would I use it
21:29:22*micklat quit (Remote host closed the connection)
21:29:23BitPuffinI am not even sure that this game is possible on the network so I am not sure that using abstractions is a smart thing
21:29:40BitPuffinconsidering I am writing a physics engine for it even because there is no existing one that provide me what I need
21:30:03fowlits what you use when you get to the point of needing things like reliable and unreliable packets, and you dont feel like writing all that because its already written
21:30:08skrylarBitPuffin: what is it you need?
21:30:20fowlBitPuffin, http://enet.bespin.org/
21:30:48skrylarenet is a socket lib for games; it gives you message-based TCP over UDP
21:30:48BitPuffinskrylar: dynamic fracture and deformation etc
21:31:25fowlBitPuffin, id love to see your work btw (:
21:31:57EXetoCcan't fit the tubes?
21:32:03Trixar_zaI've heard of enet before, but not sure where...
21:32:17BitPuffinfowl: well which people do you think I will probably recruit for super pre-notevenalpha testing? :P
21:32:43BitPuffinpatience biatch
21:32:47fowllol
21:32:48BitPuffinyour day will come
21:33:12BitPuffinnot so sure about this enet thing
21:33:14BitPuffinsounds great
21:33:17BitPuffinbut maybe not for this
21:33:18fowlTrixar_za, its used in some really popular engine -- cube maybe?
21:33:43Trixar_zaCould be. I remember it being used for an MMO I played or something
21:33:50BitPuffinI can imagine being able to shave off a few nanoseconds could be valuable for this game
21:34:05Trixar_zaIt was one of the depedencies of the client
21:34:35skrylarfowl: it was written specifically for Cube
21:34:56skrylarBitPuffin: i donno, are you doing something novel with the networking?
21:35:14fowlah tahts right
21:35:26skrylari get if you just want to learn sockets, all though enet does a decent number of things for you (e.g. multiple channels, which can be set to ignore previous messages if a newer one beat it to the client)
21:35:58skrylarif you use a zero-copy deserializer, the overhead is negligible
21:36:00vbttis enet popular or just used by one game?
21:36:09BitPuffinskrylar: physics
21:36:09skrylarwell its used by cube and sauerbraten at least
21:36:17Demoscube has pretty badass network code, pretty light on server-side verification though
21:36:18skrylarBitPuffin: physics is not novel networking
21:36:27BitPuffinskrylar: what do you mean with novel
21:36:29Demosbut it works on a satelite connection
21:36:30BitPuffinI'm not writing a novel
21:36:34skrylarnovel = new
21:36:41fowli used enet in keineschweine
21:36:42skrylarmost people *don't* do a full sync of physics
21:36:53BitPuffinskrylar: this kind of physics in a multiplayer environment is surely something new
21:36:55skrylarthey simply transmit the scene graph's movements, and let the physics engines run on the client
21:36:57fowlthought thats not really a good demonstration of it, i didnt finish it
21:37:02fowlyou can log in and download files though :p
21:37:08vbttis enet not suitable for reliable messaging?
21:37:20skrylarvbtt: *shrug*
21:37:24skrylarit provides it, if you ask
21:37:49skrylarI'm guessing BitPuffin is paranoid of enet's overhead for packing messages
21:38:05fowlthere doesnt have to be overhead
21:38:16skrylarall though, as mentioned, the usual response to physics is to have it simulated deterministically by each client (or nondeterministic, unless its important)
21:38:30skrylarfor instance Clockwork Empires only transmits actions, the engine is fully deterministic
21:38:59BitPuffinskrylar: yeah it will most likely be a hybrit
21:39:02BitPuffinhybrid
21:39:11BitPuffinsome things running on clients and some on the server
21:39:23skrylarbut anyway; if you want to rewrite whats been done you're welcome to :)
21:39:28BitPuffin:P
21:39:38BitPuffingood for learning too
21:41:59BitPuffinI am guessing it will be interpolation of what the client thinks it will be and what the server says it is with timestep or something
21:42:02BitPuffinwe'll see
21:43:49BitPuffinerr, what's the prettiest way to re-raise?
21:44:09EXetoC'raise'?
21:44:29BitPuffinEXetoC: yeah but like with the same info or something
21:44:30EXetoCI don't know if that's pretty, but it's short
21:44:38*tinAndi joined #nimrod
21:44:46fowlgetcurrentexceptionmsg
21:44:48fowl()
21:45:02Araqhi tinAndi welcome
21:45:06BitPuffinso in the case of sockets
21:45:10tinAndihi
21:45:16BitPuffinraise newEOS(getCurrentExceptionMsg())?
21:45:37fowldid you forget how to raise
21:45:41fowlraise newexception(t, msg)
21:45:51BitPuffinwell the manual said that
21:45:52fowler..i think thats it
21:45:59fowlok i'll be honest i forgot how to raise
21:46:02BitPuffinhttp://build.nimrod-lang.org/docs/manual.html#raise-statement_toc
21:46:11BitPuffinhowever I usually do it the way you said too
21:46:14BitPuffinso I'm confused
21:46:15EXetoCwhy doesn't the proc also raise? I suppose it doesn't hurt to make it stand out
21:46:18*BitPuffin looks at araq
21:46:57EXetoCthat's just a proc. it's outdated I guess
21:46:58fowlBitPuffin, neweos() is just a shortcut for newexception(E_OS, msg)
21:47:04EXetoCboth are
21:47:29EXetoCnvm
21:47:47BitPuffinfowl: I see
21:47:55BitPuffinbecause let's introduce inconsistency
21:48:04BitPuffineither way, does this seem reasonable? https://gist.github.com/BitPuffin/8984557
21:48:14EXetoCthere's an unexported newEOS in streams
21:48:30BitPuffinwithout the raise
21:48:35BitPuffinlike, only newEOS
21:48:41BitPuffinor not
21:48:43BitPuffinwtf
21:48:47EXetoCis that different from raise without an arg?
21:49:22BitPuffindoesn't even exist anymore
21:49:28BitPuffinso I guess manual needs to be updated
21:50:59BitPuffinhmm well it seems like it works when it fails
21:51:04BitPuffinnot sure why I can't bind the port
21:51:30EXetoCcould you before? have you enabled re-use?
21:52:15BitPuffinmaybe I am missing a step
21:52:20BitPuffinEXetoC: no I'm just writing this
21:52:22BitPuffinhttps://gist.github.com/BitPuffin/8984557
21:52:28BitPuffinthat includes the full setup
21:53:30fowlBitPuffin, it looks alright except after bindaddr() you should break or return so it doesnt keep trying ports
21:54:06BitPuffingood idea lol
21:54:11BitPuffinthat's why it wasn't working :P
21:54:19BitPuffinI wasn't sure how to check if it was successfully bound
21:54:21BitPuffinhrm
21:54:34VarriountHm. How do I generate the nimrod documentation, including the PDF form?
21:54:46fowlwell leave it running and try to use the same port twice to make sure EOS gets thrown on the second one
21:55:26BitPuffinfowl: yeah but like how do I check that the exception wasn't thrown without catching it
21:55:28BitPuffinguess it doesn't matter
21:55:30BitPuffinsince it will say
21:55:37BitPuffinand crash
21:55:40BitPuffinwhich is what I want
21:55:57fowlthe exception wasnt thrown if you get past bindAddr
21:56:05BitPuffinexactly
21:56:09BitPuffinand if it isn't caught
21:56:11BitPuffinboom
21:56:20BitPuffinalthough doesn't execution continue as far as possible?
21:56:26fowlthats why im saying test it
21:56:36*surma joined #nimrod
21:56:44*surma quit (Changing host)
21:56:44*surma joined #nimrod
21:56:46fowlor look at the source of sockets to make sure that is the behavior, because the documentation isnt clear
21:57:35surmaCould someone take a look at these 12 lines and tell me why I get a SIGSEGV? https://gist.github.com/surma/8984641
21:58:39fowlsurma, you dont use channels properly
21:59:27surmafigured as much as I never got them to work
21:59:58fowlsurma, you have to call open() to initialize it http://build.nimrod-lang.org/docs/channels.html
22:00:06BitPuffinseems right
22:00:17*skyfex quit (Quit: Computer has gone to sleep.)
22:01:08surma*sigh*... I have had this page open all along but that function somehow slipped through
22:01:09surmaof well, thanks
22:01:46fowlthe doc could use a good example to display
22:02:14surmafowl: It's still failing tho
22:03:12Varriountsurma: Try creating an explicit main() procedures
22:03:42VarriountFor some reason, certain procedures (like newWideCString) don't like being called at the top level
22:04:01BitPuffinwas there a way to refer to the parent scope variable of the same name?
22:04:13BitPuffinFor example if I have a port variable next to the socket variable
22:04:19BitPuffinand then also call the loop variable port
22:04:35BitPuffinhow would I assign the loop variable to the regular variable without changing name
22:04:42fowlsurma, see
22:04:48fowlsurma, tests/threads/threadex.nim
22:04:50VarriountBitPuffin: Can I see the code?
22:05:24BitPuffinhttps://gist.github.com/BitPuffin/8984557
22:06:19fowlBitPuffin, unshadowing? the only answer is to not shadow
22:06:24BitPuffinoh
22:06:26BitPuffinso there is no way
22:06:28BitPuffinokay
22:06:28VarriountBitPuffin: Afaik, no, there's no way to access a shadowed variable
22:06:33fowlBitPuffin, well no
22:06:43fowlBitPuffin, if its top-level you could refer it it as mymodule.port
22:07:24VarriountQuite frankly, if you're shadowing variables, and need access to the shadowed values, your should just rename things.
22:07:39BitPuffineven if it is in the same module?
22:08:12VarriountYes.
22:08:33VarriountOh, for what fowl said, yes too
22:09:03BitPuffinlol :)
22:09:23BitPuffinmust have confused it with some other language
22:09:35BitPuffinwas it in D that you could do .variable = variable ?
22:09:38VarriountPython
22:09:40BitPuffinfor top level stuff
22:09:41*awestroke joined #nimrod
22:11:06VarriountBitPuffin: In python you have the 'global' and 'nonlocal' keywords
22:14:27BitPuffinthat's funky, there is PDispatcher that is equal to TDispatcher but I can't find any definition of it even in the index
22:14:45vbttglobal and nonlocal just disable shadowing
22:15:01vbttthere is still no clean way to access shadowed variables in python.
22:15:08*zahary___ is now known as zahary_
22:15:34vbttnot sure why that's useful anyway
22:18:47AraqVarriount: newWideCString really shouldn't fail in a top level statement ...
22:19:09Araqcan you reproduce this with a simple test program?
22:19:17VarriountYep.
22:19:27*askatasuna quit (Ping timeout: 260 seconds)
22:20:20BitPuffindom96: what's the intended way to use delegates and all the stuff
22:20:37BitPuffindelegate and dispatcher
22:20:44BitPuffinand it doesn't even tell me what dispatcher is
22:21:28Araqstrange. I remember asyncio having extensive docs
22:21:50BitPuffinAraq: if there even is a definition of TDispatcher it is not caught by the docgen
22:22:35Araqyeah. Perhaps it's an opaque object? nah, that's crazy talk
22:22:49fowlBitPuffin, here you go, example async server/client https://gist.github.com/fowlmouth/753ce0b4adbd9accff57
22:23:02BitPuffinnope
22:23:08BitPuffinit's in the source file
22:23:11BitPuffinbut not caught by the doc
22:23:19BitPuffinnot sure what you mean by opaque object
22:23:34BitPuffinfowl: ty :D
22:23:54fowlBitPuffin, thats a 2 year old gist, so yeah
22:23:57Araq PDispatcher* = ref TDispatcher
22:23:59Araq TDispatcher = object
22:24:06Araqnoticed something?
22:24:14Araqyeah TDispatcher is not exported
22:24:20Araqwhat does this mean?
22:24:27BitPuffinAraq: yeah I did notice that mr smartypants
22:24:28Araqperhaps that it's not your business?
22:24:36surmaMay I request another look? The channel now opens, but peek() returns -1 (i.e. allegedly closed) https://gist.github.com/surma/8984641
22:24:40BitPuffinthen why the fuck is PDispatcher exported
22:25:12AraqBitPuffin: I'll answer further question after you turned on your brain
22:26:15BitPuffinAraq: it is quite late
22:26:26BitPuffinat least for not even having left the office yet lol
22:26:54Araqsurma: logger runs before you sent the message
22:26:57BitPuffinbut yeah it just seemed like if I can call newDelegate() I should be able to use it for something
22:27:47surmaAraq: Yeah, but I open the channel before. So peek should not return -1, right?
22:28:04surma"Returns -1 if the channel has been closed."
22:28:17surmaThat seemed liek the only way to check if a channel is open
22:28:18VarriountAraq: Posted the issue
22:28:26BitPuffinI am a bit dehydrated actually
22:28:30BitPuffingonna grab some water
22:28:35BitPuffinmaybe I will become more intelligent
22:29:31EXetoCBitPuffin: because that's not part of the interface
22:30:00Araqsurma: ah my bad
22:30:03BitPuffinEXetoC: newDelegator is though
22:30:18BitPuffinbut maybe you are only supposed to pass it around or something
22:30:21Araqso thread A closes the channel before 'logger' got a chance to run
22:30:25EXetoCyes, but you do have a set of procs that operate on said object
22:30:26BitPuffineither way, have no idea what it is for
22:30:51surmaAraq: Oh.. I actually expected send() to block until someone recv() the msg. But now I see that's not actually in the documentation
22:30:58*cark joined #nimrod
22:30:59surmaAgain. Go making me make assumptoins
22:31:01Araqsurma: 'close' gets rid of anything that's in the channel
22:31:26fowlBitPuffin, delegates? just ignore them..
22:31:38BitPuffinfowl: what about dispatchers?
22:31:50Araqyou generally don't close channels
22:32:04Araqinstead you send a "stop" message to the thread to tell it to stop
22:32:07fowlBitPuffin, I quoth the docs for asyncio: "For most purposes you do not need to worry about the TDelegate type. The PAsyncSocket is what you are after. It's a reference to the TAsyncSocket object. This object defines events which you should overwrite by your own procedures."
22:32:25Araqand then you joinThread() it
22:32:29BitPuffinah
22:32:30surmaAraq: ah, just wanted to ask what the common idiom is. Thank you :)
22:33:14fowlBitPuffin, as for dispatchers, there are only like 2 functions that have anything to do with them
22:33:40BitPuffinhandle read and write?
22:34:02BitPuffinby the way Araq if you are gonna be so snarky about things not being exported, why is fields for objects that aren't exported shown, eh?
22:35:30EXetoCshown where?
22:35:33AraqBitPuffin: it's because I release useful software before it is "perfect"
22:35:38fowlBitPuffin, you can see in my example all the dispatcher is used for is register() and poll()
22:36:09BitPuffinfowl: currently reading it
22:36:31reactormonkAraq, How to deal with data types that are value-typed but use heap-based datastructures internally like tset?
22:36:53EXetoCBitPuffin: you're not referring to TDispatcher right?
22:37:14Araqreactormonk: haven't made up my mind yet
22:37:21BitPuffinEXetoC: no
22:37:31BitPuffinEXetoC: the fields of TDelegate and TAsyncSocket
22:37:32fowlEXetoC, he means the fields on TAsyncSocket that arent exported
22:37:45reactormonkAraq, ok.
22:38:05EXetoCnot quite what he said, but ok
22:38:08fowlBitPuffin, tdelegate is exported, the * isnt shown
22:38:40BitPuffinfowl: I know
22:38:45BitPuffinfowl: I said fields
22:39:13fowlBitPuffin, all the fields of tdelegate are exported though
22:39:49fowlso.. what u talking about
22:39:53BitPuffinfowl: exactly that
22:39:59BitPuffinfowl: why doesn't it omit the non-exported ones
22:40:07surmaI MADE THREADS WORK! Wow... can't believe it feels just as good even tho it is this primitive
22:40:10EXetoCI think Araq told you
22:40:11BitPuffinbut Araq already said why
22:40:16BitPuffinyeah I know
22:40:27BitPuffinbut fowl kept explaining it or what he thought I was asking
22:40:35fowlok
22:40:40fowlwhat a boring convo
22:41:09BitPuffinlol yeah
22:41:09fowl:p
22:41:15BitPuffinwent on much longer than needed :P
22:41:17fowljust use enet dude, its a lot easier
22:41:40fowlthe same client/server example in enet https://github.com/fowlmouth/nimrod-enet/tree/master/examples
22:43:22BitPuffinI don't want abstraction for this
22:43:34BitPuffinIt might be useful in the future though for some other project
22:44:25vbttBitPuffin: are you using tcp?
22:44:39vbttenet is udp based
22:45:56vbttdesigned for lower latency (tcp has more 'handshake' and stream protocol so latency will be an issue)
22:46:41Araqif starcraft 2 runs over TCP, your stuff should be fine too
22:46:57Araqand iirc it does use TCP
22:46:59BitPuffinvbtt: no I'm not using tcp
22:47:01BitPuffinthat would not be smart
22:47:04vbttok
22:47:13vbttso what are you using?
22:47:16BitPuffinAraq: this is not an RTS game
22:47:18BitPuffinvbtt: UDP
22:47:37BitPuffinAraq: starcraft doesn't do networked physics with realtime deformation and fracture
22:48:00VarriountO_o
22:48:01surmaCan the nimrod compiler link statically?
22:48:09Araqfair enough, BitPuffin
22:48:18vbttBitPuffin: i guess it's ok then, as long as you're ok with the non-reliability
22:48:19Varriountsurma: iirc, It links statically by default
22:48:24Araqsurma: it does link statically
22:48:32BitPuffinvbtt: I am quite ok with it
22:48:32Demossurma, sure. Pure nimrod libs should be linked "staticly" by default, you can use --overrideDynlib to link with C libraries
22:48:39surmabut not with threads, right?
22:48:45DiscolodaBitPuffin: im curious, what can deform and fracture?
22:48:46BitPuffinand if it becomes a problem I'll deal with it
22:48:55BitPuffinDiscoloda: meshes and terrain?
22:48:59Varriountsurma: What do you mean, not with threads?
22:49:09Demossurma, it will likely be somewhat hard to get gcc to link pthreads and glibc staticly, you can try --passl:-static
22:49:16fowlBitPuffin, too many dimensions lol
22:49:17Discolodaso, like buildings or even down to things as small as a pole
22:49:40BitPuffinDiscoloda: both
22:49:45Araqsurma: threads don't change anything. Yes we kick Go's ass when it comes to .exe size. :P
22:49:51BitPuffinno pre-made destruction meshes like in battleshit :P
22:49:58Discolodacool
22:50:22BitPuffinDiscoloda: so it is used as a tactical element of gameplay basically
22:50:27VarriountAraq: Nimrod does many things better than Go
22:50:33fowlBitPuffin, this is an FPS?
22:50:37BitPuffinfowl: yes
22:50:51VarriountI think the only big thing Go has on Nimrod is Goroutines
22:50:56fowlBitPuffin, i always wanted an FPS version of yoshi's island
22:51:00surmaDemos: That worked, thanks
22:51:06BitPuffinfowl: this will not be it
22:51:11fowlBitPuffin, throwing eggs at shyguys in first person perspective
22:51:22surmaAraq: Actually, when I link statically it's basically the same size
22:51:27VarriountAraq: Is the nimrod compiler able to calculate the stack size of a particular procedure?
22:51:31surmaBut yeah, Go has gotten a lot bigger
22:51:32BitPuffinfowl: so do you have to use a dispatcher for handling reading and writing?
22:51:33fowlBitPuffin, yea yea just make it very data-driven and it may become first-person-yoshi :p
22:51:36BitPuffinor is that just one way
22:51:38Discolodai just want what Dust514 was promised to be on the PC (PS3 is slow these days)
22:51:43surmaIt's one of the goals for Go 1.3 to reduce size again
22:51:49Araqsurma: I think you're doing it wrong
22:51:50Varriount'again'
22:51:55BitPuffinfowl: I plan to ship it with level editor etc so that modding community can go nutz
22:52:01Araqand Go doesn't link statically to *libc* either
22:52:20Araqso you compare "fully static" vs "somewhat static"
22:52:42surmawait, what are you talking about? I wasnt trying to offend anyone ^^
22:52:54BitPuffinaraq is always offended, didn't you know :P
22:53:03Varriount^ Tis true
22:53:04surmaNah, I'm kinda new ;)
22:53:36skrylarAraq is always offended and Skrylar always hates things
22:53:38skrylarlol
22:53:38fowlBitPuffin, the pasyncsocket object has a bunch of callbacks, i only use handleRead or handleConnect
22:54:06fowlBitPuffin, sending data is easy, asyncsocket.send("bond\0\0\7")
22:54:09DiscolodaBitPuffin: for the game im working on, im trying to get it to have a world up to 8388608 meters on each side.
22:54:27*awestroke quit (Remote host closed the connection)
22:54:34BitPuffinfowl: yeah that's what I thought
22:55:02BitPuffinfowl: so handleConnect is when a new client connects?, And handleRead is when one of the clients send data to you
22:55:04BitPuffin?
22:56:20fowlyea
22:56:34fowli think
22:56:47fowlthere's another example in tests/run/tasyncudp
22:57:32Araqsurma: afaict you need "go build -ldflags "-linkmode external -extldflags -static" " to link statically
22:57:56*io2 joined #nimrod
22:59:50surmaAraq: Nah, just CGO_ENABLED=0
23:00:35Araqbut *shrug* who links statically against libc anyway. makes no sense
23:00:47DemosAraq, does on windows
23:01:17AraqDemos: ok but then you don't link statically against kernel32.dll
23:01:18*DAddYE_ joined #nimrod
23:01:40Araqthat's not even possible, is it?
23:02:29Demosyeah, don't think it is
23:02:40surmaAraq: Most of the time, go is not linking against anything, everything is in the core lib. OS X is one of the exceptions because external libraries are needed to access the systems TLS certificates for example
23:02:49Demosare POSIX and linux syscalls in a shared lib on nix?
23:03:09surmaUnder linux it is now linking against libc for faster DNS lookup. But if you set CGO_ENABLED=0, it doesnt link against anything external
23:03:52Varriountdom96: The GSoC page looks pretty
23:04:26*DAddYE quit (Ping timeout: 245 seconds)
23:05:39*BitPuffin quit (Ping timeout: 260 seconds)
23:08:02vbttcan someone update the website news before submitting gsoc?
23:08:23vbttyou can post the strangeloop video and dr dobbs article
23:08:41Varriountvbtt: I think dom96 and Araq are the only ones who can modify the website
23:08:58Varriountfilwit and zahary might be able to as well.
23:10:33reactormonkVarriount, just post it to news.txt
23:10:58VarriountOh. That simple?
23:11:23vbttweb/news.txt - i looked at it but found a new news item not on the website, about releasing 0.9.4
23:11:24Araqsurma: your comparsion is still unfair, nimrod links its own stdlib statically, golang does the same. You then make nimrod link statically against something out of our control and end up with comparable sizes. They are not.
23:11:30vbttperhaps i looked at the devel branch.
23:12:11*surma quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
23:12:13reactormonkvbtt, hm
23:12:49vbttso i dont know which branch of the website to edit ..
23:13:16VarriountProbably master
23:13:22Araqno, devel
23:13:27vbttbut then how do the new changes make it to devel?
23:13:59vbttyeah the devel already has a news item about 9.4: https://github.com/Araq/Nimrod/blob/devel/web/news.txt
23:14:33Araqvbtt: make a PR with the news.txt and I can upload it
23:14:34Varriountvbtt: Don't forget that the ticker.txt contains the sidebar news
23:15:03vbttAraq: but what do I do with the future news item? delete it?
23:15:12Araqcomment it out
23:15:15Araqwith
23:15:17Araq..
23:15:22Araq comment
23:15:31vbttoh we have comments.. ok.
23:15:36AraqRST surely is strange sometimes
23:16:05vbttyeah RST is weird
23:16:15Discolodaping
23:16:19vbttasciidoc is better
23:17:03NimBotAraq/Nimrod devel 3a8f782 Araq [+0 ±1 -0]: koch install should work now as documented
23:17:04vbttbtw i wasn't able to run nimweb either, so i can't verify my change
23:17:26Araqwhy not?
23:19:26vbttcan't remember and dont have access - something about an expected file missing. i just ran it on the cloned web directory and it didn't work.
23:20:07Araqwell I have the same problem, I think
23:20:26*xenagi joined #nimrod
23:21:14vbttgood!
23:21:25*skrylar still hugs nanoc as a site generator *nods*
23:22:06vbttbtw, was nimweb really necessary? off the shelf solutions didn't work?
23:23:28Araqhow could they? do they support highlighting for nimrod source code?
23:23:58skrylarAraq: plug in a highlighter to coderays/pygments?
23:24:04vbttof course, pygments does
23:24:21Araqpygments didn't have a nimrod highlighter back then
23:25:02skrylarI know you can have asciidoctor (ruby version) call out to a number of highlighters (highlightjs, coderay, pygmentize at least), then have nanoc process docs with asciidoctor (which has close-to-reST syntax as it is)
23:25:16skrylarthats what i use when markdown isn't good enough
23:25:24Araq*shrug* I know my solution works much better anyway
23:26:12Araqmy RST parser works better than docutils's too
23:26:33skrylari think i've only used rest once
23:26:49vbttthat's nice, but nimweb doesn't work atm
23:28:46Araqthat's because other people constantly add features
23:29:00Araqand then complain version 0.9.4 is not out already
23:29:06Araqand call me names
23:30:52vbttwhile it's nice to eventually have nimweb working, right now i see it just sidetracking you (and me)
23:32:08*DAddYE_ quit (Remote host closed the connection)
23:32:24vbttyou can say no to any features
23:32:40*DAddYE joined #nimrod
23:33:25vbttnew features are fun and stabilizing is boring but is nimrod going to be a purely research/fun platform?
23:34:24skrylarhow many more features are needed that macros can't do?
23:35:13vbttneeded or wanted? everybody wants something that doesn't exist yet.
23:36:42vbttgo released 1.0 with a non-generational GC, python 1.0 didn't even have classes afaik (other useful features came in > 2.3)
23:37:09vbttbut it appears that nimrod is going to leapfrog all versions and the first release will be v 5.0
23:37:54Araqso what do you suggest?
23:38:10*darkf joined #nimrod
23:38:12Araqremove what's broken to get a stable 1.0 ?
23:38:34Araqshould I go through the list of what is currently broken then?
23:38:45vbttsure, that's fine too. i'd say pick a date - anything not even started by that date is out - anything broken is dealt with on a case-by-case and anything stable is in.
23:39:22vbttthe date is for feature freeze.
23:40:03vbttyou could have 1.0 in 6 months or less i think.
23:40:24Araqclosures, iterators, generics, macros, exceptions
23:40:28Araqall broken
23:40:40Araqshould we remove them then?
23:41:03AraqI'm in feature freeze mode since months already
23:41:38vbttoh? i didn't realize.
23:41:53vbtti still see talk of new features going into 1.0
23:42:18Araqit's 0.9.4 vs 1.0
23:42:28Araq0.9.4 is in feature freeze, 1.0 is not
23:43:23Araqand of course things don't work that way. for instance dom96 can't fix most critical bugs, but he surely can work on asyncio in the meantime
23:43:50Araqhaving him do nothing instead doesn't help
23:44:46vbtti understand everyone is a volunteer.
23:45:43vbttbut you control the branches - just fork 0.9.4 and only allow stabilization changes in it. then new features will not break 0.9.4
23:45:50vbtt(0.9.4 should just be 1.0 anyway)
23:47:00*tinAndi quit (Quit: ChatZilla 0.9.90.1 [Firefox 26.0/20131205075310])
23:47:24Araqthat's what we're doing, except branches don't work well when you touched almost every single line of code
23:47:44Araqso 'devel' is the new 'stable', sort of
23:49:46vbttbut new features for 1.0 and fixes for 0.9.4 are going in the same branch at the same time - am I wrong?
23:52:16vbttalso the person writing the new feature should be responsible for merging it later.
23:52:55vbttso you're focused on one thing only - 0.9.4
23:54:42vbttpeople want a stable platform to build on - and it seems even some core features (you listed above) are not stable yet.
23:55:28vbttyou were talking about the pointer tagging stuff - is that even in 0.9.4?
23:55:37EXetoCAraq: will explicitly doing a full GC collection remain necessary in order to guarantee that all unreferenced objects are finalized?
23:56:21vbttcan it not be added later? in 1.2 perhaps?
23:56:40Araqvbtt: pointer taggin is not implemented
23:56:55Araqnot in a devel2 branch
23:57:08Araqplanning goes ahead of implementation
23:59:54skrylari kinda wish GTK+ was better at being portable