<< 27-02-2014 >>

00:00:01filwitor do you mean {noalias} doesn't lower to restrict, and therefor doesn't pass the hint onto the C compiler ?
00:00:24*Varriount__ is now known as Varriount
00:00:38zaharyfilwit: dunno, things like system.new are handled earlier in semIndirectOp
00:01:00zaharythey should be resolved to a concrete symbol or a nkSymChoice there
00:01:08Demosnoalias should be able to lower to restrict. but you may not always be able to use noalias even in cases where you could use restrict
00:02:09filwitzahary: thanks for the hints. though something really strange is happening when i use {.noinit.} (it never actually calls system.new() but seems to allocate memory without segfaulting, possibly due to undefined bahaviour.. still looking into it)
00:03:18filwitDemos: i see
00:15:29*zahary quit (Ping timeout: 240 seconds)
00:17:28*oxful joined #nimrod
00:19:07*EXetoC quit (Read error: No route to host)
00:19:09Demoshm is there a shortcut to defineing a typeclass that is everything except say arrays?
00:21:22*zahary joined #nimrod
00:21:33skrylar'Any'?
00:21:44skrylar(admittedly that doesn't exempt certain things)
00:22:58Demosyeah I have an ambiguity that I need to resolve
00:23:54skrylarDemos: what are you trying to do, overall?
00:25:31DemosI have proc foo[T](func: proc(ts: openarray[T]) and proc foo[T](func: proc(t: T)). I want the 2nd version to be called on stuff that is just one thing and the 1st to be called on arrays. I need the type of thing the array holds as well, so the first function can not just take stuff of typeclass array
00:26:18skrylaris there a particular reason you can't accept an openarray of a single element?
00:26:41*darkf_ joined #nimrod
00:27:12*Matthias247 quit (Read error: Connection reset by peer)
00:27:30Demosyeah the behavior is different, there is an array that is just passed to the ts arg in the first case and the func is called for each element in the 2nd
00:27:42*darkf_ is now known as darkf
00:27:47skrylarIt isn't what you were looking for, but I would suggest a template at that point
00:28:15skrylarit seems a lot easier to have a template do a compile-time check if you gave it a single entry and call the right private implementation
00:29:03Demoswell I am actually generateing a closure proc of type proc() that I am adding to a data structure
00:29:43fowlDemos, did you see doms closure macro
00:29:47Demosno
00:29:49Demoswhere is it
00:29:58fowlhttps://gist.github.com/dom96/9155536
00:32:50DemosI don't get it
00:36:37*zielmicha quit (Quit: Connection closed for inactivity)
00:38:46skrylarhm. i just realized i'm a derp.
00:39:42skrylarit never occurred to me to just use a bitwise not to flip bytes around when encoding them to a variable length format
01:08:38*r0b2 quit (Ping timeout: 264 seconds)
01:13:29*xenagi joined #nimrod
01:14:55*zahary quit (Ping timeout: 272 seconds)
01:16:01*r0b2 joined #nimrod
01:42:36*_jbe joined #nimrod
01:55:36*xenagi quit (Ping timeout: 240 seconds)
01:58:58*r0b2 quit (Ping timeout: 240 seconds)
02:00:11*DAddYE quit (Remote host closed the connection)
02:00:47*DAddYE joined #nimrod
02:00:53Demoswow gnome3 fails pretty hard when faced with a touch screen
02:05:20*DAddYE quit (Ping timeout: 265 seconds)
02:08:20*carum joined #nimrod
02:12:18*_jbe quit (Ping timeout: 245 seconds)
02:17:13*carum quit (Remote host closed the connection)
02:32:31*carum joined #nimrod
02:36:52*carum quit (Remote host closed the connection)
02:43:59VarriountDemos: I thought it was designed for a touch screen?
02:46:41DemosI think it was
02:47:12VarriountOn a tangent note, has anyone installed a linux distro on a windows surface?
02:47:14Demosbut like if I switch to firefox and then try and drag the FF window around with my finger my terminal comes back up!
02:47:41Demosnot me, but I seem to recall seeing it done
02:48:00Demosthe touch experience on linux is really bad though
02:48:10Demoseven compared to windows 7\
02:48:28VarriountI've heard that metro interface is useful on tablets.
02:49:18Demosyeah it is pretty nice on tablets, I dont really mind it on my desktop.
02:49:34DemosI found that setting the metro background to the same as my desktop background made it less jarring
02:50:09Demosyou should also be able to install android on a surface, but it would be android x86, with few apps
02:50:26VarriountI don't *use* the metro interface on my desktop, anymore than I used the start menu in windows 7
02:50:39VarriountIE, I only use the search feature to launch apps
02:51:50Demosyeah same here
02:52:19VarriountWhich is why I was so happy that unified search was brought back in 8.1
02:52:36Demossame here, that extra 1-3 keystrokes was annoying as hell
02:52:58VarriountDemos: So you are using VS to write nimrod?
02:53:30Demoswell I am writing nimrod on vim in linux right now. But yeah on my windows box I use VS
02:54:09VarriountWhy must Github's Atom Editor only run on Mac :<
02:54:26*Varriount doesn't have a Mac VM
02:55:07Demosspeaking of which, you should try and run my VS plugin, I will make a visx and upload it to skydrive. I want to be sure that the paths are sane and not pointing to VisualNimrod's source dir
02:57:48VarriountDemos: Ready and willing.
02:57:59VarriountWe IDE developers have to support one another.
02:58:02Demosyou got VS pro?
02:58:43VarriountDemos: I haven't managed to get a DreamSpark account verified.
02:58:48OrionPKVarriount it only runs on mac?
02:58:50OrionPKwhat?
02:59:42VarriountOrionPK: Thats what it says on the download page. PM me you email and I can send you an invite. (You too Demos , if your interested)
03:00:12OrionPKdid u get that? :P
03:00:39OrionPKnot sure if i can send private messages w/ familiar
03:01:13VarriountYep
03:01:14*DAddYE joined #nimrod
03:01:17DemosI did not, but I could just not know what I am doing
03:01:26OrionPKvarriount which message did u get
03:01:27VarriountSo.. you can send PM's, but not recieve/see them?
03:01:28Demosoh, plugins only work on pro or above
03:01:49VarriountOrionPK: I got you email.
03:01:54OrionPKok
03:03:06OrionPKmaybe the windows version just hasnt come out yet
03:03:30OrionPKVarriount thanks
03:03:38OrionPKI'll try it on my mac air
03:04:02VarriountOrionPK: Tell me how fast Atom is.
03:05:29*DAddYE quit (Ping timeout: 240 seconds)
03:08:01*DAddYE joined #nimrod
03:11:31VarriountDemos: I
03:11:42OrionPKVarriount seems quick to me, as quick as ST
03:11:52VarriountI'm stuck at the page asking to "Please give your university provided address"
03:12:31VarriountI gave *my* email address, is there some other email address I need to give?
03:14:36Demosyou want to give them the email address that is like [email protected]
03:15:05Demosso like for me it is [email protected] (my name is not name, but crawlers and whatnot)
03:15:16VarriountYeah, I did.
03:15:24Varriount[email protected]
03:15:36*Demos_ joined #nimrod
03:17:08Varriount<Varriount> Yeah, I did.
03:17:08Varriount<Varriount> [email protected]
03:17:40Demosit took them a while to respond to me when I reactivated a few months ago (I was using MSDNAA prior to that)
03:18:57Demosotherwise you can download the trial of ultimite and use it for like 240 days or something
03:19:02Demosa large number of days
03:20:59VarriountDemos: Yeah, but I get a rejection page
03:21:27Varriount"Sorry, the e-mail which you have submitted is not a valid e-mail at Northern Virginia Community College. "
03:22:52Demoswhat the hell...... email their support thing
03:23:01Demosfrom your vccs address :D
03:24:25VarriountI wouldn't be surprised if it's the subdomain thing.
03:24:45VarriountIt also doesn't help that my college has 3 campus's
03:25:38VarriountOh, there it goes.
03:26:02VarriountDemos: Apparently I have to choose the nonspecific option on the college selection list
03:26:28VarriountIt wouldn't work if I used the campus specific option.
03:27:38Demos_yeah I think I ran into a similar issue
03:29:50VarriountDemos: Do you want an invite to atom?
03:30:08Demossure
03:30:27VarriountJust PM me your email.
03:31:11VarriountHm. VS Professional is 32 bit only? Really?
03:31:34Demosyup they are all 32bit only
03:31:47Demosthey can ofc bould 64bit apps, although that is not the default for VC++
03:32:13Demosand actually if you have a solution with only a 64-bit target (no 32bit one) the profiler does not work
03:32:35Demosalthough if the 32bit target exists you can run the profiler on the 64bit builds
03:34:52Demos_https://onedrive.live.com/redir?resid=BE38BDD0FF029113!17198&authkey=!AJSbdatljKDgwdc&ithint=file%2c.vsix
03:36:01Demos_100% garentee not a virus :D
03:39:01VarriountThis will be the third time I've downloaded a version of VS
03:39:34VarriountDemos: Check out this game, it feels... javascript-e
03:39:36Varriounthttp://jayisgames.com/games/changetype/
03:44:27Demos_I think it is flash
03:44:47Demos_javascript would have only partially working sound and fucked up texture interpolation
03:46:18VarriountDemos: I mean, the premise
03:46:34VarriountchangeType() is the name of the game
03:46:56Demos_right, and like javascirpt it is totally un-intuitive
03:49:00Varriount:3
03:49:12VarriountHm..
03:51:10Demos_I am enjoying Final Fantasy VII for the first time
03:53:21VarriountDemos_: On what hardware?
03:59:59Demos_my PC
04:11:07Demos_it plays worse today than my favorite games from that time
04:16:19*r0b2 joined #nimrod
04:18:00*thephred joined #nimrod
04:18:25thephredI'm sure I'm doing something silly but I'm trying to read a file in to a string at compile time (in a macro)
04:18:44thephredand it just says "Error: cannot 'importc' variable at compile time"
04:19:26thephredmacro embedFile(filepath: string): expr =
04:19:32thephred result = newNimNode(nnkStrLit)
04:19:42thephred result.strVal = readFile(filepath.strVal)
04:20:41*brson quit (Quit: leaving)
04:33:33*carum joined #nimrod
04:42:00filwitthephred: use staticRead(filepath.strVal)
04:42:01*carum quit (Read error: Connection reset by peer)
04:42:22*carum joined #nimrod
04:44:14thephredWorks like a charm! Thank you :)
04:44:26filwitnp ;)
04:46:27filwitthephred: also, consider passing static[string] instead, and then you don't need .strVal on filepath (although I hear static[T] can be buggy at times still)
04:47:36thephredSweet, that makes sense
04:48:29thephredYup that works great
04:51:40Demosbuggy can be an understatement
04:56:31thephredIf I wanted to pass a pointer to memory to a c function would addr(str) work for that if str is a nimrod string?
04:57:41filwitthere's also a cstring type, but i'm not sure exactly
04:58:17filwiti know nimrod's strings are zero-terminated like C's (but they also have a length or something as well)
04:58:41thephredc signature is foo(const void *mem, int size)
04:59:02filwitso if 'addr str' doesn't work, you could try cast[ptr cstring](addr str.cstring)
04:59:10thephredc2nim created proc foo(mem: pointer; size: cint)
04:59:23filwitsomething like that. sorry, not the best with string handling in Nimrod yet
05:03:21filwitthephred: the thing is Nimrod strings (to my knowlege) are more complex types than simple pointers (they have lengths), so you can't just pass their address (again, not positive). So where you have this C signature: 'void foo(char* str)' you would have 'proc foo(str:cstring)' and then you would call it like this: 'var str: string; foo(str.cstring)'
05:06:23filwitactually it looks like strings might automatically convert to cstrings.
05:06:39thephredhmmm
05:08:28filwityep: 'void foo(const char* str)' --> 'proc foo(str:cstring) {.importc:"foo".}' --> 'var str = "blah"; foo(str) # works'
05:09:42thephredvery impressive
05:09:43thephredyes it does
05:09:58thephredso I just had to change the c2nim sig from pointer to cstring
05:10:28thephredI wonder what it would take to make it work with pointer
05:10:38filwitah i see, you're using c2nim, missed that
05:10:40thephredHow are you so helpful filwit?
05:10:51thephred*shakes head*
05:11:00filwitidk.. :P glad i can help though
05:11:48thephredYou da' man (or woman if that may be the case)
05:12:27filwithaha, you're just asking questions about things I've written code for in the past, but thanks all the same
05:12:40filwit(and man)
05:13:51thephredI've been looking for a language like nimrod for some time
05:14:10thephredFelt like I was almost there with luajit
05:14:21filwityeah Nimrod's pretty sweet, eh?
05:14:55filwitexcellent performance, great GC, great platform support (through compile-to-c), and really clean syntax
05:15:14thephredI'm embedding resources in my executable and for c/luajit that was a special program that ran as part of the make file... nimrod, just a really really simple macro
05:15:49thephredI'm still getting used to the syntax
05:15:56thephredMuch better than most
05:16:24thephredI just can't see it yet
05:16:31thephredthat takes a while sometimes
05:16:33filwityeah ithe syntax is a bit of a hodgepodge, but you get used to it' pretty quick
05:16:48thephredwhen I started writing smalltalk it looked weird and unreadable at first
05:16:51filwitone thing to keep in mind, floats are 64bit by default, and int's are pointer size
05:16:59skrylarI thought the syntax for nimrod was pretty consistent
05:16:59thephredbut in time it looks simple and readable
05:17:39filwitskrylar: there are still some areas i have complaints about the syntax, but they're somewhat minor compared to the things Nimrod gets right
05:18:20filwitskylar: if you browse the forums at all, i just posted about how i would love to see the syntax evolve slightly in the distant future
05:18:47thephredI'm still trying to think about the style and implications of not having methods
05:19:36skrylarfilwit: i haven't left unicode prison in a while to be on the forums. lol
05:19:45filwitthephred: you can have class OOP-style methods in Nimrod :) but the macros to build them aren't part of the standard-lib yet
05:20:06filwitskrylar: unicode prison?
05:20:16thephredwhat if I want a object to have a method and not have it in the namespace as a plain callable proc
05:20:24filwitclassic** OOP-style..
05:20:37skrylarfilwit: https://github.com/Skrylar/skUtf
05:20:41skrylarimproving the unicode module
05:21:02skrylarthephred: well thats.. too bad then. Think of it like : in lua
05:21:03filwitskrylar: oh, nice! thanks!
05:21:17skrylarme.DoThing is sugar for DoThing(me)
05:21:45thephredthe difference with lua is
05:21:51filwitfoo.bar(); bar(foo); bar foo; # all the same
05:21:59*_fel1x quit (Ping timeout: 241 seconds)
05:22:22thephredme:doThing(34) is sugar for me.doThing(me, 34), it doesn't live outside the object
05:22:31filwitthephred: i didn't understand what you meant by have a method and not have it in a namespace?
05:22:48thephredBut like I said, I'm still taking it in. The manual says this is a good thing, so I'm open to that
05:23:51skrylarfilwit: he means scoping
05:24:03thephredyeah
05:24:11filwituse modules for that
05:24:23skrylarall though nimrod has overloading, so 90% of the time it doesn't matter that methods bleed together
05:24:29skrylarI'm not sure if you can overload the return value though
05:24:34thephredRight
05:24:53filwitskrylar: overloading return values is planned, but far off (after 1.0)
05:24:57thephredthe overloading, multimethod support makes it not a showstopper for sure
05:26:35thephredThe c output seems very compact
05:26:40thephredI like it :)
05:28:25*carum quit (Remote host closed the connection)
05:31:22thephredReminds me of the go type system a little
05:31:37skrylarpascal types <3
05:31:42thephredin that it bends my mind a little but if you go with it it turns out to be fine
05:33:05filwitthephred: what language are you used too?
05:33:17thephredGood question
05:33:21thephredI've jumped around alot
05:33:50filwitmost familiar with then?
05:33:50thephredI spent a fair amount of time in ruby
05:34:02thephredand most recently javascript
05:34:14filwitah, I've never used Ruby, but i've done a fair amount of Javascript
05:34:36thephredI like to play around with languages in my free time but the ones I get familiar with are the ones that I use for work
05:35:12thephredSomething about the purity of smalltalk really made me happy
05:35:17thephredbut I don't like the vm's
05:35:35thephredReally, that is probably the biggest thing I like about nimrod so far
05:35:48filwiti don't like any dynamically/weak-typed language really
05:36:18thephredI want to be able to make a portable standalone exe that is not huge but doesn't have the stiff inexpressiveness of c/c++
05:36:38thephredThat is why luajit is so close for me
05:36:55thephredIf you embed the vm it ends up being pretty small
05:37:11thephredYeah, I hear that a lot
05:37:22thephredI see the value of both sides really
05:38:06thephredI've done a ton of code in dynamic/weak-typed languages and have not had any issues
05:38:16filwiti don't see the value of weak-typing at all. Almost all strong-typed languages have a 'dynamic' type in them for that 5% of code that actually needs it
05:38:26thephredbut then I can see how valuable it can be to have the compiler tell you, nope, you are doing it wrong
05:38:33Demos_I think over around 2-4kloc stuff like JS and PHP get somewhat annoying, I wager python is better
05:38:48thephredFor me, it boils down to testing
05:39:09Demos_the big motivation for strong typeing is that types give you a way to size values, and you need that for a systems programming language
05:39:13thephredIf you don't test thoroughly in a dynamic/weak-typed language it can bite you
05:39:44thephredYes, Demos_ they fit different needs
05:39:49thephredyou are right
05:39:50Demos_yeah
05:39:52filwitJavascript can get away with weak-typing a bit now since they introduced object freezing, but it's still a pain and doing anything large in it that isn't completely bug-prone requires a mature third-part object kit like backbone.js
05:40:12Demos_also, dynamic types have the nice property that the compiler does not need a view of the whole program to do its thing
05:40:15Demos_or interpreter
05:40:29filwitit also makes things very slow..
05:40:36Demos_this is true
05:40:48filwitand more often than not, also bug prone..
05:40:49thephredNot always
05:40:54filwitit's a loose-loose IMO
05:40:56thephredSee luajit for counterexample
05:41:00Demos_unless you are a language that is sorta dynamic typed except it has types for different sizes of thigns
05:41:07Demos_but that is a PITA to program in I think
05:41:14skrylarGUIs are one of those occasions that loose typing / coupling is good
05:41:18skrylaralso glue code
05:41:24*nande quit (Remote host closed the connection)
05:41:37thephredI do not like unit testing in a statically types language
05:41:47thephredsuper painful compared to what is possible in a dynamic one
05:41:52filwitthephred: it's still much slower, the only way they get any performance is through complex static-analysis (which can't ever really be perfect.. unless you add in optional strong-typing)
05:42:11thephredI don't think you've checked out luajit
05:42:13filwitthephred: and that doesn't even scratch the real performance issues which is tight memory control
05:42:15thephredit is not much slower
05:42:22skrylarfilwit: but that isn't really a problem in throwaway code
05:42:23Demos_filwit, I think BCPL was sorta dynamicly typed
05:42:42skrylarbash isn't strongtyped either IIRC
05:42:46thephredThe standard lua interpreter is, but not luajit
05:43:22filwitthephred: true, i haven't really checked out lua at all (jit or otherwise) but i've seen performance statistics before. granted not in awhile
05:44:17Demos_you can probably get dynamic languages to about the same performence as something like mono or clr while keeping the benifits of dynamic types
05:44:17thephredNo offense meant for sure
05:44:37filwitthe thing is, when you do something like game-dev, the only way to really get good performance is with fine-grain memory control and SIMD, etc. You can't do that without some form of static type-checking
05:44:39thephredjust sayin' most people that really look at luajit come away very impressed
05:46:00Demos_filwit, BCPL had one type: the word
05:46:18*Demos_ should really learn lua
05:46:32filwitthephred: they probably also don't try and squeeze out the most performance they can get with batched animation instancing, or image processing, etc (also, no offense taken mate)
05:46:41filwitDemos_: dunno what BCPL is..
05:47:16Demos_"stands" for before c programming language
05:48:35filwitDemos_: i'm not sure i see your point with "the word"
05:49:12Demos_you can just say that things will be interpreted as whatever type the context demands, and just cast stuff. But it is really not fun to program in such a language
05:49:37filwitthephred: for general-purpose code, dynamic-typing probably doesn't matter a ton (though, i'm still reserved about waisting performance for very little gain, and a more bug-prone system), but for some applications strong-typing is a must
05:50:07filwitDemos_: but then that becomes strong-typing :P
05:50:12Demos_nope
05:50:18Demos_you only have the one type
05:50:32Demos_and things are essentially casted to the right types depending on context
05:51:25filwitso everything is just completely bug-prone (undefined behavior all over the place, yeah!) and up the coder(s) to ensure memory safety?
05:52:07filwiti'm just not sure of why anyone would want dynamic-typing at all.. to me, you loose on both fronts: performance and security
05:52:18filwitespecially when you have a large team of developers
05:52:23Demos_so like I could have x = 1 and in a floating point context you would get like 1.4e-45 or something
05:52:41Demos_oh yeah, this sort of system is totally insane
05:52:50thephredlol
05:52:55Demos_but it is simlar to how assembly works
05:53:56filwitassembly hasn't been considered human-readable for almost a decade unless you work in embedded or reverse-engineering
05:54:09thephredI think I just spend a lot of time in areas where dynamic languages make life easier
05:54:18Demos_well ARM is not so bad
05:54:19thephredNot all areas are like that
05:54:35filwitDemos_: point. i have never done ARM asm
05:54:46Demos_x86 is a total clusterfuck
05:55:22thephredI'm really impressed that they can get the x86 to do what they can given the insane complexity and backwards compatibility kludges
05:55:36Demos_and yet they do
05:55:41thephredlol, yup
05:55:42filwitthephred: i have written a lot of javascript, and I can't think of a single area where dynamic-typing is really needed (dynamic dispatch and inheritance, sure, but weak-typing?). But i'm always open to ideas.
05:56:24Demos_yeah "helping" the programmer with coersions is not a good thing
05:56:36filwitDemos_: my only real experience with ASM waw programming GPU shaders years ago
05:56:41thephredlol, I agree, I don't like coersions
05:56:58*Demos quit (Ping timeout: 240 seconds)
05:57:09Demos_oh dear, I have never written asm for a GPU, do they even make a habit of releasing ISA specs for GPUs?
05:57:29thephredWell, it has been good chatting with you guys
05:57:41thephredGood evening and thank you again for the help
05:58:15Demos_nimrod is super cool, it is like c++ with less bullshit
05:58:23thephredhahah
05:58:26filwitDemos_: it's actually probably some of the easiest ASM you can write. And yeah, they had (constantly evolving) specs
05:58:30thephredC++ makes my brain hurt
05:58:32thephredand my eys
05:58:36thephred*eyes
05:58:39thephredand my fingers
05:58:49filwitDemos_: these days they don't even have ASM shader-compilers though, you have to write in GLSL/HLSL
05:59:07Demos_or Cg!
05:59:10filwitlater thephred
05:59:18*thephred quit (Quit: Page closed)
05:59:39filwitDemos_, yes or Cg, though Cg suxs on AMD
05:59:55Demos_yeah
05:59:56filwitthen again, GLSL also sux on AMD, so choose your poisen
05:59:59filwitlol
06:00:32Demos_and Nvidia's GLSL and HLSL compilers actually compile something between HLSL/GLSL and Cg
06:01:33filwitwell Nvidia has much better drivers in general. GLSL on Nvidia is very extended from the spec, but you can lock it down to ensure the same code works across hardware.
06:05:27Demos_true
06:05:35Demos_intel has some nice drivers as well. Open source even
06:07:00filwityeah i haven't needed to write any complex shaders for awhile, but I'm looking forward to getting back into it
06:07:51Demos_yeah. my dream is to have some metaprogramming stuff that could generate a whole shader /and code to bind uniforms and what not/ from nimrod code at compile time
06:08:07filwityep, that's in my plans as well
06:08:26filwitit's actually the only sane way to write shaders actually
06:09:33filwitcause connecting the mesh-data to the shader-inputs needs to be checked at compile-time really, and having a system which automatically generates the binds makes things much easier
06:10:12filwitmy brother wrote a C# version of this and it made life much easier when working with shaders
06:10:22filwiti plan on going much further with Nimrod
06:11:11Demos_yeah having access to the types is important, presumably your brother used reflection
06:11:36Demos_we need a way to get the implementation AST of a function at compile time first thoug, to handle function calls
06:13:54filwitactually he made a rudimentary parser with some regex, but it was enough to extract uniforms/samplers and build unique C#-side objects for each shader (which allows you to pass constants by name in game-code, etc, efficiently and checked at compile-time)
06:14:26Demos_neat. I was about to say that going from GLSL and just making the bindings could be eaiser
06:14:42Demos_but just generateing shaders from nimrod code would be even better
06:15:04filwitwhat I plan on doing is making a macro which consumes a body of code, then spits out a object the game-engine can work with (with uniforms by name, etc), and the actual GLSL
06:15:51Demos_yeah I was going to take a function and spit out some functions to set up uniforms and VAOs and whatnot as well as a constant string with the glsl
06:16:25Demos_but with the `.` overload stuff an object could be sweet
06:16:52Demos_I started trying to do this but macros are pretty buggy
06:18:29Demos_better than flowgraphs :D
06:20:58*filwit quit (Ping timeout: 240 seconds)
06:57:00*Demos_ quit (Quit: Leaving)
07:17:58*_fel1x joined #nimrod
07:54:38*DAddYE quit (Remote host closed the connection)
07:55:07*DAddYE joined #nimrod
07:59:18*DAddYE quit (Ping timeout: 240 seconds)
08:02:50*io2 joined #nimrod
08:09:15*BitPuffin quit (Read error: Connection reset by peer)
08:09:24*faassen joined #nimrod
08:11:35*io2 quit ()
08:13:30*BitPuffin joined #nimrod
08:22:16*ddl_smurf joined #nimrod
08:22:49*ddl_smurf quit (Client Quit)
10:03:29*BitPuffin quit (Ping timeout: 240 seconds)
10:05:47skrylaroh joy another weird bug
10:15:09*zahary joined #nimrod
10:30:44*zahary quit (Quit: Leaving.)
10:57:19*zahary joined #nimrod
11:10:41*zahary quit (Quit: Leaving.)
11:15:51*BitPuffin joined #nimrod
12:18:04*zahary joined #nimrod
12:24:49*ddl_smurf joined #nimrod
12:33:50*zahary quit (Quit: Leaving.)
12:42:12BitPuffindom96: very confusing when you have the very same avatar as 90% of people on steam and they start playing dota
12:42:12*BitPuffin quit (Quit: WeeChat 0.4.3)
13:16:33*BitPuffin joined #nimrod
13:51:34*r0b2 quit (Ping timeout: 265 seconds)
13:53:44*askatasuna joined #nimrod
13:54:24*darkf quit (Quit: Leaving)
14:14:50*isenmann quit (Quit: Leaving.)
14:57:47*Endy joined #nimrod
15:02:47*psquid quit (Quit: work)
15:14:27*askatasu1 joined #nimrod
15:20:47*Zuchto_ joined #nimrod
15:21:53*askatasuna quit (*.net *.split)
15:21:53*_fel1x quit (*.net *.split)
15:21:53*Zuchto quit (*.net *.split)
15:28:18*_fel1x joined #nimrod
15:30:58*askatasu1 quit (Quit: WeeChat 0.4.2)
15:31:28*askatasuna joined #nimrod
15:32:18*Demos joined #nimrod
15:32:58Demoshey, you know how yesterday I had a problem with proc foo[T](ts: openarray[T]) = ... and proc foo[T](t: T) = ...?
15:36:28*r0b2 joined #nimrod
15:36:48Demoswell I think I expected it to work via something like SFINAE. In C++ the compiler would go and instantiate both templates and see that the instantiation of one or other other produced invalid code, that one would then be removed from the set of functions considered for overload resolution
15:43:28fowlDemos, you should be more specific like [T: typeclass]
15:46:38Demosyeah, that is what I ended up doing
15:47:13Demosbut SFINAE is more powerful than that. you automaticly have everything T: everything where other overloads fail to instantiate
15:48:38fowlbut it leaves no information to the developer why the overload failed
15:51:33Demosyeah I suppose, not a big deal just interesting that I expect SFINAE though.
15:59:49fowlpacket de/serializing: https://gist.github.com/fowlmouth/9252920
16:00:19*oal left #nimrod ("Leaving")
16:00:59OrionPKfowl what do you suddenly have against "return"? :P
16:01:19fowlOrionPK, it produces bad code
16:01:19OrionPKoh??
16:01:34OrionPKyou mean bad C?
16:01:34fowlyea
16:01:59fowlfor stream >> x >> y >> z the result stream is assigned to a new var each time
16:02:19OrionPKinteresting
16:04:39*[1]Endy joined #nimrod
16:07:19*noam__ is now known as noam
16:08:09*Endy quit (Ping timeout: 240 seconds)
16:08:09*[1]Endy is now known as Endy
16:15:09fowlOrionPK, yea so i just wrote macros to get past that
16:15:59OrionPKyou are the macro master
16:21:09dom96BitPuffin: That was me ;)
16:22:29dom96hey guys
16:22:59*EXetoC joined #nimrod
16:26:39renesac_why nimrod don't use << / >> for shl / shr?
16:27:19fowlrenesac_, because it descends from pascal
16:28:09renesac_shl and shr are bad because you can't have '>>=' '<<='
16:28:30EXetoCthat's a really minor limitation imo
16:28:30renesac_also makes harder to translate code from c, java etc
16:28:55renesac_yeah, but what is the upside of 'shl' instead of '<<'
16:28:55renesac_?
16:29:10EXetoCreally? just assign and shift in one statement
16:29:35dom96renesac_: You can define those operators yourself.
16:30:10renesac_I know, but I was asking if there was some good reason for this
16:30:20renesac_some benefit
16:30:55dom96Easier to deduce what it means?
16:31:05renesac_err, not really
16:31:30dom96For people who have never used a C-like language.
16:31:30renesac_even then
16:31:50renesac_it is a pretty severe abreviation
16:31:50renesac_two letters from the first word, one from the following
16:32:10renesac_<< it is obvious a directional thing, for the left
16:32:30renesac_one has to guess that 'l' stands for 'left' in 'shl'
16:32:40renesac_or read the explanation, of coures
16:33:20renesac_you just don't know what directional thing it is, but you would have to guess what 'sh' means anyway
16:33:40EXetoCas if << is obvious to the inexperienced programmer
16:33:55renesac_I'm not claiming this
16:34:10renesac_ <renesac_> << it is obvious a directional thing, for the left
16:34:10renesac_ <renesac_> you just don't know what directional thing it is, but you would have to guess what 'sh' means anyway
16:34:40dom96So what is the benefit of << / >>? That we can write >>= ?
16:34:40dom96Is that the only benefit?
16:34:40renesac_yes
16:35:15renesac_and that you see more of those than 'shl' when you need to translate snippets of code (bithacks, etc)
16:35:40*[1]Endy joined #nimrod
16:35:50dom96Well fair enough. But 'shl' is consistent with the rest of the language.
16:36:35renesac_err, no?
16:36:35renesac_"Apart from a few built-in keyword operators such as and, or, not, operators always consist of these characters: + - * \ / < > = @ $ ~ & % ! ? ^ . |"
16:37:20dom96Nimrod doesn't use & for bitwise AND. It uses 'and'. Other bitwise operations are similar.
16:37:40renesac_not forbidden by language either, but the recomendation is to use those characters it seems
16:37:40*Endy quit (Ping timeout: 240 seconds)
16:37:40*[1]Endy is now known as Endy
16:38:15renesac_yeah, I also found it strange, using the same operator for bitwise and logical 'and'
16:38:15dom96That's a list of characters allowed in operators.
16:38:55*EXetoC quit (Quit: WeeChat 0.4.2)
16:38:55renesac_but it works after all, and 'and=' isn't as common
16:39:10renesac_and '&' is already taken
16:39:35renesac_though for strings... for integers it don't have meaning
16:39:45renesac_I think
16:40:30dom96yes, but it becomes confusing then.
16:40:55renesac_'and' for bitwise and logical operations is also a bit confusing, but I agree
16:40:55dom96we don't even use ++ for incrementing ints.
16:40:55dom96We use .inc
16:41:10renesac_yeah
16:41:20renesac_but that is kinda neutral for me
16:42:00renesac_C uses a lot of ++ because it don't have iterators
16:42:00dom96Araq already allowed ++ and += into the stdlib IIRC.
16:42:10dom96So he will probably allow you to add >>=/<<= too
16:42:20renesac_++ I don't remember, but += I use all the time
16:42:55renesac_well, having '<<=' but not '<<' instead of 'shl' is a bit inconsistent
16:43:30dom96you could probably add that too
16:43:30renesac_oh, one more reason why 'shl' is bad:
16:43:40renesac_araq's idea of 'strong spaces'
16:43:50renesac_won't work with those operators
16:44:15renesac_or at least, it will disrupt it quite a bit
16:44:40renesac_when combined with operators that can be juxtaposed to variables
16:44:55fowl?
16:45:20renesac_strong spaces = having ' a+b * c ' mean '(a+b)*c'
16:45:55dom96you can still add extra spaces before and after the 'shl'
16:45:55dom96So I don't see the problem
16:46:50renesac_yes, but then if you want to use strong spaces in a expression with 'shl' you have to work with one plus space everywhere
16:47:20renesac_like, two spaces for binding loosier, what araq isn't even convinced of allowing
16:52:36Demosso... I was thinking the bikeshed could be green.
16:53:11*EXetoC joined #nimrod
16:53:56BitPuffindom96: no
16:53:56BitPuffindom96: :P
16:54:06dom96BitPuffin: how can you be sure?!
17:00:41renesac_well, it started because I wanted to know if there was a good reason for the style 'shl'
17:01:16renesac_and the best answer I got was dom96 argument that other bitwise operators are in the same style
17:01:41renesac_:P
17:02:01dom96Yay. My answer is best :D
17:02:51*EXetoC quit (Quit: WeeChat 0.4.2)
17:03:01dom96Just wait until Araq arrives, he may give you a better answer :P
17:03:31renesac_one more bikeshed: in most languages that use 'mod' as an operator, it has a different meaning
17:04:11renesac_and nimrod 'mod' semantic is usually given by 'rem' operator
17:04:41renesac_this is a minor thing though, as there isn't really a standard...
17:05:51*EXetoC joined #nimrod
17:06:36BitPuffindom96: what is your nick on steam
17:06:36BitPuffinprove that it was you :)
17:06:56Discolodahmm, all this talk about math. i wonder if its possible to implement J or APL in nimrod
17:07:06EXetoCALSA configuration is a bitch
17:07:06dom96BitPuffin: SuperWaffle234
17:08:11renesac_Discoloda, try to define a unicode operator and see if it works
17:08:11renesac_:P
17:08:36renesac_*operator consisting of a unicode character
17:08:36dom96I bet it does :P
17:08:46BitPuffindom96: wrong
17:08:46BitPuffindom96: HA!
17:09:51renesac_wow, this year is the 50th aniversary of APL
17:12:11*renesac_ knew APL by amz's "If programming languages were religions"
17:13:21renesac_http://blog.aegisub.org/2008/12/if-programming-languages-were-religions.html
17:13:31dom96BitPuffin: lies
17:14:11OrionPKyou can convert into judaism
17:16:36Demosis zahary1 the author of the proposed boost::mixin library?
17:22:32BitPuffindom96: no it'sa true
17:24:02*Matthias247 joined #nimrod
17:26:32BitPuffindom96: maaaaario
17:31:02*nande joined #nimrod
17:31:57BitPuffindom96: btw you never responded to my suggestion that we should provide a transparent websockets backend for the sockets modules :D
17:33:02Matthias247you can build one on top of the sockets :)
17:33:22dom96BitPuffin: first we need a stable sockets module
17:33:42Matthias247exactly
17:34:32Matthias247I have a fully async websocket implementation in c++ and c# that I could port
17:34:32EXetoCdom96: just work really hard and get it done by midnight
17:34:32EXetoCyou can do it
17:35:12Matthias247but you would need async sockets, http und sha-1 beyond it
17:37:57dom96EXetoC: I'm waiting for Araq to fix a compiler bug.
17:42:12*vendethiel joined #nimrod
17:46:43Demos so there were some static[T] fixes that went into the compiler a bit ago, I have not tested my "can we do matrices yet" snippit though
17:48:23Demoswhat is the difference between , and ; when seperateing proc params
17:50:53dom96There is none.
17:52:18fowlproc (x;y;z) is three generic params, proc (x,y,z) is three generic params of the same type
17:52:18Demosallright
17:53:03fowlno wait thats not right
17:53:03*Mat3 joined #nimrod
17:53:13Mat3hi all
17:53:38fowlproc (x,y: T) both are T, proc(x; y: T) y is T, x is generic
17:57:13Demosyeah, I think I get it
17:57:23*Demos quit (Quit: leaving)
18:03:58BitPuffindom96: yes
18:03:58BitPuffindom96: but do you think it's possbre
18:04:43dom96possibry
18:07:43Araqrenesac_: << wouldnt have the same precedence as in c
18:08:33*[1]Endy joined #nimrod
18:08:43*Mat3 *argg*
18:09:03VarriountDemos: Hello guys
18:09:13Araq<< has the same precedence as <
18:09:23Mat3hello Varriount
18:11:23Varriountfowl: Do you have bindings for SDL2?
18:11:58fowlyes in fowltek
18:12:08VarriountMkay.
18:12:23*Endy quit (Ping timeout: 264 seconds)
18:12:23*[1]Endy is now known as Endy
18:12:33*Mat3 these dam*zensored*: Linux terminals initially map BS to DEL and DEL to some ANSI incompatible escape-sequences!
18:13:03Mat3Z=c
18:13:23dom96fowl: Please separate that into a separate repo
18:25:19*Demos joined #nimrod
18:28:04*BitPuffin quit (Ping timeout: 265 seconds)
18:31:24*zielmicha joined #nimrod
18:32:04fowldom96, ok
18:34:39Varriountdom96: When you get the chance, can you investigate the nim-locale babel package for any irregularities?
18:35:39Tyler_if anyone is bored
18:35:39Tyler_I'm getting a systax error I don't understand
18:35:49Tyler_https://gist.github.com/tylereaves/9256201
18:35:49Tyler_memory.nim(32, 21) Error: ')' expected
18:36:24Tyler_aw, crap, I think I know what is
18:36:24AraqTyler_: look at your gist, 'addr' is a keyword
18:36:24Tyler_addr is a reserved word, isn't it?
18:36:39Araqyep
18:36:39Tyler_I blame the sublime 2 mode :P
18:36:49Tyler_which apparently doesn't highlight all keywords...
18:37:24*carum joined #nimrod
18:37:24Araqaddr always has been a keyword
18:39:19Tyler_shouldn't the parser be able to catch stuff like this and throw a more helpful error?
18:39:34Tyler_"Expected argument name, found keyword addr instead" or something like that
18:40:44VarriountTyler_: Which sublime text plugin are you using?
18:41:04Tyler_let me checked...
18:41:14Tyler_installed via package control...
18:41:24VarriountNope.
18:41:44VarriountYou need to install the one by OrionPK, Mitchell and Me.
18:42:04VarriountIt's on github, search for "NimLime"
18:42:19Tyler_https://github.com/leonardoce/nimrod-sublime", "version": "2013.12.04.20.15.50
18:42:29Tyler_ok
18:43:14*carum quit (Ping timeout: 272 seconds)
18:44:54Tyler_that still doesn't actually catch this particular case, but the highlighting is definatly much better!
18:49:19OrionPKTyler_ we do highlight addr
18:50:25*DAddYE joined #nimrod
18:50:40Tyler_ahh, so you do
18:50:40Matthias247and we can autocomplete ;)
18:51:05Tyler_but apparently whatever stylying you're using is showing up as the same as normal text in my colorscheme (boron)
18:51:05Tyler_but that's my problem, I suppose
18:52:05AraqTyler_: error messages can always be improved
18:52:45OrionPKfriggin chsh
18:52:55OrionPKhows a little ol' windows user like me supposed to know about that
18:53:25*Tyler_ runs cygwin zsh...on windows
18:53:25Tyler_try it :P
18:53:35OrionPKzsh eh
18:53:45Tyler_I have it working in a custom terminal with unix colors and everything working
18:54:00OrionPKI use git bash and conemu
18:54:20AraqI program in Dosbox fwiw
18:54:20VarriountI use the best of the best...
18:54:30Varriountcmd.exe :3
18:54:30OrionPK;D
18:55:15Tyler_hadn't heard of conemu
18:55:15Tyler_I'm running console2
18:55:15Tyler_which mostly works pretty ok
18:55:25Tyler_gives me tabs and scrollback and mouse copy/paste
18:56:00OrionPKcon emu can be customized to look pretty sexy though
18:58:35zielmichahttp://build.nimrod-lang.org/ is down (maybe somebody mentioned this, but logs are down :( )
18:59:05Araqdom96 is working on it
19:00:45dom96zielmicha: Oh, didn't notice. Thanks for the heads up.
19:05:05*Demos quit (Ping timeout: 264 seconds)
19:06:40VarriountOrionPK: I need keywords to descripe nilime
19:06:40Varriount*nimlime
19:07:05OrionPKnimrod, nim, nimrod language, nim language
19:07:15Araqkeywords: nimrod, lime, awesome, incredible
19:07:25Araqimpressive, quad-damage
19:07:45Araqdouble kill!
19:08:05*Demos joined #nimrod
19:08:20dom96Varriount: What irregularities should I look for?
19:08:55reactormonkMatthias247, how do you autocomplete? invoke a new compiler every time?
19:09:05Matthias247reactormonk: yes
19:09:20reactormonkMatthias247, I've found that to be too slow
19:09:40*carum joined #nimrod
19:09:40Matthias247depends on your pc and the source file size :)
19:10:25Matthias247I made an option that it only delivers completions when you explicitely ask for them - in case it's too slow
19:10:25Varriountdom96: Something that would prevent or give strange output when running "babel install XXX;cd {babel path XXX}; babel build"
19:10:45OrionPKwho says germans dont have a sense of humor?
19:11:05*Varriount is publishing NimLime on package control
19:11:15OrionPKcoo
19:12:05Matthias247do that :)
19:14:25AraqOrionPK: you made me install conemu
19:14:35Araqbut I don't get how to configure it
19:14:35*dom96 grumbles
19:14:45dom96Araq: Please fix NimBuild on devel.
19:15:00OrionPKaraq there's a dialog
19:15:10Varriountdom96: How is it broken?
19:15:20Araqdom96: it compiles for me ...
19:15:20OrionPKwin+alt+p
19:16:15dom96Varriount: It doesn't compile.
19:18:46OrionPKwhy on earth is google closure compiler written in java
19:20:21dom96Araq: Maybe you fixed it in your vm2_2 branch?
19:20:36Araqvm2_2 has been merged already
19:20:46Araqthere is a regression however
19:20:46Araqwhich I fixed just now
19:21:01dom96macros.nim(327, 21) Error: type mismatch: got (TTable[string, TStatus], string)
19:22:36*brson joined #nimrod
19:23:46dom96And I am talking about the website in case you're compiling the builder.
19:23:56Araqah!
19:24:16dom96I can predict your mistakes too ;)
19:24:16Araqnice
19:25:46VarriountOrionPK: Could you please spiff up the readme file for NimLime?
19:26:16OrionPKdont think i'll have time man.. i'm at work now, and in the middle of buying a house/moving when im not working
19:26:46Demoswowha type TMatrix[N,M: static[int]] = array[N*M, float32] actually compiles
19:27:06Demosthis changes everything
19:27:16VarriountOrionPK: Ah, ok.
19:27:36VarriountOrionPK: Well, good luck on getting that other stuff done then.
19:28:06AraqDemos: you should praise zahary1 for doing lots of hard work
19:30:06Demosnote that if I change array[N*M, float32] to array[1..N*M], float32] if fails
19:30:06Demos*it
19:30:16Demosbut still YAY!
19:30:26Araqirclogrender.nim(2, 5) Error: cannot open 'jester'
19:30:46dom96babel install jester
19:30:56AraqI'm quite sure I did that
19:31:41Araqapparently not, oh well
19:32:06Araqlib\core\macros.nim(327, 21) Error: type mismatch: got (TTable[string, TStatus], string)
19:32:06Araqbut expected one of:
19:32:06Araqsystem.&(x: seq[T], y: T): seq[T]
19:35:06Araqcongratulations, dom96, your website.nim fails whereas fowl's keineschweine compiles making you the winner of the contest "who stress tests the compiler better"
19:35:21dom96:D
19:35:36dom96What prize do I get?
19:35:54dom96NimBuild should be back up now.
19:36:11Demosnow the real test: can I make a static[set]
19:38:12Araqand why the fuck doesn't the compiler say "instantiation from here"
19:39:43OrionPKhmm
19:39:48OrionPKparseInt is failing on the number 2
19:39:49VarriountAraq: Careful of your language, there are impressionable youngsters in the room. :p
19:40:38OrionPKError: unhandled exception: invalid integer: 1
19:40:56Demosthat one goes right next to ERROR: Success :D
19:41:11OrionPK:)
19:41:34AraqOrionPK: only 0 and 1 are real numbers
19:43:36skrylarAraq: do you already know about the bug where if you have a proc which modifies a var parameter, then call that proc using 'check' from unittest, it actually doesn't allow the variable to be updated at the top level which can cause a cascade of failure (checking the variable afterward shows no change)
19:43:59Araqno
19:44:51OrionPKAraq and number 1
19:45:05OrionPKgiving me that error for multiple types ;P
19:45:27OrionPKmultiple numbers
19:45:57Araqthe stdlib obviously doesn't use parseInt nor does anybody else
19:46:14OrionPKlol
19:46:57OrionPKit's on my ARM chip running debian
19:47:03*zahary joined #nimrod
19:47:51zaharyso Matthias247, did you also get an invite for Atom?
19:47:53OrionPKimx6
19:48:13NimBotAraq/Nimrod devel f9ff1db Araq [+0 ±1 -0]: fixed typo in error message
19:48:13NimBotAraq/Nimrod devel 95782e9 Araq [+0 ±1 -0]: nil -> discard
19:48:13NimBotAraq/Nimrod devel 9bf8f0a Araq [+0 ±1 -0]: make C backend more robust against compiler bugs
19:48:13NimBotAraq/Nimrod devel b571f0d Araq [+0 ±1 -0]: some progress on the new name mangler
19:48:13NimBot1 more commits.
19:50:56Demosless compiler bugs ... I like where this is heading
19:52:34Mat3good !
19:52:54Matthias247zahary: yep, have one. But not testedd beause of osx
19:53:27Mat3ciao
19:53:32*Mat3 quit (Quit: Verlassend)
19:53:44dom96oh, I got one too.
19:53:49skrylarAraq: okay, reported w/ compiler hash and example code
19:53:56*dom96 didn't even notice until now
19:54:10OrionPKwonder when windows/linux versions are coming
19:55:16dom96Aww. OS X only :\
19:55:26*Demos quit (Ping timeout: 264 seconds)
19:55:32dom96zahary: I can give you an invite if you want?
19:55:41Araqbrb
19:56:34Matthias247dom96: he already has one
19:56:42*io2 joined #nimrod
19:56:51OrionPKI think we have enough for everyone who wants one here heh
19:56:55dom96oh right.
19:56:58Matthias247I have a macbook here, but too lazy for booting and installing it :)
19:57:17dom96zahary: what do you think of it?
19:57:23zaharyI have an invite already, the API is quite poor at the moment, but I created some basic Nimrod plugin
19:57:24OrionPKMatthias247 you have to help build the nimrod plugin for it though
19:57:26OrionPK:P
19:57:34OrionPKzahary nice!
19:57:49dom96zahary: What's the performance like?
19:57:54OrionPKyou should use our tmlanguage def from nimlime IMO
19:57:58Matthias247it at least read the complete docu today at work :)
19:58:49zaharydom96: can't quite tell at the moment - CodeMirror may be a bit faster (LightTable)
19:59:16*skrylar continues to hug vim ._.
20:00:18OrionPKwe'll have to try a big file
20:00:31Matthias247it supports max. 1MB files :)
20:01:00zaharyOrionPK: I noticed the definition formats are similar, but have somebody already written a converter of tmLanguage to cson?
20:01:57Matthias247afaik it also understands json and not only cson files
20:02:15zaharyalso, I find the indentation scheme somewhat broken; is it possible to tell Sublime to dedent after return or break for example?
20:02:27zaharybut sublime uses xml?
20:03:50zielmichaShould this https://gist.github.com/zielmicha/0712ac220a11d30aee92 fail with "undeclared identifier"?
20:04:13zielmichaI feel that it shouldn't, but it does.
20:04:44dom96It won't if it's an immediate macro.
20:05:25zielmichaOh, I thought that only templates are immediate.
20:05:31zielmichaThanks
20:12:38*carum quit (Remote host closed the connection)
20:19:08reactormonkpurging build/ from the repo reduces its size to 33MB
20:24:39NimBotVarriount/NimLime master c8e1bf5 Clay Sweetser [+0 ±1 -0]: Cleaned and sped up the check command.
20:25:09*carum joined #nimrod
20:33:34Araqdom96: I improved the error message (was quite easy :P ) but your code uses htmlgen.del instead of tables.del
20:33:47Araqwhich is correct, immediate macros are preferred now
20:33:47*carum quit (Remote host closed the connection)
20:34:05Araqso do yourself a favour and import htmlgen like so:
20:34:18Araqfrom htmlgen import p, `div`, a
20:34:45Araqand we need to document that, htmlgen is *evil*
20:35:03Araqimmediate macros with short names like 'p' and 'del' are evil
20:35:16dom96Perhaps we should change the way htmlgen works then?
20:35:16Araqwe need to fix htmlgen
20:35:21Araqyup
20:35:32dom96Like the way you showed it in your talk.
20:36:30Araqthat's not "fixing" htmlgen, that's writing a new one
20:36:48AraqI still like the expression based approach of htmlgen
20:36:49dom96Yep :P
20:37:04dom96How should htmlgen be fixed then?
20:37:26VarriountMatthias247: :D
20:38:20dom96I have to list a lot of elements in my import line...
20:40:30Araqwell blacklisting works too
20:40:35Araqimport htmlgen except del
20:40:55dom96that's better.
20:42:37dom96Still fails though
20:43:18dom96oh wait
20:43:33dom96nvm
20:43:55*EXetoC quit (Quit: WeeChat 0.4.2)
20:44:01dom96now I get a different error :P
20:46:29Araqfor me it compiles with that change ...
20:46:53dom96well I haven't rebootstrapped yet
20:47:01dom96Should I?
20:47:24Araqyes
20:47:39*BitPuffin joined #nimrod
20:51:55dom96Araq: What did you change exactly?
20:52:14Araqthe vm
20:52:27Araqor do you mean to get the better error message?
20:52:51dom96To get the website to compile.
20:52:52Araqmacros.nim:327 result = newNimNode(nnkCall, args[0])
20:52:56dom96What did you change in the website?
20:53:06Araqimport htmlgen except del
20:53:24dom96in website.nim?
20:53:28Araqyes
20:54:36dom96Araq: git pull and try making that change
20:55:21dom96Have templates changed too?
20:56:12Araqyes
20:56:26dom96How?
20:56:30Araqthe symbol binding rules changed so you rarely need 'bind' anymore
20:57:35*ddl_smurf quit (Quit: ddl_smurf)
20:58:56*ddl_smurf joined #nimrod
21:00:12Araqdom96: after a pull it doesn't compile anymore :-)
21:00:28*faassen left #nimrod (#nimrod)
21:00:34Araqhmm well you do: template m: expr = state.modules[i]
21:00:59Araqand then you invoke it without () which is actually ambiguous
21:01:07*DAddYE_ joined #nimrod
21:04:24*DAddYE quit (Ping timeout: 240 seconds)
21:07:31Araqdom96: when I change it to disconnect.add(m()) it compiles but yeah looks like another regression
21:12:38*Endy quit (Ping timeout: 240 seconds)
21:13:13dom96renesac_: Haskell uses 'shiftL' for shift left ;)
21:13:41dom96Araq: alright
21:13:55dom96http://bartoszmilewski.com/2014/02/26/c17-i-see-a-monad-in-your-future/
21:13:59*Demos joined #nimrod
21:16:46Demoseta on nimlime in package control?
21:22:21dom96Araq: On the forum what do you mean that we could use + for 'package'?
21:23:15DemosI think he means like something that can be accessed by other files in your project but not by other projects. atm I think the idea of a nimrod package is ill-defined
21:25:24OrionPKyeah i'd like to see an example of what is meant by "+ for package"
21:25:52dom96I can't imagine how that will work with the current babel packages that we have.
21:26:36Demoswell we need some notion of package anyways to resolve the strangeness that happens if you name a file something with the same name as an external library file
21:28:46NimBotVarriount/NimLime master a4b7873 Matthias Einwag [+0 ±1 -0]: Sorting error messages by line number. Fixed line numbers.
21:31:45Matthias247OrionPK, Varriount: What do you think about automatically running nimcheck on each save?
21:33:35Araqwell I think I'll make the compiler look at the directory structure and the directory with a .babel file in it is the package name
21:35:27Araqthat said, I find package visibility disgusting and if you have the time to properly distinguish between public/protected/package/private you spend way too much time on irrelevant bullshit and could produce new features instead
21:36:43Demoscome to think of it since imports are non-transitive anyways you could just make a module that forwards on what is "public" and does not forward what is "package private"
21:38:22AraqDemos: yes of course
21:38:45Araqthis is yet another "I'm still thinking in C#" discussion
21:46:26OrionPKMatthias247 id rather have a hotkey to do it
21:46:39OrionPKMatthias247 maybe add a setting to check on save though, off by default
21:47:09Matthias247yep
21:47:23DemosI just installed nimlime, very impressive. Should motivate me to get intellisense working in VS.
21:47:34Matthias247but justed it, when the overlay also automically pops up on save it's annoying
21:47:46Matthias247just tested
21:48:20OrionPKah
21:58:57*DAddYE_ quit (Remote host closed the connection)
21:59:34*DAddYE joined #nimrod
22:04:30*carum joined #nimrod
22:09:41*askatasu1 joined #nimrod
22:11:37*zahary quit (Quit: Leaving.)
22:12:05*askatasuna quit (Ping timeout: 272 seconds)
22:17:47Demosoh that static[T] code compiles but it fails as soon as you try and do anything with the type
22:23:29NimBotVarriount/NimLime master 667b7c0 Matthias Einwag [+0 ±3 -0]: Implemented optional checking of files on save
22:24:04Matthias247there it is :)
22:26:15Matthias247I would love if we could display the error messages as an overlay or tooltip. But that's not possible with ST :(
22:28:29NimBotAraq/Nimrod devel b158c7c Araq [+0 ±2 -0]: tstmtexprs.nim works again
22:29:44OrionPKis there a version distinction between devel and master
22:30:11Araqno
22:30:26Araqand the distinction currently makes no sense
22:30:33Araqbut will after 0.9.4 is out
22:34:37OrionPKmmk
22:34:44OrionPKircfamiliar doesnt build w/ dev
22:34:51OrionPKstaticExec gives sigsegv or something
22:35:31VarriountMatthias247: Thanks.
22:35:50dom96Araq: We should add the commit hash/branch into -v output
22:36:02VarriountMatthias247: It's possible to display the errors in the status bar when the cursor is over error regions
22:36:04*familiar125 joined #nimrod
22:36:07OrionPKyay
22:36:22OrionPKgot ircfamiliar running on my cubox-i ;)
22:36:27*familiar125 quit (Remote host closed the connection)
22:36:28dom96I'm sure we can detect whether we are in a git repo or not easily.
22:36:41Matthias247I think it turns out quite usuable. Press ctrl+s and you immediatle see where you have errors
22:36:52AraqOrionPK: please report that
22:37:03Matthias247Varriount: by storing all of them in a map and use the EventListener to check for each position if it's on an error?
22:37:45Araqdom96: meh, we simply need to get to the state where not everybody has to work with the github version of nimrod
22:38:02Araqpeople should be able to use stable releases
22:38:19Araqthis "build your own latest from github" is unprofessional
22:38:54NimBotAraq/Nimrod devel 7418d62 Charlie Barto [+0 ±1 -0]: added an overload for highlight.initGeneralTokenizer that accepts a cstring.... 1 more lines
22:38:54NimBotAraq/Nimrod devel 2daff94 Andreas Rumpf [+0 ±1 -0]: Merge pull request #962 from barcharcraz/vstweaks... 2 more lines
22:39:00dom96Ok, then we need to fix up NimBuild and get it to serve up pre-built packages instead.
22:39:17NimBotAraq/Nimrod devel 891c7f1 Michał Zieliński [+0 ±1 -0]: osproc: add warning about using waitForExit without poParentStreams
22:39:17NimBotAraq/Nimrod devel cf81177 Andreas Rumpf [+0 ±1 -0]: Merge pull request #963 from zielmicha/wait-for-exit-doc... 2 more lines
22:40:49dom96or we could release more often ourselves which won't happen
22:41:06Araqon the contrary, this will happen
22:41:17Araqer ... no
22:41:22Araqnever mind, I misread
22:41:44Araqyes, I agree, nimbuild needs to serve up pre-built packages
22:42:23Demosrust's build system thing is pretty neat...
22:42:38Demosbut then again I think mozilla can actually pay to host and build all that stuff
22:43:45Araqiirc there are now more people working on Rust fulltime than on Go
22:44:10Araqthis surely makes a big difference when it comes to everything
22:44:42*carum quit (Remote host closed the connection)
22:44:53*dom96 sits patiently awaiting a big company to sponsor us
22:45:25dom96I think to be taken seriously we may actually need to change the name.
22:45:32*carum joined #nimrod
22:45:43dom96And tomorrow I will hopefully find out the reason why we were rejected from GSoC.
22:49:36*filwit joined #nimrod
22:50:08Araqyeah, I'm curious too
22:50:16Araqhey filwit, try devel again please
22:50:27Araqand don't you dare to say "my macros don't work" ...
22:50:40filwitAraq: can't right now, on Windows, sorry
22:50:45Araqgetting all the tests to compile is a never ending balancing act ...
22:50:50filwitAraq: will try tonight and let you know in the morning though
22:50:58Araqsure
22:51:00skrylaris the compiler broken on windows?
22:51:09Araqno
22:52:33filwitit's not that, i'm just doing other work on windows right now and don't have SDL setup here yet
22:52:40skrylaroh
22:53:11filwitthough i suppose i could just extract the test and try it
22:53:29filwiti did kinda hop on here to waist a little time
22:53:41filwitokay, you convinced me, one sec
22:54:00skrylarmaster persuasion hat. lol
22:54:22Varriountdom96: Why not have "Nimble" for a language name?
22:54:48filwitwhy change at all?
22:54:56AraqVarriount: there is no choice between "nim", "nimble" and "nimrod". It's either "nim" or "nimrod".
22:55:07VarriountAraq: Ah, ok.
22:55:09filwit(though I like 'Nim' more than 'Nimrod'.. plust i think it should officially be lowercase)
22:55:11skrylarbecause its either "nimrod" the idiot or "nimrod" the bible and both make derpy people uncomfortable
22:55:45filwitNimrod could be promoted as "good hunter"
22:55:54skrylaras for corporate sponsorships you have to have a killer app
22:55:57Araqfilwit: it's called bikeshedding and we're getting good at it
22:56:08filwitlol
22:56:21skrylarRuby was pretty widely ignored until 37signals made rails with it
22:56:50Araqyeah but you can't repeat history
22:57:25dom96Varriount: For what it's worth, Nimble is a pretty nice name.
22:57:27Araq"nimrod in the sky" will only provoke tiresome smiles
22:57:39dom96Jester is the future.
22:57:44skrylarreminds me of when D1 was a thing and people were whining about the same problems, and they didn't have editor support or even a GUI lib
22:57:46dom96Just wait till the async stuff works.
22:58:23Araqskrylar: yeah and now D is sky rocketing ... oh wait, it's not
22:58:32filwitskrylar: i started with D2, but even then it was basically the same. Now though there's pretty good VS and MonoDev D support
22:58:36skrylarAraq: they still don't have that great of editor support or a GUI lib, lol
22:58:46Araqtrue ... I guess
22:59:10skrylarBlitzMax is one of those silly game languages and they have a visual debugger / predone GL bindings and whatnot
22:59:41VarriountWe have good C support. Wrappers to the rescue!
22:59:48Araq"silly game language" here means "commercial product with people having the time to work on it", I bet
22:59:58filwitAraq: D is actually gaining popularity. It's not confirmed, but Remedy's new game for Xbox One probably uses D
23:00:21skrylarAraq: its still made by one guy IIRC
23:00:34skrylarthough now he calls it monkey and its one of those "i compile to 20 web languages" things
23:01:02*icebattle joined #nimrod
23:02:16Araqfilwit: their next game won't anymore though
23:02:37Araqbut that's just a guess from the reported trouble they did go through
23:03:00skrylarwell D2 is full of stupid still; the primary compiler is a closed source mothball
23:03:08Araqand of course I'm highly biased
23:04:24*DAddYE_ joined #nimrod
23:04:44filwitJust saying, it's gained a lot of popularity since I started with it. And Nimrod is in a similar audience ballpark, so once Nimrod gets more IDE support we could actually see a quick rise as well
23:05:21filwiti mean, just the few reddit articles and DrDobbs article seemed to have attracted a few more users to the forums and IRC
23:06:38filwitNimrod is much better than D in many ways, but where they win with C-like style (popularity) Nimrod looses, so popularity bleed-over might not be entirely the same
23:06:54skrylari consider non-c syntax a bonus :(
23:06:58filwitme too
23:07:01*io2 quit ()
23:07:04skrylarthat was my least favorite part of D1
23:07:20dom96Many people unfortunately don't. And focus on bikeshedding... :P
23:07:23skrylarif freepascal had better generics support i probably would still be using that
23:07:40filwiti'm just saying there's a lot of C programmers who will be instantly familiar with D vs Nimrod, and they might be more of the "systems programming language" target audience than Python/Ruby folks
23:07:59*DAddYE quit (Ping timeout: 240 seconds)
23:08:03dom96I'm just surprised that so many Python fans are moving to Rust/Go and not Nimrod.
23:08:17skrylarbecause rust and go have million dollar plus corporations behind them
23:08:24filwitdom96: probably many more factors than just syntax
23:08:39skrylaralso yeah, its more of a matter of "does it have shiny knobs" than syntax
23:08:49*DAddYE_ quit (Remote host closed the connection)
23:08:52skrylaragain, people mysteriousy stopped caring about ruby's warts when Rails came out
23:09:16Demoswell go is actually stable... so there is that. it kinda remains to be seen how well rust does
23:09:30skrylarespecially when textmate came out with snippets and there were screencasts of rails+snippets, tons of people jumped over to macs
23:09:32*DAddYE joined #nimrod
23:09:38filwitthe thing is, Nimrod has the best performance and GC and platform support than it's competitors (Rust, D, Go). It just has an upward battle in terms of syntax (i like it, don't get me wrong) and IDE support, etc
23:09:39skrylarso its mostly a matter of stability and shiny knobs as to when people use a product
23:10:01Demoscompiler stability is probably slightly better in rust due to the money and bodies
23:10:05Demosyeah
23:10:07skrylarlolno
23:10:10skrylarrust is not stable
23:10:16Demosslightly more
23:10:21dom96I think nicer looking docs and a more thorough tutorial could go a long way.
23:10:24skrylareven with crippled macros it still ICEs all the time
23:10:39filwitoh, Demos: last night my internet cut out man, not sure if you where still talking and i just randomly left :P
23:10:53skrylaror rather i should say, when rust ICEs its an unrecoverable error. In nimrod you can work around AST failures
23:11:11Demosyeah, I got a ping timeout message and I assumed your net died
23:11:37*EXetoC joined #nimrod
23:11:39filwitdom96: i agree. Docs and tutorial are important. Unfortunately I only really have time to spend on my project and try and fix the few bugs in my way ATM
23:11:58*EXetoC left #nimrod (#nimrod)
23:12:20dom96filwit: Yeah, I understand. I wish I had the free time I once had. :\
23:12:42Demosso how hard would it be to make it so that generic param names could be substituted in pragmas? I am thinking like proc stuff[T]() {.header:"<sometemplatestuff.hpp>", importcpp: "stuff<T>".}
23:13:22*psquid joined #nimrod
23:13:26Demosactually hold that thought I gotta go for a bit
23:13:31*Demos quit (Quit: Textual IRC Client: www.textualapp.com)
23:13:53filwitdom96: actually, I may have more free time later this year. some of my brother and I's projects are starting to do better and we have plans on some better residual income thing. So I may end up with a lot more time to work on Nimrod in a few months. If that happens I will defiantly dedicate more time to docs and tutorials
23:14:17Matthias247filwit: I think rust can be as fast or faster than Nimrod. But it's tooling is worse. And it's so much harder to program that the comparison is hard
23:15:25filwitMatthias247: i doubt it could really be "faster", but i'm sure both Rust and D can bet "just as fast" since they all boil down to basically the same native code if you avoid the GC and stuff
23:16:13Araqwhen you avoid the GC, they are all on par
23:16:26Araqin theory
23:16:48Araqand in practice each gets enough attention as well for that to become true
23:16:56filwityeah exactly. that's why i said Nimrod has the best performance. Cause it's the faster for convienient memory safe code
23:17:22profmakxgive you this
23:17:26profmakxit does not look like C.
23:17:40filwitbut then, I havent' benched D in awhile and I've never actually tried Rust, so what do i know
23:18:05skrylaralgebraic types are nicer in rust
23:18:22skrylaras far as omitting the separate enum + union steps
23:18:37Araqactually D and Rust define wrap around semantics for integers, whereas it's undefined in release mode for nimrod, so nimrod has a slight advantage
23:19:04Araqwhether that can make a difference on today's IO bound CPUs, I dunno
23:19:54filwitmostly general purpose code performance isn't a huge issue today anyways
23:20:07Araqskrylar: proper algebraic types are eventually coming, I think
23:20:23filwitbut Nimrod (being compile-to-c) totally kills D with SIMD, and that's a big deal
23:21:31filwiti was very happy playing with SIMD in Nimrod while in D it's a nightmare with different compilers supporting completely different commands and D structures getting in the way of performance
23:22:04Araqalso nimrod's memory modell is currently *more* efficient than rust's, but I think Rust's can be optimized quite well
23:23:08filwitdoes Rust compile for ARM ?
23:23:14Matthias247yes
23:23:26filwitdoes it use GCC or LLVM or their own?
23:23:36Matthias247it compiles to everything that llvm can do
23:23:45filwitah, okay that's cool
23:25:21BitPuffindom96: whatchu talking about, mumble was piss easy to set up
23:25:45dom96BitPuffin: Client or server?
23:26:05skrylaryeah newer mumble servers are nicer, now that they finally decided admins might want to use a visual editor like the whole rest of the industry does :>
23:26:16skrylarnow we just need to break them of their arrogant "you don't need per-user gain adjustment"
23:26:38dom96BitPuffin: See ^ :P
23:26:57dom96The last time I tried setting up a mumble server, configuring the permissions was a nightmare.
23:27:15skrylarit still is unless you understand the weird way that they did the permission tree
23:27:30skrylarwhy people won't standardize a single way to represent ACLs I don't understand
23:28:25dom96In that case I will stick to TS.
23:28:36skrylaranyhoo thats another unicode bug fixed
23:29:16filwitAraq: btw, why where you asking if my macros work on devel? they've worked on devel for awhile now.. did you mean vm2_2?
23:30:11filwitAraq: there's a bug with system.new(..) being resolved to a locally defined proc new(), but that doesn't have to do with my macros
23:32:10*noam_ joined #nimrod
23:33:09Araqfilwit: vm2_2 has been merged into devel, so I'm asking about devel
23:33:50skrylarAraq: is there a regression test for the compiler?
23:34:45Araqskrylar: what do you mean? we have an extensive test suite with incredibly hard tests ...
23:35:07skrylari was asking because you were saying my unicode was going to break everything lol
23:35:15BitPuffindom96: server
23:35:34BitPuffinskrylar: I used text configuration :P
23:35:42BitPuffinCuz I'm no noob like dom diddely dom96
23:36:44*noam quit (Ping timeout: 272 seconds)
23:38:21filwitAraq: yes, devel compiles my macros
23:42:20*BitPuffin quit (Quit: WeeChat 0.4.3)
23:42:21*Araq sighs
23:42:48*ddl_smurf_ joined #nimrod
23:42:53Araqskrylar: well we have close to zero unicode related tests ...
23:42:59filwityeah, that's good. I'll have to look over the code later and see what you did
23:43:11skrylarAraq: bleh, i'll have to fix that some time later
23:43:41skrylari have some that make sure this module work, still stamping some bugs that crept in when porting over though :/
23:44:35VarriountHm. So what kind of application would nimrod be particularly suited for?
23:44:51skrylarhello worlds. *ducks*
23:45:13*r0b2 quit (Ping timeout: 272 seconds)
23:45:14*ddl_smurf quit (Ping timeout: 272 seconds)
23:45:16*ddl_smurf_ is now known as ddl_smurf
23:45:27dom96good night
23:45:33VarriountGood night.
23:45:34skrylargood night dom96
23:46:23skrylarI might play around with libcef and nimrod later out of morbid curiosity
23:46:59*BitPuffin joined #nimrod
23:47:03Araqskrylar: we have also an encodings module that is used by aporia and works
23:47:34AraqVarriount: what about babel support for testament?
23:47:55skrylarwell fortunately a lot of the code i wanted to bring over doesn't really replace some of the stuff that is there
23:48:09skrylarit adds new ones like being able to iterate graphemes instead of just code points
23:48:12Araqon the contrary
23:48:18Araqthat's much better
23:48:24Araqnew stdlib modules ftw
23:48:39Araqnew stuff also can't break code that uses the old stuff
23:48:43skrylarthe new encoder is, hmm. different
23:48:55skrylari rewrote it so it properly does first-to-last byte iterating now
23:49:04skrylarinstead of putting it in a buffer/sequence
23:49:36*askatasu1 quit (Ping timeout: 240 seconds)
23:49:43skrylari have it all in a separate github repo so i can finish porting / testing / fixing before worrying about what to cherrypick in to stdlib code
23:50:35Araqnice
23:54:02skrylari looked at fossil a while back, since the built-in wiki/bugtracker sounded cool
23:54:13skrylarits yet another "rebase is the devil" VCS system though :/
23:54:13*r0b1 joined #nimrod