<< 23-10-2013 >>

00:00:44zangetAraq: thank you. seems like a nice channel
00:00:56Dirkson"Error: tabulators are not allowed" - What? Is it telling me that I can't use tabs for indentation?
00:01:14zangetoh should have read the last bit before hilighting him
00:02:48fowlDirkson, yes
00:02:58Dirksonfowl: How do I fix that behavior.
00:03:03fowluse spaces
00:03:06DirksonNo.
00:06:57*Dirkson begins to suspect he's wasted a day.
00:08:25DirksonAraq: Can I get a confirmation that I cannot use tabulators to supply indentation?
00:12:32*wlhlm quit (Ping timeout: 259 seconds)
00:14:58MFlamerno, you have to use spaces. But text editors conver tabs to spaces so I never even think about it
00:15:49*MFlamer quit (Remote host closed the connection)
00:29:11DirksonThe idea of making an indent-dependent language, then disallowing the use of the indent character just blows my mind. Why would you even? There's no downsides to using tabs.....
00:34:31profmakxexcept that there is
00:35:29Dirkson What is it??
00:40:04Dirksonprofmakx: Maybe additional complexity of tab-completion, if your dev environment does tab-completion?
00:40:30DirksonBut that's just dealing with the physical key, not the actual tabs-as-printed. More of an editor problem.
00:52:54*Dirkson tries to make vim deal with spaces like it does with tabs, "Nope. Can't do it. I can get tab and backspace to mostly work ok using spaces instead of tabs, but I can't make arrow keys or delete function properly."
01:10:49*q66 quit (Quit: Leaving)
01:24:33*Associat0r quit (Quit: Associat0r)
01:35:51*DAddYE quit (Ping timeout: 272 seconds)
01:58:33*Associat0r joined #nimrod
01:58:33*Associat0r quit (Changing host)
01:58:33*Associat0r joined #nimrod
01:59:57*DAddYE joined #nimrod
02:13:06*fowl quit (Quit: Leaving)
02:34:03*Associ8or joined #nimrod
02:35:50*Associat0r quit (Ping timeout: 245 seconds)
02:42:07*Associ8or quit (Quit: Associ8or)
02:43:53*DAddYE quit (Remote host closed the connection)
02:52:53*DAddYE joined #nimrod
03:02:17*BitPuffin quit (Read error: Connection reset by peer)
03:04:06*BitPuffin joined #nimrod
03:11:46*xenagi joined #nimrod
03:17:37DirksonDespite trying for some time, I have yet to find anything else I like nearly so much as nimrod, which is frustrating. Rust's focus on concurrency is cool... But Damn that language is ugly. Ugly Ugly Ugly. And I'm coming from C, its intended audience.
03:19:06xenagii agree about the elegance
03:19:17xenagior lack thereof
03:19:44*gdos joined #nimrod
03:19:47BitPuffinwouldn't really say that there isn't any focus on concurrency in nimrod either though
03:20:03DirksonBitPuffin: Really? Well, that's good.
03:20:05xenagiin terms of Rust vs Go, I side myself with Go (aside from Nimrod, ofc)
03:20:10DirksonIt's just the damn tab thing, then.
03:20:31BitPuffintab?
03:20:31BitPuffinyou mean indentation?
03:20:34DirksonYes.
03:20:43xenagiNimrod has 0 tabs
03:20:45BitPuffinwhat about it?
03:20:57DirksonSpace indentation drives me insane, and I cannot adjust my editor enough to fake it effectively enough to be functional.
03:21:09BitPuffinuse a better editor :p
03:21:12Dirksonvim.
03:21:19BitPuffinI use vim
03:21:20xenagijust use 4 spaces
03:21:34xenagiI likes braces too, but 4 spaces is enough to make it out
03:21:36BitPuffinit's super easy to indent and de-indent
03:21:44BitPuffinctrl+d to de indent
03:22:03DirksonI can tell vim to input 4 spaces instead of tab when I press tab, and that also overloads the backspace key, but it doesn't overload the arrow keys, which is a problem for actually getting around the resultant code.
03:22:17xenagihuh I've been doing >> to indent and << to de-indent
03:22:19BitPuffinset tabstop=2 shiftwidth=2
03:22:27BitPuffinset expandtab
03:22:28BitPuffindone
03:22:36DirksonBitPuffin: Doesn't affect the arrow keys.
03:22:38xenagiwell, if you're using arrow keys in vim, you've got another problem lol
03:22:58BitPuffinxenagi: well in edit mode you do tab and ctrl+d
03:23:09BitPuffinI mean
03:23:12BitPuffininsert mode
03:23:30xenagiah
03:23:36xenagiive always just done it from control mode
03:23:40xenagicommand mode*
03:23:54BitPuffinah
03:24:01BitPuffinwell it's good to do both
03:24:09DirksonMy current best plan is either to ditch nimrod, or write some sort of insane wrapper around nimrod's binary to convert any file it touches to/from the stupid space-only format.
03:24:28xenagibut i've mapped ESC to be ^C for the ease of swithing back/forth to command mode easily
03:24:45BitPuffinDirkson: I don't see why doing the space thing is a problem
03:24:54xenagitry Python Dirkson ;)
03:25:09BitPuffinspace based indentation is better anyways
03:25:15BitPuffinas it will format the same everywhere
03:25:31BitPuffinremember when you spent time making your comments look pleasing?
03:25:35DirksonBitPuffin: *considers* I fear I'd screw it up. It also doesn't help adoption of the language, which I actually like - I am not the only guy who prefers tabs to spaces. I believe we're actually the majority.
03:25:42BitPuffinWell if you used tabs chances are they look like balls on github
03:26:07BitPuffinDirkson: it's because default is kind
03:26:15Dirksonxenagi: I actually love python. But it's as speedy as my girlfriend's pet. Which is a snail.
03:26:16BitPuffinDirkson: Nothing to screw up, just do it!
03:26:32BitPuffinDirkson: that's where nimrod comes in
03:27:43xenagiif you love python, i'm not understanding how the spacing in Nimrod bothers you
03:27:47DirksonBitPuffin: I'd rather see something /in/ the language. There's no reason tabs can't be used instead of spaces in any particular file. That way I know the language isn't hobbled by its own bizare choices.
03:28:00xenagithat's like saying you love Parmesan but hate cheese :/
03:28:24BitPuffinpythonistas (?) prefer spaces too
03:28:31xenagi^
03:28:40Dirksonxenagi: I believe I can use tabs in python? O.o To be fair, I haven't used python in a while - It's my favorite language, but I almost never run into a problem that can't be solved better by bash or a faster programming language.
03:28:42xenagibecause it's too easy to confuse spaces for tabs...cuz they're invisible
03:29:01xenagiand you really see the f-ups when you move the file to/from windows and the shit is out of indentation
03:29:13Dirksonxenagi: And, to be clear, I love the concept of indentation-is-control. That's a great concept.
03:29:30BitPuffinanyways, any self respecting programmer should be able to switch between tabs and spaces. But you are right, it does hurt adoption a bit. And should be an option
03:30:00xenagiI actually dislike Python
03:30:12DirksonBitPuffin: It seems like it should be a relatively easy option, too - First indented line. Does it use tabs or spaces? If tabs, use tabs for the file. If spaces, use spaces.
03:30:13xenagiPython is great...if you use the REPL
03:30:40BitPuffinxenagi: that's what lisp is for though
03:30:41xenagibut, imo, Nimrod is what Python should have been. Or, maybe I just prefer static, compiled languages that produce binaries
03:31:21xenagii've been bit one too many times on the ass with python's dependency hell
03:31:30BitPuffinDirkson: yeah, but anyways I told you how to do it in vim, if you want to you can look up how to do it for only nimrod, it isn't hard, just that I do that indentation in pretty much every language
03:32:08DirksonHehehe. Whenever I approach python as a user, I run into that too, Xenagi.
03:32:18BitPuffinI think nimrod should perhaps have "stronger" types
03:32:31BitPuffinlike without implicit casts etc
03:32:57xenagiwhere does it implicitly cast?
03:33:08BitPuffinxenagi: when mixing different datatypes?
03:33:21BitPuffinxenagi: Say a float and an int, or an int32 and an int64
03:33:24DirksonBitPuffin: Does your vim solution fix the arrow keys too? In insert mode, I absolutely depend on tabs being tab-width - press left once, and I'm less nested. Press right once, I'm more nested.
03:33:36DirksonBitPuffin: (Suddenly an XKCD springs to mind)
03:33:48Dirksonhttp://xkcd.com/1172/
03:33:50BitPuffinDirkson: you should probably stop using arrow keys
03:34:00BitPuffinDirkson: But no, but it should be simple to set up
03:34:03xenagiadding an int64 and a int32 should not be done without error or at least warning. are you saying that it does go unnoticed?
03:34:26BitPuffinxenagi: it does
03:34:38BitPuffinxenagi: I think you should be forced to be explicit about the cast
03:34:49xenagiagreed
03:35:00BitPuffinhaha
03:35:05BitPuffinnice xkcd
03:35:23BitPuffinand I think it should use type inference a bit more
03:35:55DirksonAye. I realize my arrow key usage in vim is a little like that - There are certainly better ways to get around in vim than I use.
03:35:55BitPuffinlike why have proc [T](a, b): T = a + b
03:36:06BitPuffinwhen you can have proc(a, b) = a + b
03:36:13BitPuffinum
03:36:24BitPuffinproc [t](a, b: T]: T = a + b **
03:36:51BitPuffinDirkson: just stop, you'll get used to it in no time
03:37:45DirksonBitPuffin: I honestly don't know how I'd get around in vim without them.... Sometimes I switch lines using line numbers, but mostly if I'm going +5 lines or something, I just press downarrow 5 times.
03:39:10xenagior... 5j
03:45:20DirksonBitPuffin: Asked in #vim how to fix the arrow keys. Maybe that'll help : ) ... Although the first guy to answer answered the non-question portion of my question, rather than the question portion. Maybe I need to write most clearly.
03:47:31*DAddYE quit (Remote host closed the connection)
03:51:54*OrionPK quit (Quit: Leaving)
03:59:45*DAddYE joined #nimrod
04:02:09*DAddYE quit (Remote host closed the connection)
04:05:29*MFlamer joined #nimrod
04:09:53*MFlamer quit (Client Quit)
04:30:12*xenagi quit (Quit: Leaving)
04:30:33*brson quit (Ping timeout: 272 seconds)
04:38:50BitPuffinDirkson: you get around with hjkl instead of arrows
04:44:45Dirkson*laughs* Well, that doesn't solve the whole "spaces aren't tabs for navigation" problem.
05:03:19*DAddYE joined #nimrod
05:07:28*DAddYE quit (Ping timeout: 240 seconds)
05:08:42*DAddYE joined #nimrod
05:13:12*Varriount loves reading logs
05:14:23BitPuffinDirkson: no but it solves the arrow key problem
05:20:50VarriountDirkson, I see your problem.
05:20:58VarriountIt's vim
05:21:02Varriount:P
05:22:51VarriountSeriously though, you could probably either A - Write a script that replaces all indents in a file with spaces, saves the file, compiles it with nimrod, and then converts the spaces back to tabs
05:23:10*DAddYE quit (Remote host closed the connection)
05:23:28Varriountor B - Modify the nimrod compiler to use tabs as delimiters
05:23:38*DAddYE joined #nimrod
05:23:45Varriountor C - Use a different editor (sublime text anyone?)
05:24:16BitPuffinVarriount: meh sublime text
05:24:37VarriountOk, Aporia
05:26:22BitPuffinno, vim :P
05:26:47VarriountBy the way, the reason python still allows tabs to be used, instead of forcing spaces, is strictly backwards compatibility. Even then, if you somehow manage to mix up spaces and tabs in a single file, python will randomly pick either only indent delimited lines, or space delimited lines, when parsing the file
05:27:03VarriountWhich has led to several weird bugs in the past.
05:27:44VarriountBitPuffin, vim scares small children, and eats babies.
05:27:59VarriountDo you really want to use an editor that scares children?
05:28:04BitPuffinyes?
05:28:17Varriount-_-
05:28:33*DAddYE quit (Ping timeout: 272 seconds)
05:28:57*Varriount slaps BitPuffin with a salmon
05:33:07VarriountAraq, changed my documentation pull request to meet with your request.
05:34:27DirksonToday I stepped on a bee.
05:34:30*Varriount is now known as BytePuffin
05:34:32DirksonDon't step on bees.
05:34:54BytePuffinDirkson, I swatted a Bee onto my neck once. I thought it was a fly.
05:35:01DirksonOuch
05:35:20*BytePuffin waves at BitPuffin
05:35:42BitPuffinBytePuffin: So you are a fat version of me?
05:36:02BitPuffinyou do take up 8 times as much space
05:36:13BytePuffinI prefer to think of myself as 8 times taller than you.
05:37:15*Dirkson is now known as NibblePuffin
05:37:21BytePuffinXD
05:37:49BytePuffinIt's one in the morning, I'm in bed, and, right now, I'm really glad I
05:38:00BytePuffinI'm the only one who sleeps in the basement
05:38:10*NibblePuffin used to live in a basement ^^
05:38:24*NibblePuffin is not used to being NibblePuffin yet.
05:39:53BytePuffinOddly enough, the only context in which I've heard "nibble" used is in networking
05:40:17NibblePuffinI've never actually heard it used, except pedantically. I.e. "Did you know nibble exists?"
05:41:03BytePuffinMostly, I heard it when helping someone (who was much more experienced than me) develop a custom beta minecraft server in python.
05:41:15BytePuffin*minecraft beta
05:41:38NibblePuffinInteresting
05:42:32BytePuffinAfter that project, I never looked at minecraft the same way again (and had to stop playing it for various personal reasons)
05:42:46BytePuffinIt's a nice concept but... poorly executed, to say the least.
05:45:54NibblePuffinMy own game deals with a very large number of voxels. It's not perfect, but I'd say I do a better job at moving them around efficiently than Minecraft does with its blocks.
05:47:30BytePuffinNibblePuffin, for my sanity, and your health, please make any networking packets easy to parse, especially if they contain variable length data types (eg, strings)
05:47:44*NibblePuffin is now known as Dirkson
05:47:51*BytePuffin is now known as Varriount
05:48:29Varriountnull terminated strings are a pain to parse from a socket stream.
05:49:12DirksonVarriount: And potentially unsafe! No, I implmented length-prepended strings. Strings shorter than 255 in a char, stringers longer in a short int. Very long strings haven't come up yet.
05:50:36DirksonI abstracted away packing and unpacking data into packets via some nice functions. Init a simple counter variable, pass the data to some special functions, and the data is packed into your packet. Do the reverse, and the data is unpacked.
05:51:06DirksonThe system is pretty handy, although I did have to deal with pointers in some strange ways to make it work out in C.
05:52:32VarriountDirkson, read this (written by that much more experienced person I mentioned.) -> http://corbinsimpson.com/entries/take-a-bow.html
05:52:50VarriountBeware... BeWaRe!
05:54:31DirksonVarriount: *looks* That'd probably be something at the enet layer... But considering that enet packets consist mostly of udp datagrams, I don't expect this to be a problem.
05:55:26VarriountJust beware of thread-per-connection design
05:55:39DirksonI don't do that either : )
05:56:24DirksonThe main server uses, I think, one thread currently. The clients use 2 or 4 threads, with only one of those threads capable of networking.
05:56:50*Varriount claps in appreciation
05:58:36DirksonHonestly, the whole "Spawn multiple threads in response to load" thing was not the way I thought to approach threading. My problem is *mostly* separatable into multiple portions that can work on hunks of ram on their lonesome, so I just set up multiple threads with their own loops. It doesn't balance as nicely as the response-to-load style threading, but it also doesn't fall prey to some of the problems I
05:58:38Dirksonhear about.
05:59:23VarriountIt also sounds like a lot less hassle when it comes to situations such as threads interacting with each other.
05:59:23DirksonI.e. I only ever spawn new threads at the start of the program, where I spawn exactly the number of threads as there are physical cores.
05:59:57DirksonAye. The few situations in which threads /do/ need to interact are a little tricky.... Buuut I only have like 4 mutexes, and they rarely run into issues these days.
06:00:21VarriountAs another (much more experienced) friend of mine once grumbled - "Threading is a dark art.."
06:00:27DirksonI did have to do some tapdancing to make sure I wasn't fuddling around with the part of the memory that gets randered *while* it was being rendered.
06:00:38Dirkson*rendered
06:00:48DirksonOne of these days I will learn to type. But it will not be this day!
06:01:32VarriountAh, I've always wondered what would happen if you loaded a new texture into an area of memory used by an old texture.
06:01:57DirksonDepends!
06:02:02VarriountOh?
06:02:21DirksonI don't use textures like normal people - Everything is voxel based, though, so I have a fake "texture" I use to store the voxel data.
06:02:38VarriountThrifty
06:04:47DirksonThat texture goes through a couple stages - I first need to fill it up with stuff in system-ram. Then I need to get it on to the gpu. Then I need to render with it. If I make changes while it's in the fill-up stage, random large sections of ram get corrupted - Almost always a crash, since that's a core part of my program. If I make changes while it's uploading, you generally get mostly-ok data, most of the
06:04:50Dirksontime... and then certain frames where all hell breaks loose, and most of the data contained in the textures gets rendered as random data. Sort of like you malloced a big bunch of data, then tried to read it out.
06:05:58DirksonAnd I can freely change the texture on the system-side once it's uploaded to the gpu - Then the gpu has its own copy, and I don't need to worry about it : ) Opengl doesn't allow me to render /during/ the upload, so that problem can't happen.
06:06:15*BitPuffin quit (Ping timeout: 260 seconds)
06:06:20VarriountMulticolored pixels/texture regions?
06:06:32DirksonBasically, yes : )
06:06:51DirksonAlthough I also store /location/ in textures, so that goes wild for me too.
06:06:59VarriountOuch
06:07:12DirksonOn the positive side, it's VERY obvious when this has happened :D
06:07:27DirksonOh, I think I have screenshot of just that happening. Hold on a tick.
06:09:18DirksonVarriount: http://media.indiedb.com/images/games/1/16/15558/beautifulerror.png - The color data got messed up. I forget what exactly caused the lines. This was something very early in development, I think it was some sort of mass render test.
06:09:38DirksonVarriount: And this is what I do, in case you missed the earlier link: https://www.scrumbleship.com/
06:09:51Dirkson(I.e. That's what it's SUPPOSED to look like :D )
06:10:01VarriountI saw it. If I have the time (and the money) I plan to buy it.
06:11:03DirksonMuch appreciated!
06:11:10VarriountEven if I don't play it, there's a chance my siblings will.
06:11:15Dirkson*nods*
06:12:18VarriountBy the way, that is a pretty beautiful error. I'm tempted to use it as a desktop background.
06:12:31DirksonFeel absolutely free : )
06:13:21VarriountAnyway, sorry to have to go, but I must get to sleep. I have classes in.. about 9 hours
06:13:27DirksonSleep well!
06:13:39*Varriount is now known as Varaway
06:24:19*DAddYE joined #nimrod
06:31:31*DAddYE quit (Ping timeout: 272 seconds)
06:41:39*Endy joined #nimrod
07:54:22*Associat0r joined #nimrod
07:54:22*Associat0r quit (Changing host)
07:54:22*Associat0r joined #nimrod
07:55:11*DAddYE joined #nimrod
07:56:37*tortue_ joined #nimrod
08:00:35*Araq_ joined #nimrod
08:36:54*wlhlm joined #nimrod
08:57:31*DAddYE quit (Remote host closed the connection)
09:15:36*zahary_ joined #nimrod
09:31:58*q66 joined #nimrod
09:38:14*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258])
11:15:12*[1]Endy joined #nimrod
11:19:25*Endy quit (Ping timeout: 272 seconds)
11:19:26*[1]Endy is now known as Endy
11:28:47*faassen joined #nimrod
11:40:12*Araq_ joined #nimrod
11:42:53*Araq_ quit (Client Quit)
12:39:03*jamil_1 joined #nimrod
12:41:38jamil_1hi all, is it possible to create algebraic datatypes (ADTs) like in haskell ? e.g data Option t = None | Some a
12:54:09*Ricky_Ricardo joined #nimrod
13:28:27*OrionPK joined #nimrod
13:44:38*faassen left #nimrod (#nimrod)
13:46:23*OrionPK quit (Quit: Page closed)
13:50:11*Ricky_Ricardo quit (Quit: laptop[lid].close)
13:51:44*Ricky_Ricardo joined #nimrod
14:02:41*Ricky_Ricardo quit (Quit: laptop[lid].close)
14:20:38*wlhlm quit (Ping timeout: 264 seconds)
14:37:20dom96jamil_1: I think you can get pretty close with object variants.
14:40:54jamil_1dom96: I have something compiling here: http://paste.ubuntu.com/6289360/
14:41:19jamil_1dom96: but can't instantiate a value of type TOption[T]
14:41:33dom96Replace the 'empty: void' with 'nil'
14:41:50*gdos quit (Ping timeout: 240 seconds)
14:42:36dom96You are close. You should then be able to use it as: TOption(kind: Some, value: x)
14:42:54dom96You can create constructor procs for Some and None
14:43:08jamil_1with var a = TOption(kind: Some, "Hello")
14:43:08jamil_1I get error Error: object constructor needs an object type
14:43:29dom96it needs to be 'value: "Hello"'
14:43:44dom96Here is an example of a Maybe type: https://github.com/fowlmouth/nimlibs/blob/master/fowltek/maybe_t.nim
14:44:14dom96it's done a bit differently it seems
14:44:46jamil_1dom96: yep, not as disjoint union type
14:45:09jamil_1var a = TOption(kind: Some, value:"Hello") still gives the same error
14:45:34dom96But yeah, it should give you an idea of how to do it. It's up to you how you want to do it.
14:46:54dom96ahh, you need to give it the type of 'T' explicitly.
14:47:00dom96var a = TOption[string](kind: Some, value: "Hello")
14:47:20*Ricky_Ricardo joined #nimrod
14:48:09jamil_1dom96: oh, I though it would infer it. But it works now :)
14:49:30jamil_1dom96: also how can I instantiate with None ?
14:49:48*Ricky_Ricardo quit (Client Quit)
14:50:42*gdos joined #nimrod
14:50:57dom96jamil_1: TOption[void] should work
14:53:56jamil_1dom96: TOption[void](kind: None) doesn't work
14:54:24dom96Works for me.
14:54:42dom96which version of Nimrod are you using?
14:54:58jamil_10.9.2
14:55:26dom96That may be why. I suggest using the github version.
14:55:58jamil_1umm build it locally ?
14:56:20dom96yeah
14:56:26dom96it's easy
14:57:59dom96you can also download a pre-built binary from nimbuild
14:58:25jamil_1where is nimbuild ?
14:58:58jamil_1or perhaps `what`
14:59:17jamil_1a build server ?
14:59:22dom96Tell me what OS/CPU architecture you're on and i'll give you a link
14:59:58jamil_132-bit windows 7
15:00:27dom96http://build.nimrod-code.org/commits/windows-x86/nimrod_bb6a172a2db8.zip
15:02:06jamil_1dom96: thank you! I will get back after trying out with the new version
15:03:24dom96no problem :)
15:17:10jamil_1ok TOption[void] is compiling now
15:17:14jamil_1but I have new issue
15:18:09jamil_1here: http://paste.ubuntu.com/6289529/
15:18:38jamil_1TList[string](kind: NonEmpty, head: "hello", tail: nil) works fine
15:19:15jamil_1but TList[void](kind: Empty) gives me: Error: internal error: genTraverseProc()
15:19:58dom96looks like a compiler bug then :\
15:23:43dom96yeah, please submit a bug report on Github
15:23:45jamil_1I guess I should contribute to test suite :]
15:25:48dom96if you're lucky maybe Araq will fix it for you today :)
16:13:29*wlhlm joined #nimrod
16:13:52Varawayjamil_1, if your'e up to building nimrod, you could always build it in debug mode, so you can get more information about the error.
16:13:59*Varaway is now known as Varriount
16:24:14*fowl joined #nimrod
16:36:49*gdos quit (Read error: Operation timed out)
16:39:39*gdos joined #nimrod
16:46:46*Hannibal_Smith joined #nimrod
16:54:45fowlhi
16:55:07dom96hey fowl
17:07:37NimBotAraq/Nimrod master 874bef3 Dominik Picheta [+0 ±4 -0]: Made TSocketHandle distinct and fixed problems it caused for SSL.
17:07:40*Kelet quit (Quit: Words do not express thoughts very well.)
17:11:38*MFlamer joined #nimrod
17:12:05MFlamerHi all
17:12:22wlhlmhi, MFlamer!
17:13:00dom96hello MFlamer
17:14:19*DAddYE joined #nimrod
17:14:34*DAddYE quit (Remote host closed the connection)
17:15:09*DAddYE joined #nimrod
17:15:33*DAddYE quit (Remote host closed the connection)
17:15:52*DAddYE joined #nimrod
17:16:05*Associat0r quit (Quit: Associat0r)
17:19:32*OrionPK joined #nimrod
17:19:56dom96OrionPK: You should be able to compile babel now.
17:24:25OrionPKdom96 cool, openSSL fixed?
17:24:32dom96yes
17:25:02OrionPKcool
17:25:20OrionPKI'll give the other issue a shot now that that's building on this machine
17:25:39OrionPKactually
17:25:40OrionPKlib\windows\winlean.nim(395, 38) Error: undeclared identifier: 'TSocketHandle
17:26:39*zahary quit (Ping timeout: 260 seconds)
17:27:14DirksonAlthough you guys are probably talking about openssl for interfacing with existing websites, if you ever feel like writing a wrapper for a cool cryptography library, I fell in love with this one when I used it on another project: https://github.com/jedisct1/libsodium
17:27:36dom96OrionPK: bah, that's what happens when I don't cross-compile for Windows
17:28:16*zahary joined #nimrod
17:30:26NimBotAraq/Nimrod master ec63966 Dominik Picheta [+0 ±2 -0]: Fixed socket compilation problems on Windows.
17:30:33dom96OrionPK: Hopefully will work now
17:31:08Varriountdom96, Why is it that the builder crashes when you send out a new update?
17:33:32dom96Varriount: No idea. What's the traceback?
17:35:38VarriountNothing, I get a segfault/crash
17:35:52VarriountIt happens after the builder has recieved a second request to update
17:36:27VarriountLet me get one of the builder's running in GDB, and inspect the dump windows made.
17:38:39OrionPKdom96 ???(???, ???) Error: type mismatch: got (cuint, cuint) but expected one of: winlean.==(x: TSocketHandle, y: TSocketHandle): bool
17:39:39dom96'???' 0_o
17:40:39VarriountProbably an optimized away line number.
17:40:55dom96gah, is there no `==` for cuint?
17:40:59VarriountTry compiling with --debuginfo --linedir:on
17:41:49dom96OrionPK: are you on 32bit?
17:42:24OrionPKI am
17:42:32OrionPKat least gcc is 32 bit
17:43:36dom96try adding 'import unsigned' into winlean
17:47:52OrionPKyeah, that does it
17:48:17*dom96 wonders if Araq will kill him if he adds that to winlean
17:49:02Varriountdom96, what are you trying to do?
17:49:08OrionPKand babel builds now as well
17:49:54dom96Varriount: SOCKET is unsigned int on Win32
17:50:32VarriountSOCKET, or TSocketHandle?
17:51:05dom96SOCKET is TSocketHandle.
17:51:16dom96SOCKET in the winsock2 header.
17:51:18Varriountdom96, It's not an int
17:51:24VarriountIts a pointer to an unsigned long
17:51:36dom96only on 64bit
17:51:56Varriountdom96, the size of a pointer on windows is always 32 bits
17:52:14VarriountWait, no, my mistake
17:52:26Varriount*looks up type information*
17:52:46dom96https://gist.github.com/dom96/f3bc533ac151d528e65f
17:52:49dom96That's from winsock2.h
17:52:56Varriounthttp://stackoverflow.com/questions/384502/what-is-the-bit-size-of-long-on-64-bit-windows
17:53:21Varriountdom96, what datatype are you using to store the socket handle?
17:53:39OrionPKjust confirmed asyncio httpserver not working on my work computer as well
17:54:07VarriountAlso, as long as you don't directly manipulate the handle, you can store it in an signed data type
17:54:09dom96Varriount: cuint on 32bit, int on 64bit
17:54:43dom96dunno, maybe it's fine to have it as int for both but that's not how the header defines it.
17:55:29Varriountdom96, use winlean.TSocketHandle
17:55:47VarriountI think
17:55:54dom96Varriount: What? I changed TSocketHandle to that.
17:56:09Varriount-_-
17:56:28VarriountI'll talk to you in about an hour, I have algebra to do.
18:00:15*brson joined #nimrod
18:10:55*zahary quit (Ping timeout: 268 seconds)
18:11:12*zahary joined #nimrod
18:11:31MFlamerHow's it going zahary?
18:17:14VarriountOk, I have 10 minutes
18:17:37Varriountdom96, are you casting the socket to another type somewhere?
18:17:59dom96I don't think so, why?
18:18:36VarriountCasting might bork up the socket handle
18:18:41*tortue__ joined #nimrod
18:21:11Varriountdom96, I think I know what the problem is.
18:21:36VarriountWhen I created the TSocketHandle type, I wasn't able to verify that the entire stdlib switched to using it.
18:21:50*tortue_ quit (Ping timeout: 240 seconds)
18:22:09dom96The only current problem is the use of unsigned int's.
18:22:22*DAddYE quit (Remote host closed the connection)
18:22:40Varriount?
18:22:45dom96I know that Araq doesn't like that so I don't want to import unsigned into winlean which is imported by 99% of modules.
18:22:58VarriountWhy is it needed?
18:23:54dom96As I said, I looked at how SOCKET is defined in winsock2.h, its type is different for 32bit and 64bit windows.
18:24:32Varriountdom96, tell me, what is the difference, on the memory level, of say, an integer and an unsigned integer?
18:25:03VarriountAs in, how much memory is allocated for each?
18:26:38dom96There is no difference.
18:26:43VarriountExactly.
18:27:04VarriountUnless you plan on directly manipulating handle data, you don't need to store it as an unsigned int
18:29:54Varriountdom96, looking at the winlean module, the TSocketHandle type is an int.
18:30:18VarriountWhich, for nimrod, always means a 32 bit int on a 32 bit processor, or a 64 bit int on a 64 bit processor
18:30:23Varriountregardles of OS
18:30:32dom96It still seems incorrect though. The socket handle on Windows can never be negative as far as I can tell. I suppose the likelihood of it overflowing is low.
18:30:59Varriountdom96, the concept of "negative" is relative
18:31:19Varriountesentially, an int is a range of values.
18:31:36Varriountfor unsigned ints, "zero" is the lowest value
18:31:55Varriountwhile for signed ints, "zero" is the middle value in that range
18:32:26VarriountAnyway, have to go. I'l be back on in about 45 minutes.
18:35:38fowlno, 0 is 0
18:45:22*tortue joined #nimrod
18:48:21*tortue__ quit (Ping timeout: 245 seconds)
18:53:05Varriountdom96,
18:53:06Varriountc:\64\nimrod\lib\wrappers\openssl.nim(269, 5) Hint: 'openssl.CRYPTO_set_mem_functions(a: pointer, b: pointer, c: pointer)' is declared but not used
18:53:06VarriounttNotUsed]
18:53:06Varriountc:\64\nimrod\lib\pure\sockets.nim(318, 15) Error: type mismatch: got (PSSL, TSocketHandle)
18:53:06Varriountbut expected one of:
18:53:07Varriountopenssl.SSL_set_fd(ssl: PSSL, fd: cint): cint
18:53:17Varriountchange fd to TSocketHandle
18:53:31Varriountand the return type to TSocketHandle
18:54:03VarriountThat's my best guess
18:57:02OrionPKinteresting project - someone should port it to nimrod :P - https://github.com/quarnster/lime
18:57:06dom96I've already done that. Well, changing the return type is not correct.
18:57:22dom96I changed 'fd' to TSocketHandle though
18:57:26VarriountAnd what error results?
18:57:52dom96hrm? There is no error.
18:58:08VarriountThen... there's no problem?
18:58:33dom96...
18:59:31*Varriount is confused
18:59:42dom96Yeah, sure. There isn't.
19:00:54dom96It's more of a dilemma.
19:01:00Varriount?
19:01:34*DAddYE joined #nimrod
19:01:47dom96But you've already argued your point, TSocketHandle should be 'int' for both 32bit and 64bit.
19:02:21VarriountSorry if I came off as annoying/bitchy/mean
19:02:52dom96nah, don't worry.
19:03:45dom96I think you're right.
19:10:05fowlaporia needs an icon
19:10:23dom96Aporia needs a lot more than an icon :\
19:11:11VarriountAporia just needs to integrate with other IDE's
19:11:26VarriountIt's the law of convenience.
19:11:45Hannibal_SmithEclipse plugin? :-P
19:12:10VarriountAnd/Or vim/emacs/sublime text/notepad++/etc
19:12:33VarriountPeople dislike having to use different editors for different languages (with some exceptions)
19:12:49VarriountEclipse is a good example of this.
19:13:20MFlamerI vote Sublime. Eclipse is too big and heavy
19:14:14MFlamernot that anyones asking :-)
19:18:58*tortue left #nimrod ("Gone")
19:19:33*sebcrozet joined #nimrod
19:32:36*DAddYE quit (Remote host closed the connection)
19:35:40OrionPKthe only issue w/ sublime is its' not free or open source
19:35:49OrionPK(but I still love it)
19:36:11*DAddYE joined #nimrod
19:36:51fowli like how its nagware
19:36:56fowlyou dont see that these days
19:44:29*Hannibal_Smith quit (Quit: Sto andando via)
20:07:38fowlhey wasnt there an mitems iterator for seqs
20:07:50fowlmitems[T](some: var seq[T]): var T
20:08:36NimBotAraq/Nimrod master b1a7acf Dominik Picheta [+0 ±1 -0]: Fixed sockets on Win32.
20:10:48*Associat0r joined #nimrod
20:10:48*Associat0r quit (Changing host)
20:10:48*Associat0r joined #nimrod
20:20:28OrionPKdom96 I think babel needs a gitignore for nimcache
20:20:42OrionPKand babel/babel.exe :0
20:22:07dom96I just remember not to git add it :P
20:24:49OrionPKjust clutter
20:24:56*fowl quit (Ping timeout: 256 seconds)
20:24:59*Endy quit (Ping timeout: 272 seconds)
20:25:16dom96git status -uno :P
20:34:23VarriountYay, builder crashed.
20:34:36VarriountNow I get to look at all the squishy insides.
20:35:53*BitPuffin joined #nimrod
20:36:03Varriountdom96, lookee -> https://gist.github.com/Varriount/7126214
20:36:48VarriountIt's right after a new thread is created.
20:37:51dom96Looks like a Nimrod bug.
20:38:21VarriountUnfortunately, I don't know how to get a more specific stack trace.
20:38:49VarriountI'l try compiling the compiler in debug mode as well.
20:40:51*fowl joined #nimrod
20:42:35fowlverlet physics port https://gist.github.com/fowlmouth/7126203
20:43:21VarriountAnyone care to explain why "the smaller the stdlib, the better"?
20:44:55dom96Varriount: Compiler in debug mode will only help you with compiler crashes.
20:44:58fowlVarriount, only a few people have the ability to merge changes into the main repo, having libraries outside the stdlib means the language developers can focus on the language and not the libraries
20:45:54VarriountThen... who is managing the libraries?
20:46:29dom96It also means that less libraries depend on the release cycle of Nimrod. They can have independent release cycles which is useful for some stuff like wrappers which I continually have the need to update.
20:46:41fowlthe community
20:47:05Varriount-_- Can you be a bit more specific?
20:47:23AraqVarriount: as long as the same people manage the libs there is not much benefit IMO; however I can easily give write access to the "SDL guy" (if there is one) without giving him access to everything
20:47:39Araqalso more github projects mean more awareness
20:52:11*brson quit (Ping timeout: 248 seconds)
20:54:24sebcrozetHi!
20:54:53dom96hello sebcrozet!
20:55:21sebcrozetI’m just playing a bit with nimrod.
20:55:25sebcrozetLooks fantastic so far.
20:55:28Varriountdom96, Araq, windows reports that the builder crashed due to an Access violation, or exception c0000005
20:55:49sebcrozetIs it possible to make a template generate a new type?
20:55:53Araqhi sebcrozet, welcome
20:56:18Araqit's possible, yes
20:57:37sebcrozetah, I tried something like: `template declare_the_type() : stmt = type Toto = tuple[a: int] ` (with the correct indentation)
20:57:44sebcrozetAnd it does not seem to work :(
20:58:35Araqmake the template {.dirty.}
20:58:52VarriountAnd immediate?
20:59:40sebcrozetAraq: it works with dirty… What does that mean?
21:00:10Araqit means that declared identifiers can escape the template definition
21:00:55sebcrozetI see.
21:01:10Varriountsebcrozet, any specific reason you're using a template to generate a type, instead of type class conditions?
21:03:05sebcrozetVarriount: I’m trying to generate a Vector type with a specific dimension. For example I want the `declare_vec(4)` template instanciation to decrale the type `Vec[N] = tuple[x: N, y: N, z: N, w: N]`.
21:03:42sebcrozetVarriount: In fact, I’m not sure this is possible with templates.
21:03:59VarriountSounds quite possible.
21:04:10Araqsebcrozet: nimrod's templates are a form of a macro, you likely want to use generics instead
21:04:46DirksonAraq: Hi! Can I put in a request to accept tabulators as a valid method of spacing? Quite a large number of people, myself included, are pretty solidly married to using the things, and it definitely slows adoption. Tabulators, used properly as left-side indentation only, also have no negatives when compared to spaces, although mixed tabulators/spaces in a single file obviously has issues.
21:04:49*MFlamer quit (Ping timeout: 268 seconds)
21:05:21VarriountAraq, how would he have a generic generate multiple attributes?
21:06:29dom96Sounds like he needs a macro for that.
21:06:44Araqah I misunderstood then
21:07:34sebcrozetCan generics be parametrized with integrers? (in wich case I might be able to do something like: Vec[N, dim] = [0..dim, N])
21:08:15AraqDirkson: you might get the feature but most code I look at uses tabs as an compression technique for 8 spaces so that I can't set tabs to anything except 8
21:08:38Araq4 spaces indentation, but 8 spaces are "compressed" to a tab is VERY common
21:08:50AraqI think it's some braindead emacs setting
21:09:05sebcrozetdom96: macro is the AST-generation thing, right?
21:09:23DirksonAraq: Interesting. I'm used to thinking of tabs as variable spacing - I.e. "Indent this bit, but let the developer's text editor figure out what it actually looks like"
21:09:27dom96sebcrozet: yep
21:09:36Varriountsebcrozet, macros are a lower level form of templates.
21:10:07VarriountAraq, could Dirkson use source code filters (http://nimrod-code.org/filters.html) to achieve what he wants?
21:10:33dom96sebcrozet: Arrays accept a range, you could use that if you don't want to mess with macros.
21:10:54AraqVarriount: huh, that might work indeed :-)
21:11:13*Varriount likes reading docs.
21:11:15Araq#! replace("\t", " ")
21:11:30AraqI don't think this has ever been tested though :P
21:12:08sebcrozetdom96: if I understand correctly, I need macros here because the generation of type members (x, y, z, w, etc) requires a loop (with a number of iterations depending on the vector dimension) which cannot be done with "normal" templates ?
21:12:37Araqsebcrozet: that is correct
21:13:03sebcrozetok, I’ll try that then.
21:13:11sebcrozetThanks.
21:13:34DirksonAraq: For a simple test, appears to work like a *charm*
21:14:15Varriount:D
21:14:23sebcrozetAbout Nimrod itself, what is its current development status (how far from 1.0, how big is the comunity)?
21:14:24fowlhaha
21:14:48DirksonAraq: That solves the need for me, but I have seen other people complaining about the tab thing. Can I push ya' to include that little snippet in the tutorial, as an option for people?
21:15:45Araqsebcrozet: the community is growing, though not rapidly; version 1.0 is planned for the end of 2014
21:15:45OrionPK:set expandtab
21:15:48fowlDirkson, echo "\t\t" and see if it echos 4 spaces
21:16:01Dirksonfowl: Good idea
21:16:37Dirksonfowl: inexplicably no.
21:16:53OrionPKwh dont you want to uses spaces, dirkson?
21:17:00sebcrozetAraq: is the compiler stable enough to start a medium-sized project (involving a lot of math computations) ?
21:17:14DirksonOrionPK: It helps, but it doesn't fix the arrow keys, and doesn't work in all editors.
21:17:17VarriountDirkson, change the " " to " "
21:17:36OrionPKwhat editors?
21:17:38Araqsebcrozet: sure, can't see why not
21:17:50OrionPKnotepad?
21:17:51VarriountBy the way, is there a escape code for spaces?
21:18:00DirksonOrionPK: Dunno! Whatever other people use instead of vim. Sticks and rocks?
21:18:09VarriountSublime Text
21:18:10Araq\x20 Varriount
21:18:16VarriountDanke
21:18:22OrionPKVarriount sublime handles spaces and tabs pretty well
21:18:32OrionPKthe question is what editors dont
21:18:35Araqkeine Ursache
21:19:35dom96I think the biggest annoyance that spaces cause for tab people is that they have to press the arrow keys too much.
21:19:36OrionPKif anyone else collaborates with someone using tabs to indent.. ugh
21:19:38sebcrozetAraq: ok. If my vector thing works, I will thy to find some time to port some of my Rust projects to Nimrod.
21:19:55OrionPKdont use the arrowkeys dom96 :P
21:19:59Araqsebcrozet: we have vectors in the stdlib, you know
21:20:27Araqunfortunately the docs are not up to date because nimbuild has some issues
21:20:34OrionPKI use up/down arrowkey, home/end, and sometimes ctrl+left/right arrowkeys
21:20:43dom96same
21:21:03Araqwell I can live with allowing tabs instead of spaces if the file then only uses tabs
21:21:16Araqbut the tab people like "tabs for indentation, spaces for alignment"
21:21:34OrionPKew
21:21:42Araqwhich I've yet to see work in practice and which is a different beast to handle
21:21:50sebcrozetAraq: ah. just found the "basic{3,2}d.nim" files.
21:21:56*BitPuffin quit (Quit: WeeChat 0.4.2)
21:21:58DirksonI'm not a big fan of that either. But then, I rarely do much in the way of alignment.
21:22:05sebcrozetAraq: though those are not sufficient for my projects :(
21:22:44*BitPuffin joined #nimrod
21:22:45VarriountI'm too lazy to align things. Besides, it gets all messed up as soon as you refactor or rename.
21:23:05OrionPKform > function :P
21:23:19OrionPKmake code pretty, then make it work lol
21:23:27Dirksondom96: And yeah, you're entirely correct - When I'm in insert mode in vim and just want to move around a couple lines, I find arrow keys faster and easier than switching to command mode. I really like tab's ability to instantly jump levels of indentation with one left/right arrow.
21:23:29Varriountform = function-1
21:24:25Araqsebcrozet: BitPuffin has some vector/matrix stuff too, using generics but not a variable number of dimensions I think
21:24:41BitPuffinsure do
21:24:54BitPuffinAraq: it is variable dimensions
21:24:56OrionPKdirkson I dont really understand what you get by being able to put your cursor in the middle of some whitespace
21:25:17OrionPKwhy wouldnt you want to go to either side of the whitespace, not the middle
21:25:25OrionPKi.e. use home/end or ctrl+arrow
21:25:29dom96OrionPK: I can see it being useful when you want to insert some statement at that indentation level.
21:25:43OrionPKthats what auto-indent is for
21:25:47OrionPKand tab/shift+tab
21:25:57OrionPKthe key not the char
21:26:10sebcrozetAraq: ok, I’ll take a look at that.
21:26:49BitPuffinI should at least finish up the matrix stuff and release 0.2
21:26:53BitPuffinit's way overdue
21:26:55DirksonOrionPK: Well, imagine I wanted to edit the start of a line a couple lines up, a couple of indents out. In insert mode with tabs, that's up left left up. Without insert mode, it's escape-home-up-up-^ It's only a key, but doesn't involve any state changes and seems more intuitive, so I got really used to it.
21:27:01BitPuffinbut I'm currently focusing on my drivers license
21:27:09sebcrozetAre every procedure parameters passed by-ref ?
21:27:41sebcrozetBitPuffin: what do you mean by "variable dimensions" ?
21:27:55OrionPKDirkson if I did that, I would hit home+enter+enter+up+up on the current line
21:27:56Varriountsebcrozet, compiler determines whether to pass procedures by ref or copy automatically
21:28:13OrionPKand it would be at the same indent level as the current code
21:28:17BitPuffinsebcrozet: that you can set an arbitrary dimension when you create the matrix, so it's not hardcoded
21:28:18Varriountsebcrozet, although you can explicitly tell it whether to pass by reference or copy
21:28:21*MFlamer joined #nimrod
21:28:58sebcrozetVarriount: how does it make the decision? (and how can y force the by-copy or reference argument passing?)
21:29:00dom96OrionPK: Auto-indent? How would it know where I want it? The language is indentation based :P
21:29:21OrionPKdom96 of course autoindent
21:29:57Varriountsebcrozet, I have no idea how it does it automatically.
21:29:58dom96Say I am below an if block, how would it know whether I want my statement inside the if block or outside its scope?
21:29:58sebcrozetBitPuffin: Is it your github "linalg" project?
21:30:03OrionPKdom96 even aporia has autoindent to some degre
21:30:22VarriountHowever, you can make it force to pass a reference by passing a reference type.
21:30:31OrionPKdom96 how would the editor know?
21:30:33sebcrozetBitPuffin: oh, it is in bitbucket now…
21:30:36DirksonOrionPK: Er... Ah, I see. You mean escape+home+up+up+up+enter+insert ? I didn't actually know enter did that in command mode, that's rather neat... Buuut it's still more than four keys, and isn't as intuitive
21:30:52BitPuffinsebcrozet: yes it's on bitbucket
21:30:53fowljesus
21:31:01Araqsebcrozet: the compiler decides for you and knows better than you in general, you have to use 'var' to gain write access
21:31:01fowlDirkson, thats like a street fighter combo
21:31:08Dirksonfowl: I know, right? :D
21:31:09dom96OrionPK: yes, how would it?
21:31:13OrionPKlol
21:31:14BitPuffinsebcrozet: if you grab the latest hg version its got some matrix stuff, but it's unfinished and subject to change
21:31:37Varriountsebcrozet, type TVector = tuple[x, y:int]; PVector = ref TVector
21:31:37OrionPKdom96 always assumes same scope as you're in, until you shift+tab
21:31:45Dirksonfowl: OrionPK codes by hadouken ^.^
21:31:56dom96OrionPK: ahh, now I see what you mean.
21:32:08Varriountsebcrozet, and when you pass PVector, you pass a reference.
21:32:11OrionPKI have good muscle memory :p
21:32:14dom96Shift+tab definitely helps.
21:32:24sebcrozetBitPuffin: I’ll take a look at your lib. Do you accept contributions?
21:32:27OrionPKbut I dont use vim anymore, I use sublime/aporia for nimord
21:32:28VarriountBye guys, I have to take siblings to events, do homework, etc.
21:32:30OrionPKnimrod*
21:32:43BitPuffinsebcrozet: yeah kind of, but only if it's the way I want it to be lol :P
21:32:45sebcrozetVarriount: Bye, and thanks for the help :)
21:32:56VarriountAraq, I'm probably not going to be on much until next Wednesday, I have tests coming up.
21:33:00BitPuffinsebcrozet: But I'll probably fix it up within weeks
21:33:10*Varriount is now known as Varaway
21:33:12dom96Varriount: bye! Good luck with your tests :)
21:33:15OrionPKthere's a lot less 'mode switching' in sublime
21:33:19AraqVarriount: thanks for telling me, good luck
21:34:00*cespare quit (Ping timeout: 240 seconds)
21:35:48fowlnow with a picture https://gist.github.com/fowlmouth/7126203
21:36:12sebcrozetBitPuffin: Ok. It will take me some time to learn nimrod anyway. I still have figure out if I prefer Nimrod or Rust :P (I already wrote a lot of Rust code).
21:36:36BitPuffinsebcrozet: Okay! Well then maybe I'll fix it up by the time you decide that nimrod is superior :P
21:37:43sebcrozetDoes anybody else have some experience with Rust here?
21:37:55fowli tried to read some rust once
21:37:59fowlit made my eyes water
21:38:10fowlthe doctor told me to stay away from it..
21:38:10BitPuffinsebcrozet: I have minor
21:38:30dom96I tried compiling the Rust compiler once, I gave up after waiting 40 minutes...
21:38:57sebcrozetYeah, the first compilation can take hours (they have to compile a customized LLVM).
21:39:18fowlwhy must it be customized
21:39:30sebcrozetNo idea.
21:39:49sebcrozetI dont know anything about the Rust compiler internals.
21:40:28sebcrozetbtw, Is there any full-time dev on Nimrod?
21:40:44Araqno
21:41:12sebcrozettoo bad :(
21:41:26BitPuffinthat's pretty much the advantage of rust
21:41:33BitPuffinit's got mozilla behind it
21:41:38reactormonknimrod foundation? ^^
21:43:03reactormonksebcrozet, yeah, we still have the hit-by-a-bus problem
21:43:21sebcrozetreactormonk: "hit-by-a-bus problem" ?
21:43:40BitPuffinsebcrozet: if Araq gets hit by a bus who saves nimrod
21:43:49Araqreactormonk: not really, zahary knows everything too
21:44:02reactormonkAraq, but would he take over?
21:44:02Araqbut he has even less time, so I guess that doesn't count
21:44:03BitPuffinthat's what I was thinking
21:44:11BitPuffinwell
21:44:19BitPuffintwo is not enough to solve the hit by a bus factor
21:44:36reactormonkand the single-name variables don't help either
21:44:54Araqwell Jehan on the forum is doing pretty well, I think he might know everything soon too
21:45:00OrionPKsingle character name variables?
21:45:11Araqreactormonk: the single-letter vars are irrelevant
21:45:13BitPuffinin the compiler
21:45:25BitPuffinAraq: not really
21:45:27sebcrozetwhat seems weird, is that even if Nimrod does not have full-time devs, I dont have the feeling it is less stable than Rust (though I did not try complicated things at the moment).
21:45:47BitPuffinsebcrozet: that's because rust is like 2 years old and nimrod is like 8 years old
21:46:03AraqRust is older than 2 years
21:46:09BitPuffinbut nimrod does have it fair share of bugs
21:46:14BitPuffinAraq: yeah it was a guesstimate
21:46:34Araqit started as a "one random guy implements a compiler" too
21:46:38*brson joined #nimrod
21:46:42*BitPuffin quit (Quit: WeeChat 0.4.2)
21:46:43Araqin 2008 I think
21:47:28*BitPuffin joined #nimrod
21:48:21AraqBitPuffin: the bugs are not really the problem, the problem is that every half-decent half-modern systems programming language needs TONS of features
21:49:10sebcrozetAraq: well I dont feel like Nimrod has a ton of features (neither does Rust).
21:49:19Araqhence the insanely long development times
21:49:51Araqsebcrozet: that's because many features are now taken for granted
21:50:11reactormonkcompilation to JS \o/
21:50:18sebcrozetAraq: possible.
21:50:39Araqnamed parameters, default parameters, generics, some form of meta programming, first class functions, closures
21:50:54Araqsome iterator abstraction
21:50:59Araqasync io
21:51:09BitPuffinAraq: Well yeah, and having lots of shit causes bugs, never said that bugs were the problem
21:51:26BitPuffinjust claimed that they exist
21:51:26Araqmultithreading
21:51:42reactormonkAraq, we have multithreading?
21:51:45*OrionPK quit (Ping timeout: 250 seconds)
21:51:50sebcrozetAraq: what I think I will like the most with Nimrod is the minimalistic OOP (I prefer procedural programming a lot, and every modern language seems to focus of OOP… this is kind of annoying).
21:52:02Araqyeah I know and I can only either implement new stuff or fix bugs :P
21:52:30BitPuffinreally though we need a foundation
21:52:58BitPuffinsome non coder people who market nimrod and comes up with a way to fund it
21:53:12Araqreactormonk: yes we do
21:53:56BitPuffinthe best way is to just make the language programmable clean and people can add features themselves
21:53:56reactormonkAraq, interesting.
21:53:59BitPuffinand we have macros
21:54:01BitPuffinso much is possible
21:55:28BitPuffinmaybe we're taking a too monolithic approach
21:56:22fowlhow so
21:56:53BitPuffinWell I mean like there is probably a handful of features that could be implemented in libraries
21:57:05BitPuffinlike threading etc
21:57:13Araqlol
21:57:18Araqdoesn't work
21:57:27BitPuffin"works" for C
21:57:30Araqnope
21:57:37Araqthere are papers about it
21:57:45Araqshowing that it really CAN'T work
21:58:12BitPuffinah
21:58:16BitPuffinwell you know more than I do
21:58:27BitPuffinit was just a suggestion
21:58:44Araqwe plan to have pattern matching as a macro
21:58:53sebcrozetgot to go. Thanks for the help and your friendliness :)
21:59:06Araqwhere is this macro? who writes it? Rust already has pattern matching! ;-)
21:59:34fowlshow an example of what the end code should look like and ill write it
21:59:55Araqmatch x:
22:00:19BitPuffinAraq: but is there a way to add them as guards to procs?
22:00:32*sebcrozet quit (Quit: Gone)
22:00:39Araqof Asgn(a, b+4): ...
22:00:43*BitPuffin quit (Quit: WeeChat 0.4.2)
22:02:54*OrionPK joined #nimrod
22:05:42*BitPuffin joined #nimrod
22:07:05AraqBitPuffin: proc p(){.m.} is transformed to
22:07:07Araqm:
22:07:09Araq proc p()
22:07:20Araqso you can use a macro to add guards
22:07:30fowlAraq, need a full example
22:07:39fowland we cant use _
22:07:42fowlwhich would be nice
22:08:11Araqfowl: '_' will be allowed soon
22:08:26Araqand there are tons of examples on the net
22:08:33BitPuffinAraq: ah cool!
22:09:55BitPuffinAraq: Possibly not the most elegant but it should do the job
22:11:34fowlAraq, im looking at rust tutorial, these examples are stupid
22:11:59BitPuffinAraq: By the way why are we allowing implicit casts in nimrod?
22:12:14fowllol why do you think that BitPuffin
22:12:20BitPuffinfowl: we do
22:12:29BitPuffinfowl: with different number types
22:12:31fowlthe only way something is implicit cast is if there's a converter for it, or literal numbers
22:12:40BitPuffinfowl: float + int = float
22:12:51fowlno, float + int literal = float
22:12:58BitPuffinah
22:13:08BitPuffinwell that's a pretty good compromise
22:13:20BitPuffinwell actually it is ideal
22:15:17fowland you know about converters right
22:15:42BitPuffinyeah
22:16:13BitPuffinbut I'm not sure I like them
22:17:11reactormonkBitPuffin, they're not really casts, + is defined for float,int int,int etc.
22:17:57BitPuffinreactormonk: well it's still relatively expensive to mix them right?
22:19:55*MFlamer quit (Ping timeout: 246 seconds)
22:21:28fowlAraq, invalid expression? https://gist.github.com/fowlmouth/80dd150d0f1d218aaba0
22:21:48fowloh is it because of the tuple syntax
22:21:55reactormonkBitPuffin, not too much
22:22:15BitPuffinreactormonk: well I mean compared to doing it with the same types
22:22:22fowlnvm it needed {.immediate.}
22:22:40fowlAraq, i have no idea how the end code should look
22:23:33fowlscan the of branches for identifiers, check if field == val for other fields, but the other field could be an ident variable
22:39:26fowlguess i could use definedInScope to determine that
22:46:58Araqfowl: it doesn't really matter, all it matters that we get pattern matching and somebody writes an article about it
22:47:14fowlit has to be useful
22:47:28fowli cant do var x = match(foo): \n of 1: ...
22:47:36Araqwell in fact ... the pattern matching language needs to be adapted to the tree
22:48:54fowlitd be more impressive if it could be accomplished with a macro
22:58:06DirksonComparing the tutorial for Nimrod to the one for Rust is absolutely hilarious. Most things in nimrod make some kind of *sense*. Araq, are you sure you don't need to add 4 different pointer reference/dereference symbols? :P
23:20:41Dirksonstdlib is rather large - Does nimrod contain any genercs for quad/octrees? I think I saw mention of a binary tree in there.
23:27:59*q66 quit (Quit: Leaving)
23:28:39fowli have a quadtree in fowltek
23:28:52DirksonLink? Mind sharing? : )
23:29:00fowlbabel install fowltek
23:29:07fowlgithub/fowlmouth/nimlibs
23:36:01*wlhlm quit (Ping timeout: 245 seconds)
23:36:14Dirksonfowl: I think I've got it ^^
23:36:42Dirksonfowl: Is there any documentation for the quadtree stuffs?
23:37:31fowlthere should be an example of use at the bottom of the code
23:38:44Dirksonfowl: The when isMainModule: stuff?
23:39:25Dirksonfowl: Considering that you use your own sdl2 module, I assume the stdlib sdl module in Nimrod is sdl1?
23:41:04fowlim notoriously bad at documenting but always include examples
23:42:20*xenagi joined #nimrod
23:46:40fowlDirkson, yes
23:51:26DirksonWoof. I am not used to reading this stuff yet.
23:56:37DirksonActually, no, I'm not sure my problem has to do with reading?
23:56:55DirksonI think my problem is the fact that the data is implicetly typed from something I can't see.
23:57:12Dirksoni.e: depthColors = [colGreen.toSDLcolor, colBlue.toSDLcolor, colYellow.toSDLcolor, colRed.toSDLcolor, colWhite.toSDLcolor]
23:57:32DirksonTo figure out what depthColors is, I need to figure out what colgreen.toSdlcolor is.