<< 25-02-2014 >>

00:01:22*skyfex quit (Quit: Computer has gone to sleep.)
00:01:55*skyfex joined #nimrod
00:02:03*noam_ quit (Ping timeout: 264 seconds)
00:03:53Araqer .. who renamed compilerprocs in jssys.nim?
00:04:00Araqreactormonk?
00:04:45zahary1I did
00:05:04Araqyou must adapt the codegen too then, compilerprocs are case sensitive
00:05:17*skrylar scratches head wondering why unsigned types were weird third class citizens
00:05:41zahary1hmm. ok
00:07:14Varriount|Mobileskrylar: Araq has a vendetta against them
00:07:35skrylarVarriount|Mobile: yeah but the nature of the vendetta is what I'm curious about
00:07:50skrylarthey're clearly existent so their usefulness is acknowledged, but they're put in the wierd "this is where black people go" box
00:07:53skrylarlol
00:08:37Varriount|MobileMan, we need dom96 or Araq to link to that blog post about hating unsigned type
00:08:43Araqhere, have some facts: Java doesn't have them, C# has them but pretends they don't exist (length returns an int), Python, Ruby, Lua, etc. all don't have them
00:08:46reactormonkAraq, maybe
00:09:04reactormonkAraq, ah ok. btw: git blame to the rescue
00:09:23Araqthey are acknowledged to not work, skrylar
00:09:34Araqonly C and C++ embrace them
00:09:43skrylarand Rust
00:10:01skrylarI'm not sure the applicability of mentioning the lack of unsigned types in Python/Ruby which have bignums
00:10:07dom96Araq: The languages you mentioned do not call themselves "systems programming languages"
00:10:33skrylardom96: I've also seen the nightmare of Java networking code
00:10:46skrylarWhich equates to "use a bigger type, waste memory, and then jump hoops to manually do unsigned types"
00:11:06skyfexskrylar: Varriount|Mobile: http://critical.eschertech.com/2010/04/07/danger-unsigned-types-used-here/
00:11:09Araqdom96: Ada doesn't like them either, and Ada is a systems programming language
00:11:24skyfexAnd http://forum.nimrod-lang.org/t/313#1631
00:11:45Araq(this term is not well defined anyway)
00:13:12AraqOberon left them out, not that this means anything though, Oberon left out everything lol
00:13:35skrylarskyfex: okay, i read that blog post. it doesn't make a convincing case why unsigned types should be illegal.
00:13:37dom96Ada doesn't really count because it's not mainstream :P
00:13:50skrylarIt points out flaws in implicit type conversion, but those are not unique to uint.
00:14:22Araqnope
00:14:31skyfexskrylar: Yeah, I should point out I'm just linking.. I don't have a strong opinion myself
00:14:57skrylarskyfex: i have a strong opinion in that the right type should be used in the right place; which is one reason things like Java piss me off a bit
00:15:21Discolodaif you dont like unsigned, call it 'nat'
00:15:56skrylarthere was similar stupidity in an article where someone wrote about why C++ people use std tuples and pairs when a POD would make more sense
00:15:57Araq'nat' is very different from 'unsigned', Discoloda
00:15:57DemosI will point out that a panal includeing bjarne stroustrup, Andrei Alexandrescu, STL, and many other well reguarded c++ experts was asked "what guidence can you offer on choosing signed vs unsigned types?" and they said essentially, use signed unless you actually want mod 2 arithmatic
00:15:59skrylarsimply because its trendy
00:16:25skrylarDemos: Unfortunately, I really couldn't care less what C++ experts think... :\
00:16:34skrylarAndrei lost my respect when he ruined D
00:16:36AraqDemos: and yet size_t is everywhere and it's unsigned ...
00:16:48skrylarand Bjarne admitted he made a monster nobody can fully understand...
00:16:56Demosalso stroustrup (I think it was him) commented that having standard library templates return unsigned numbers for stuff like .size() was a mistake
00:16:57skyfexskrylar: How did it ruin D? I haven't followed that language for a little while
00:17:05skyfex*he
00:17:27NimBotAraq/Nimrod devel 66a2ebb Zahary Karadjov [+0 ±1 -0]: rename compilerProcs to match the recently changed jssys.nim
00:17:45Araqskrylar: they have bignums but they don't have *unsigned* bignums
00:17:57skrylarskyfex: there's been a lot of dumbness like them removing 'delete' because of reasons that equate to poor programming in phobos, and then replacing it by saying "you should write your own new/delete for every lib"
00:18:07skrylarskyfex: as well as a massive increase in template-related ICE's
00:18:14DiscolodaAraq: dont they cover the same range (with enough member) 0 .. whatever
00:18:21Discolodamemory*
00:18:43Demoswas D's delete like c++'s (it would run a destructor and free memory)?
00:18:45AraqDiscoloda: the point is they really shouldn't so that promotion from nat to int cannot fail
00:18:54skrylarDemos: yes, it had a proper new/delete
00:18:57skyfexskrylar: Define ICE?
00:19:05Demosinternal compiler error perhaps?
00:19:07skrylarDemos: then they decided "just let the GC do it" even though the GC was always meant to be optional under Walter
00:19:11skrylaryes, internal compiler error
00:19:26skrylarWalter's D produced useful errors, Andrei's D gives the usual GCC barf if anything
00:19:41skrylarsixteen-layer-of-template-errors-wait-no-just-segfault
00:19:48Demoswell if you can "let the GC do it" than you probably don't need a fancy delete
00:20:12skrylarDemos: removing 'delete' because you wrote bad code is a poor rationale
00:21:17Demoswell yes. I don't like c++ style new/delete myself. I am not sure that having initialization and allocation be the same operation is such a great idea.
00:21:56skrylari think there's a time and a place for new/delete and new/gc, and D1 already had defined semantics for that as well as RAII support
00:22:07AraqDemos: spot on, these need to be 2 ops. nimrod makes the same mistake
00:22:15skrylarI do not appreciate some C++tard saying I don't need a language feature because he wrote shitty code and rather than fix the god damn code, he just decides to remove language features to cover it up
00:22:27Araqbut we'll find a way to deal with it
00:22:45DemosAraq, really? I thought nimrod just said "write an initialization function"
00:23:16AraqDemos: that's true but we got PFoo(x: val) syntax which does both
00:24:06DemosI did not know about that syntax, I thought you could only initialize stuff as values like that but could asign the resulting object to a gc'd (or alloc'd) pointer
00:24:15*Matthias247 quit (Read error: Connection reset by peer)
00:24:44zahary1I plan to add a "placement new" operator that will be able to construct objects into pre-allocated slots
00:25:47Araqzahary1: I think I have a superior design with my new pointer tagging stuff :P
00:26:04zahary1is it described somewhere?
00:26:15Araqnope
00:26:27zahary1so how does it work?
00:26:32Araqwanted to blog about it ...
00:26:37DemosI fail to see how placement new is needed when we use init functions instead of constructors? if I have someallocatedmemory = initFoo() wont the result variable in initFoo actually be that memory?
00:26:40Varriount|Mobilezahary1: Is your 'placement new' described anywhere?
00:26:55zahary1the pointer says how the memory is allocated and then there is something like placement new that construct the object there?
00:27:14zahary1we've discussed it here some time ago
00:27:34AraqI don't think so
00:27:41Araqbut yes
00:27:45zahary1Demos: placement new can avoid copies when you use a custom allocation scheme
00:27:56zahary1… while allowing you to use your standard "init functions"
00:28:28skrylarmy code thus far has 'newx' which does new(result); initx(result) and just initx() so..
00:29:52NimBotAraq/Nimrod devel 8036483 Araq [+0 ±8 -0]: renamed noStackFrame to asmNoStackFrame
00:29:52NimBotAraq/Nimrod devel ef8a298 Araq [+0 ±9 -0]: vm2: new representation of registers
00:29:52NimBotAraq/Nimrod devel 2f64955 Araq [+0 ±4 -0]: fixed opcConv
00:29:52NimBotAraq/Nimrod devel 3918bc5 Araq [+0 ±1 -0]: simple macros work again
00:29:52NimBot7 more commits.
00:29:55Demosright, but presumably your allocator gets you some memory of a size sufficent to hold your object, then you can just say memory = initFoo()
00:30:35Araqso, it's done
00:30:37Araqgood night
00:30:41skrylarg'night
00:30:43Varriount|MobileNight
00:30:45zahary1Demos: this won't compile now, but it's equivalent to "the placement new operator"
00:30:53zahary1it requires some codegen support
00:32:48Demosright. I would prefer to just use the result/NRVO thing nimrod already has rather than a whole new placement new
00:33:44zahary1I'm calling it this way for a lack of another name - I'm referring to this finer NRVO handling
00:34:21Demosoh... just using NRVO causes problems with user defined `=`.
00:35:10*oxful_ quit (Quit: Leaving)
00:35:53zahary1the end goal is to have something like this possible var x = myAllocScheme(MyObject()), without any unnecessary constructions and copies
00:37:17*darkf joined #nimrod
00:38:10DemosI thought var x = myalloc(Type) \n x = initMyObject() already did that
00:42:57zahary1you have to make that at least x[] = init() and then it's still not quite good, because it will invoke a user-defined = operator as you mentioned, which has to be written in defensive style
00:45:30Demosright. But currently, since we don't have user defined `=` x[] = init() does not perform a copy, right? the address of x is just passed to init. c++ lets you do auto foo = initFoo() and foo's copy constructor is NOT going to get called
00:47:55EXetoCyou mean init(x[])?
00:48:54EXetoCotherwise you're not passing x or the memory that it points to, to anything
00:49:55Demosactually I think TFoo* foo = (TFoo*)malloc(sizeof(TFoo)); *foo = initFoo(); may invoke copy elision in c++ as well. Would have to test. And yes I do mean that EXetoC. my point was that perhaps it is worth letting the compiler optimize out user defined `=` in the case of a return. And right. The idea is that for a procedure like proc init(): TFoo the compiler could generate something like proc init(ptr TFoo) and use that instead
00:50:19DemosI was actually under the impression that this is why result works the way it does
00:52:13EXetoCyeah so you need some kind of support for it
00:52:32Demosright, it is an optimization. More or less
00:53:04EXetoCI prefer user-defined constructors that are invoked by specifying the type name.
00:53:05DemosActually with nimrod's side effect tracking it may never change the behavior of the program
00:53:34EXetoCyour approach would be alright, save for the fact that you must always introduce temporaries
00:53:34Demossure init could be called initFoo or whatever
00:53:48EXetoCwell actually that's always the case when dealing with 'var' params
00:55:09Demosmy approach is to eliminate the temporaries and have functions that return a value type just write into whatever their result is being assigned to
00:55:25EXetoCDemos: yes like now, though I often omit the prefix (still with camelCase)
00:56:43Demosso yeah, you need a pointer on the stack but that is it. but it makes those sorts of functions fast for all sizes of objects
00:56:51Demoss/but//
00:58:33Demosbest of all the constructor does not care /at all/ how the memory was allocated, just that it was
00:58:40Demoswell the init function
00:59:55EXetoCright. I think Araq said that was for > 1.0, but that's assuming he understood me correctly
01:01:02Demoswhat RVO or placement new?
01:02:00DemosI assumed RVO was already done sice the pattern is enforced by the language
01:05:21EXetoCthe latter
01:08:07Demoswell let it be known that I dont like that feature :D
01:08:57EXetoCI mean allocation-agnostic constructors
01:11:08DemosI guess I don't see why we need constructors that are anything more than a shortcut for setting each member equal to some value.
01:11:17Demoswhich is already allocation agnostic
01:21:28EXetoCI didn't say otherwise
01:21:50Demoswell then my work is done :D
01:29:16*carum quit (Remote host closed the connection)
01:29:51EXetoCand then it's a little more than just a shortcut if "let x = init()" is to be allowed. I think we'll get that
01:47:41fowltemplate echoCode* (x): stmt = echo(astToStr(x), " #=> ", x)
01:48:09skrylarEXetoC: wouldn't that require overloading on the return type?
01:57:30EXetoCskrylar: we were discussing language support for constructors, rather than just normal procs
01:57:52skrylarEXetoC: whats the difference? :)
01:58:17skrylarlet x = init() would require typeinfo, so you'd have let x: Thing = init() which isn't that different from let x = NewThing except maybe better generics
02:01:24EXetoCinit is just an arbitrary name. I didn't imply that it was generic
02:01:26*DAddYE quit (Remote host closed the connection)
02:02:19EXetoC"let x = Foo()"
02:03:11*carum joined #nimrod
02:09:09*Varriount-Mobile joined #nimrod
02:09:09*Varriount|Mobile quit (Read error: Connection reset by peer)
02:13:14*Varriount-Mobile quit (Ping timeout: 246 seconds)
02:26:08*q66 quit (Ping timeout: 252 seconds)
02:31:26*carum quit (Remote host closed the connection)
02:31:59*JStoker quit (Excess Flood)
02:32:14*JStoker joined #nimrod
02:38:30*carum joined #nimrod
02:51:32*carum quit (Remote host closed the connection)
02:57:40*Mordecai joined #nimrod
02:57:50*psquid quit (Ping timeout: 264 seconds)
02:58:01*Mordecai is now known as Guest49316
03:06:55*brson quit (Quit: leaving)
03:15:11*BitPuffin quit (Ping timeout: 246 seconds)
03:16:21*q66 joined #nimrod
03:22:53Demoswe were discussin RVO, init may as well be initFoo() and just be proc initFoo(): TFoo = ...
03:29:59*nequitans quit (Ping timeout: 244 seconds)
03:39:17*aftershave_ joined #nimrod
03:45:23DemosType system question: I often see people claiming that a good type system lets you do thing like representing the units of various quantities and not mixing units and whatnot but I have never really seen any set up where you can define like a meter and second type and then have an expression x*y = ...meter*second where x was of type meter and y of type second. Without this using types to represent units seems a bit annoying
03:45:55DemosI mean there are papers on demensional analysis in type systems but nobody seems to use anything like this
03:51:14*vendethiel quit (Ping timeout: 264 seconds)
03:52:23*vendethiel joined #nimrod
03:52:33*aftershave_ quit (Quit: Computer has gone to sleep.)
04:01:45renesacDemos, you can do what you said in nimrod using distinct types and implementing the relevant procs
04:02:56Demosright, but if I have like type meter = distinct int and type second = distinct int than I would need to manually define meter * second as a type and define the procedure to multiply them
04:02:57renesacproc `*` (a: meters, b: seconds): ??? = ...
04:03:17renesacyep
04:03:21Demosthat is a pain
04:03:45renesacwell, I'm using distinct types to implement mixed precision arithmetic for my bignum module
04:04:25renesacI just made my distinct u32 convertible to u64, so it is cast to higher precision before operations
04:05:29*carum joined #nimrod
04:05:32renesacnot the most efficient ever (ideally we would be using base u64, result u128), but very quick
04:05:39renesacto implement
04:05:48renesacand you have {.borrow.}
04:06:09renesacbut if you want special behaviour, you need to define it
04:06:43renesacotherwise the computer won't read your mind
04:06:56renesaccasts are your friend
04:08:19Demosright. But there are rules that define valid conversions between the 7 base units and stuff derived from them
04:08:56Demosbut then if I have a rule that I can conbine units, I need to define a rule for those as well.... maybe typeclasses and macros or something.
04:10:03Demosyeah I think you can do it with macros and 7 special types
04:10:03renesachum.. I see
04:10:26renesacarbitrarily combining different types can lead to a type explosion
04:10:40Demosif everything checks out you can just cast to the base type of each unit (real numbers)
04:10:43Demoswell floats
04:10:48renesacwell, you have a finite number of useful units...
04:10:52Demosno
04:11:01Demosyou can combine the base units however you like
04:11:11Demoswell in an infinate number of ways
04:11:12*carum quit (Remote host closed the connection)
04:11:16Demosnot really however you want
04:11:25renesacright
04:11:43renesacbut do you need infinite possibilities?
04:11:51Demosbut like if I have a proc that takes a parameter with units of like m*s I could not pass something of type s to it
04:11:56Demospretty much
04:12:09renesacor you can work with m/s, m/s², but w/o m/s^4
04:12:13renesac?
04:12:40renesac*only with the first two, w/o the more exotic
04:12:56renesacif yes, we have a finite amount of types
04:13:38*renesac just thinking of the simpler way, can't think of macro magic
04:15:57Demosapperently a finite set of units forms a vector space with a standard basis of (Unit1, ..., Uintn) not sure how invalid stuff fits in though
04:16:49Demosyeah that does not include multiplication of dimensioned values
04:18:36Demosoh wait you just let multiplication be the addition operation for the vector space
04:21:41Demosso then /I think/ that each derived unit you may want is just a specific vector
04:21:49*carum joined #nimrod
04:26:00Demosyou may not actually need macro magic
04:33:54renesacI haven't followed, but the different operations for each pair of types may indeed be a problem
04:36:14renesachum... yeah, really not, because s * s type should be s, not s^2
04:36:30NimBotVarriount/NimLime master b308e49 Erik O'Leary [+0 ±2 -0]: Added support for procedures without ()'s
04:37:43Demoswhat? 4s * 5s should yield 20s^2...
04:51:27NimBotVarriount/NimLime master 4eb9dbc Erik O'Leary [+0 ±2 -0]: Added support for highlighting generic procs/etc
05:11:30*carum quit (Read error: Connection reset by peer)
05:12:21*carum joined #nimrod
05:34:19Demosbasicly each identifier needs to be associated at compile time with an ordered 7-tuple
05:34:25Demosof integers
05:43:35*renesac quit (Ping timeout: 246 seconds)
05:44:00*renesac joined #nimrod
05:45:06Demostrouble is that I need to be able to attach this extra info to symbols, not sure how to do that yet.
05:58:12renesachumm, right
05:59:33*carum quit (Remote host closed the connection)
06:13:17renesacDemos, I made a sketch: https://gist.github.com/ReneSac/6dfe2a72d7d0f1822d43
06:13:31*carum joined #nimrod
06:13:44renesacnot sure if I'm making some basic error again
06:14:56renesacand not sure if that compilation error is a compiler bug, I'm not going to go deeper at it now
06:42:25*ddl_smurf joined #nimrod
06:49:12Demosright, but that looks like a runtime check. Ideally TUnit would be an alias for int64
06:49:17Demossorry float64
06:49:27Demosthen the units are tracked at compile time
06:50:26Demosbut yeah, that is the idea
06:52:06Demoswowah Varriount nimlime cool commits. You using the new idetools fixes?
06:53:10Demosand ofc you need a multiplication operator that just scales a dimensioned value by a real (floating point) number
06:57:31Demosactually that is not what you want. Scalar multiplication should raise the power
06:59:00Demosbut something like 4 * 2s is just 8s because that particular * operator is dealing with the values, not the dimensions
06:59:41Demos2 * s = 2 * (0,1) = (0,2) = s^2
07:00:30Demosanyway I gotta go to sleep
07:00:45*Demos quit (Read error: Connection reset by peer)
07:06:54*shodan45 quit (Quit: Konversation terminated!)
08:02:00NimBotAraq/Nimrod devel 7b5dae4 Araq [+0 ±4 -0]: made some tests green; htmlgen still broken
08:49:10*faassen joined #nimrod
08:51:46*sale4one joined #nimrod
09:29:48*oxful joined #nimrod
09:36:04*carum quit (Remote host closed the connection)
10:02:18*BitPuffin joined #nimrod
10:15:34*r0b2 quit (Ping timeout: 244 seconds)
10:34:10*oxful_ joined #nimrod
10:38:02*oxful quit (Ping timeout: 264 seconds)
10:51:21*DAddYE joined #nimrod
10:55:36*DAddYE quit (Ping timeout: 240 seconds)
11:00:13*q66 quit (Quit: Leaving)
11:24:36*sale4one quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
11:31:54*q66 joined #nimrod
11:37:47*q66 quit (Ping timeout: 252 seconds)
12:28:58*ddl_smurf quit (Quit: ddl_smurf)
12:57:22*EXetoC quit (Read error: Operation timed out)
13:08:06*Clinteger\c joined #nimrod
13:08:06*Clinteger\c quit (Changing host)
13:08:06*Clinteger\c joined #nimrod
13:08:30*Clinteger\c left #nimrod (#nimrod)
13:24:06*ddl_smurf joined #nimrod
13:25:17*ddl_smurf quit (Client Quit)
13:29:36*BitPuffin quit (Quit: WeeChat 0.4.3)
13:40:11*ddl_smurf joined #nimrod
13:45:19*aftershave_ joined #nimrod
13:48:10*darkf quit (Quit: Leaving)
14:01:44*EXetoC joined #nimrod
14:20:57*aftershave_ quit (Quit: Computer has gone to sleep.)
14:37:37*zahary joined #nimrod
14:46:05*r0b2 joined #nimrod
15:28:37*zahary quit (Quit: Leaving.)
15:42:07*Endy joined #nimrod
15:42:22*Endy quit (Client Quit)
16:13:31*faassen left #nimrod (#nimrod)
16:15:50*r0b2 quit (Ping timeout: 264 seconds)
16:54:16VarriountDemos: Some of the new commits aren't by me.
16:55:48*r0b2 joined #nimrod
16:56:41VarriountAraq: koch boot is broken
16:59:33*brson joined #nimrod
17:00:05VarriountAraq: https://gist.github.com/Varriount/9213017
17:01:19AraqVarriount: I'm aware
17:02:35*nande joined #nimrod
17:02:48VarriountAraq: That's why koch boot is failing with the testers
17:08:54NimBotAraq/Nimrod devel e755a55 Araq [+0 ±1 -0]: bootstrapping should work again
17:19:59VarriountAraq: Thanks!
17:22:24Varriountskyfex: Just to make sure, you are using the NimLime plugin for sublime text, right? Not the other, outdated plugin?
17:24:03skyfexI was using the outdated one (I believe NimLine is not in the package manager?) but updated to Sublime 3 and NimLine now
17:30:25*sale4one joined #nimrod
17:42:38skyfexVarrount: Do you know if it's possible to get the Goto Symbol list to be indented? Like in Nimrod, if a proc could be indented if it was defined within another proc?
17:45:53*BitPuffin joined #nimrod
17:45:59BitPuffinOh threads
17:46:03BitPuffinyou motherfuckers
17:46:30skrylarBitPuffin: lol threading issues?
17:46:41BitPuffinyeah
17:46:46BitPuffinbut I fixed it like a baws
17:50:41Varriountskyfex: It's possible, if difficult to do.
17:51:04*ddl_smurf quit (Quit: ddl_smurf)
17:53:30skrylarBitPuffin: threading sadness is more fun than unicode sadness :)
17:54:36skyfexOoooh, I love the Check File feature. Neat :)
17:55:36Varriountskyfex: Thanks.
17:55:50skyfexWhat does the Index feature actually do?
18:01:03NimBotVarriount/NimLime master a0cf741 Clay Sweetser [+0 ±2 -0]: Fixed check command lag (stupid threads)
18:01:19Varriountskyfex: Ask OrionPK
18:03:05*aftershave_ joined #nimrod
18:03:33*io2 joined #nimrod
18:05:39Varriountskyfex: Python threads are wierd.
18:07:07*io2 quit (Excess Flood)
18:09:13*DAddYE joined #nimrod
18:09:24Araqhi DAddYE
18:12:02VarriountHelp me. I'm stuck in a Music Appreciation class with a ranting professor out of touch with modern thought.
18:13:33OrionPKindex lists out a bunch of functions/types etc
18:13:40OrionPKfrom the std lib
18:19:00*Endy joined #nimrod
18:19:30*renesac quit (Excess Flood)
18:20:47Araqit's surprising how many parts of the stdlib are used at compile-time in the tests ...
18:23:11skrylarVarriount: fire up reaper, play random noises and tell him to appreciate it
18:23:12skrylarlol
18:23:29*renesac joined #nimrod
18:26:33Varriountskrylar: That would only encourage him.
18:26:48skrylarVarriount: at least playing random notes is fun to do
18:29:38skrylari've never been to a 'music appreciation' class. i got bored during the music parts of school because i wanted to use the piano and they were like "NO."
18:31:12*aftershave_ quit (Quit: Computer has gone to sleep.)
18:33:34VarriountNow he's ranting about telling the truth and persian culture.
18:33:57Varriountdom96: Babel path still doesn't work.
18:34:16*nande quit (Remote host closed the connection)
18:34:20dom96Varriount: does for me
18:34:27VarriountOn windows?
18:34:32dom96yes
18:34:41VarriountHm. Might be my installation
18:34:57dom96is it giving you the same error?
18:38:40Varriountdom96: "babel path babel" gives "Warning: Package 'babel' not installed"
18:39:10dom96did you update it correctly?
18:39:37VarriountBy using "babel install babel"?
18:41:43Varriountdom96: ^
18:42:51dom96that isn't supported on Windows
18:43:22VarriountOh. Good to know that little fact is stated somewhere.
18:44:05Varriountdom96: Then what should I do?
18:44:19reactormonkShould I create an issue for history rewrite to get the csources out of the git repo?
18:44:44dom96Varriount: clone the repo manually.
18:45:03Varriountdom96: Which I have done.
18:45:56VarriountI cloned a repo, installed nimlibpng, and used "babel path nimlibpng", and things still didn't work.
18:49:33dom96have you installed babel?
18:51:09*ddl_smurf joined #nimrod
18:55:41*ddl_smurf quit (Client Quit)
18:56:02*carum joined #nimrod
19:00:33*brson quit (Quit: leaving)
19:01:13*brson joined #nimrod
19:02:00*Mat3 joined #nimrod
19:02:02Mat3hello
19:03:04*brson quit (Client Quit)
19:03:46Araqhi Mat3 brb
19:05:02reactormonkAraq, purging csources from the repo relevant?
19:08:52Mat3hi Araq and all
19:13:10*TylerE joined #nimrod
19:17:23Varriountdom96: Got it working, however the path command breaks on packages with '-' in their names.
19:19:17dom96how does it break?
19:23:17Araqreactormonk: I think so but can we do it without breaking each and every fork?
19:25:32reactormonkAraq, no. For PRs, I could find a way to fix them.
19:41:15*aftershave_ joined #nimrod
19:58:05*aftershave_ quit (Quit: Textual IRC Client: www.textualapp.com)
20:02:43*carum quit (Remote host closed the connection)
20:02:51*carum joined #nimrod
20:06:16*aftershave_ joined #nimrod
20:13:34*carum quit (Remote host closed the connection)
20:22:46AraqMat3: do you know any tricks of how to implement the uint8, 16, 32, 64, int8, 16, 32, 64 ops with little code?
20:23:19*Araq still hates this integral type zoo
20:25:35*Demos joined #nimrod
20:25:46Araqdom96: what's your number 1 showstopper bug for asyncio?
20:26:13dom96nimrod c -r asyncio2
20:26:16dom96on linux
20:26:24dom96telnet localhost 6667
20:26:27dom96it will crash
20:27:18DemosVarriount, is nimlibpng the only package that does not work?
20:28:11Araqseriously? you expect me to use telnet?
20:28:55dom96oh come on
20:29:06dom96All you need to do is connect.
20:29:15Araqwe need nimtelnet
20:29:28dom96if you want you can compile & run the equivalent nimrod app
20:30:01*sale4one quit (Remote host closed the connection)
20:30:30Demosnope babel path fails on all packages it seems
20:30:37NimBotAraq/Nimrod devel b36da05 Araq [+0 ±1 -0]: htmlgen works again
20:31:01dom96Demos: Did you update babel?
20:31:19Demosbabel install babel right?
20:31:46dom96That won't work on Windows.
20:32:53Demosbecause of replaceing running executables?
20:33:03*vendethiel quit (Quit: q+)
20:33:05Demosit does crash mintty though
20:33:12BitPuffinbabel install babel install babel install babel install babel install babel install babel install babel install babel install babel
20:33:36BitPuffinlol telnet
20:33:37BitPuffinlike what
20:33:45BitPuffinwell
20:33:59BitPuffinI guess the nimrod community isn't really known for its great security practices
20:34:02dom96Demos: yes
20:34:08*aftershave_ quit (Quit: Textual IRC Client: www.textualapp.com)
20:34:26Demostelnet is fine if you are sending public text anyways
20:34:35Demosor for like the telnet based starwars
20:34:46BitPuffin^the only thing I use it for
20:35:10dom96BitPuffin: Yeah, because debugging a corruption requires the greatest encryption ever.
20:35:18BitPuffindom96: it does
20:35:20Demosso it seems that msys2's pacman manages to replace running executables, it often causes some major crashing and burning though
20:35:33BitPuffinI wasn't following what you were taliking about
20:35:41BitPuffinjust that telnet makes me lol
20:35:48BitPuffindom96: snarky boy
20:36:15BitPuffindom96: y u no ple doto
20:36:35dom96Because i'm busy being productive :P
20:40:45Demoshm installing babel from git seems to fail
20:40:50*5EXAAMAAB quit (Ping timeout: 252 seconds)
20:42:02skrylarBitPuffin: erm..
20:42:27skrylarI concur with the "is there something that needs encrypting?" sentiment
20:43:04*aftershave_ joined #nimrod
20:43:11skrylararen't there enterprise servers that sometimes have telnet sockets for internal use, because its really easy to toss one in for debugging?
20:43:21skrylars/servers/server software
20:43:56Araqskrylar: apple does that. They also disabled SSL :P
20:44:09Araqgoto fail; goto fail;
20:44:54Araqit's surprising that after all these years running a static checker over every piece of code that is pushed is not mandatory
20:45:19Araqsays quite a lot about the company, IMHO
20:46:23DemosI am not so sure. I think the number of false positives from -Wunreachable-code is quite high
20:46:30Demosesp with c++ generic code
20:47:16AraqI'm talking about a static checker, not gcc
20:47:29Araqtools which cost money
20:47:50Demoscan clang's static analysis stuff manage?
20:48:12Araqclang's stuff is getting good, but it's not there yet, afaict
20:49:46skrylarAraq: so where is the static checker for nimrod :P
20:50:28Demosyou kinda need to know what failure prone code looks like before you write a static analysis tool
20:50:29Araqskrylar: it's where the commercial support is ... in alice's wonderland
20:53:09skrylarlol
20:53:21skrylarwell the klie project was neat
20:53:45*ddl_smurf joined #nimrod
20:53:56skrylarwould be nicer if it allowed making test cases for a specific function instead of trying to deep-scan the whole codebase though
20:57:47skrylarAraq: well its not quite static analyzers but i ported over the grapheme code earlier
20:58:38Araqskrylar: aweseom
20:58:49Araqthat should be in the core though, not a babel package
20:58:59Araqwell for a start a babel package is good enough
20:59:43skrylarat the moment i'm porting it from C, then i'm porting the tests (i had some pretty nice ~95% test coverage in the C version, not sure how to check in the nimrod version) and then we'll see
20:59:58skrylarthere's some of the code which is pretty hilarious to look at now, like loops that make bitfields full of 1's
21:00:14*aftershave_ quit (Ping timeout: 264 seconds)
21:00:47skrylarit's not sinful code overall, but it will probably need some beautifying
21:00:53Araqbecause you didn't know about bitwise negation back then?
21:01:01skrylari didn't put -1 in unsigned types
21:01:19skrylarit also encodes codepoints back to front because it was easier for me to figure out how to do the math for it
21:01:40Araqthat might be bad for memory prefetching
21:01:52skrylarwell that it does is you give it the number 8000
21:02:01skrylarand it starts at the final byte in the encoding and encodes backwards
21:02:06skrylarthen gives you the data in the correct order
21:02:33skrylari did it that way because you can bit shift everything down in a single pass, but it does look derpy
21:03:18skrylarsome of the C crap became iterators now, which is a lot nicer
21:03:27Araqsounds good, we need more voodoo level stuff in the stdlib
21:03:51Araqpeople are starting to think they can contribute to the stdlib
21:03:54skrylare.g. the "encode to bytes" in C required you to give it bytes to encode in to, now it is an iterator you ask to give bytes to do what you want
21:04:03Araqyour code will teach them a lesson
21:04:13skrylarmy horrible no-education code? lol
21:04:41skrylar(sad fact: i didn't know algebra when i wrote this unicode module ._.)
21:04:53*ddl_smurf quit (Quit: ddl_smurf)
21:05:09*aftershave_ joined #nimrod
21:06:58*Matthias247 joined #nimrod
21:07:13*ddl_smurf joined #nimrod
21:09:09*Endy quit (Ping timeout: 244 seconds)
21:10:07Demosthat is quite the introduction to the world of programming :D
21:10:28skrylarnaaah, i've been coding for ~10 years, i was just horrible at it
21:11:12skrylari found a math book recently that actually explains things properly so i've been backfilling away my stupidity
21:11:58skrylarthough my introduction to Stroustrup was through his book that goes on about a bunch of nonportable code that didn't compile and stuff that required including a crutch header xD
21:12:15*carum joined #nimrod
21:12:56Demosan old version of TC++PL or D&E?
21:13:04skrylarProbably TC++PL
21:13:10skrylarI remember taking it back and just getting a Deitel
21:13:45skrylarthe deitel was this 500 pound mass of supergloss paper in 10pt font
21:14:00Demosafaik TC++PL should compile on modern compilers, at least the last two versions. It is known as a very good c++ book. I admit that I have never gone through a c++ book....
21:14:29skrylari don't know why but i kind of like BASIC's syntax.
21:16:03DemosBASIC was pretty badass for its time. I mean you have a whole interpreter and dev envirenment on such slow computers. My 2.6Ghz quad-core i7 and ~500MB/s SSD can not managed to provide speedy c++ completions
21:16:24skrylarDemos: you just need to be in denial more
21:16:35skrylarits not a "slow compiler", its a "mature implementation"
21:16:56DemosI actually learned Logo --> Java --> c++. Well it is a slow language that is totally hostile to tooling
21:17:34DemosC++'s semantics are not that bad.
21:17:58skrylarVB -> Delphi -> Java -> C++ -> Ruby/Python -> C++ -> D -> C++ -> C# -> C99 -> Rust -> Nimrod. xD
21:18:08Demosby slow language I mean that the way the language is specifies forces implementations to be slow
21:18:11BitPuffinAraq: we don't even have a static checker in nimrod do we?
21:18:28*ddl_smurf quit (Quit: ddl_smurf)
21:18:33AraqBitPuffin: well I do code reviews
21:18:38skrylarDemos: because it was never designed to be good, it was people chucking stuff over C
21:18:40Araq:P
21:18:45Demosoh yeah I learned C# in there someplace but honestly if you know C# you know java.
21:18:46BitPuffinAraq: not tha same :P
21:18:50skrylarif you wanted tooling you had to go with Obj-C :)
21:18:55skrylaror LISP
21:18:56Demoswell imo C has some of the same problems
21:18:56BitPuffinAraq: so you can do code reviews for my code too? 8D
21:19:06skrylarDemos: C at least has cscope and cstags
21:19:08Araqtrue, a static checker is not as good as me
21:19:26Demosdoes LISP have tooling? I would think it would run into the same trouble as like JS, where it is hard to know what the hell is defined
21:19:35skrylarLisp has extensive tooling.
21:19:46skrylarSymbolics Lisp machines had excessive amounts of it
21:20:07DemosI guess not having to parse the language must be nice
21:20:10skrylar"hey OS, give me that function. okay who uses it? okay now tell me whenever someone calls this function and print the parameters"
21:20:16BitPuffinAraq: launch Araq As A Service
21:20:19Demosor rather not having to form an AST
21:20:33skrylarDemos: probably a mix of smarter programmers <_<
21:20:34Demosso like a debugger...
21:20:50BitPuffinand then some fucker creates an open source alternative to Araq
21:21:06Demoswho has smarter programmers? how did that come up?
21:21:14skrylarAlbino Replaces AraQ v0.2b
21:21:50*Araq is not open source
21:22:04skrylarDemos: well the barrier to entry on lisp is higher because they tend to use a lot more comp-sci crap than the average Java or C code from "programmer school"
21:22:22skrylare.g. MIT scheme required actually knowing what a continuation is
21:22:55*aftershave_ quit (Ping timeout: 272 seconds)
21:22:57Matthias247I don't know that :)
21:23:22Matthias247seems you can do software without it :)
21:23:25DemosCPS is not hard to grasp, I mean haskell is successful and they needed to import tons of abstract algebra just to get a.b = 4 to work
21:23:40skrylarDemos: people were still hardcore failing MIT's comp-sci though
21:25:07Matthias247Demos: don't know if it's really successful or currently only hyped by language geeks.
21:25:11DemosI dont really like CPS, not that great when mixed with types
21:25:23Matthias247There's not a lot of real-world haskell code
21:25:36Demosalthough the only time I have really designed something using CPS was in javascript so who the hell knows
21:25:48skrylarhere's something i find weird: smalltalk has an outline based IDE traditionally; class browser, single function display n'such, that language apparently still runs bank systems
21:26:05skrylarwhy don't we get those kinds of nice things for file languages :(
21:26:14DemosI hear smalltalk did not scale that well...
21:26:39Demosbut that is like 3rd hand info so who the hell knows
21:26:41skrylarwell considering Sun bought up the dev teams who were writing smalltalk optimizers so they could steal the tech for java... >>
21:27:11skrylarseriously, a big chunk of the Hotspot VM was basically taken from Strongtalk
21:27:29skrylara lot of V8's javascript improvements also yoink things they were doing to improve smalltalk performance
21:28:33Araqskrylar: we have all these things for file languages
21:29:10Araqand smalltalk's IDE was awful, yes, I used it
21:29:34skrylari liked the class browser :\
21:29:53Demosnow we don't have many of these things for c++ because if you try and write tools for c++ you will go insane
21:30:22Araqwell ymmv of course, but smalltalk is awful
21:30:23skrylari've seen eclipse's attempt at a class browser for java, but that doesn't actually segregate methods in to purposes
21:30:58Demoswell if you factored stuff into classes wrong than you are kinda screwed
21:31:14DemosI know visual studio has quite a nice object browser
21:31:28skrylarDemos: i've seen a few but they don't have any semantics
21:31:29Araqsmalltalk -- everything happens elsewhere
21:31:53Demoswhat do you mean semantics, you just list the definition and maybe some docs
21:31:57Araqit's like Java on steriods
21:32:00skrylarDemos: in ( http://i.stack.imgur.com/RFHCD.gif ) it shows the package, class names, then the grouping for methods
21:33:03skrylari recall seeing OGRE actually use the grouping commands in doxygen for the really complex objects, but last time I used eclipse and visual studio they are oblivious to the concept that methods might be grouped in some way
21:33:13BitPuffinAraq: how is smalltalk like java
21:33:50AraqBitPuffin: factories, adapters, methods that are 2 lines long
21:34:11DemosOGRE is kinda an example of how not to write an engine though....
21:34:22BitPuffinDemos: lol yea
21:34:30skrylari think STL docs group methods too
21:34:51skrylarwhether or not ogre is the pinnacle of computer science doesn't really reduce the "method grouping is kinda useful" example though :)
21:35:03Demosyeah they do. The thing is that the groups that are useful are around ADTs that you probably dont want to specify in code with and interface
21:35:06skyfexskrylar: Wooo! Delphi, my first!
21:35:30skrylarDemos: i use group markers around properties for instance
21:35:47Demosare group markers doxygen things?
21:36:15skrylarDemos: i have vim folding markers around my getter/setter, those regions have 'nice names', and then with the Voom plugin i can zoom around the file pretty quick
21:36:59skrylarits basically the same as if in the smalltalk browser you had a "children" group and put all the methods which involve dealing with that window's children in that group
21:37:02Demosyeah I sometimes use #region and #endregion in VS
21:37:14skrylari've seen people bitch and moan about #region
21:37:31Araqgah, you're one of those
21:37:32DemosI use in more in C# than C++
21:37:40Araq#region is awful too
21:37:43Demossince afaik it is nonstandard in c++
21:37:52skrylarhe's really going to hate all the vim markers then :P
21:37:57skrylar# Combining Diacritic marks {{{
21:38:40Matthias247I thought region was only supported for C#
21:38:56skrylaryeah, its a C# thing
21:38:59Matthias247never tried to use it in c++
21:39:05DemosI like that nimrod does not force me to categorize stuff that I really don't need to. Although being able to attach a method to a type (like a static method in c++) can be nice in generic code
21:39:18DemosIt may be like #pragma region in c++ or something
21:39:54skrylarLeo does some neat things for categorizing code
21:40:06DemosI think having babel somehow sort by typeclass or something could be good. No idea how that would work
21:40:25Demossorry nimdoc not babel
21:40:27Demosderp
21:40:42AraqDemos: that's planned
21:40:56skrylaryou can split up a file in to different 'nodes', and then clone those nodes around an outline; which is nice because you can isolate a function that bugs and someone's comments about the function so they're grouped together; all though leo also stupidly loses clone status on nodes really easy >:|
21:40:56DemosI know
21:41:22Demoslooks kinda like Acme
21:41:31skrylaryeah, i don't use it sadly
21:42:04skrylarthe concept is great (especially because you can have it hide the #region markers if you're dealing with picky people) but it doesn't gracefully re-import external content too well
21:42:09Demosin any case I want the tools/compiler to figure out how stuff is related as much as possible
21:42:17Demoswithout my input
21:42:24skrylarthey're never going to do that smartly
21:43:27Demossure, but for some stuff they can. Like how nimrod does not have "member" functions and thus does not need "extension methods" or anything like that. Or how you can define a whole typeclass and things are just a member if they satisfy all the constraints
21:44:08skrylari need to see if stgit works on windows later
21:44:55skrylarpatch queues are great for things like when you use vim markers to navigate projects and you can just pop them out when you go to submit patches
21:46:54Demosthose kinds of markers should not be stored in the source text
21:46:56Demosimo
21:47:06*ddl_smurf joined #nimrod
21:47:18skrylarif you use doxygen they probably already are
21:47:56Demosright, but the places that are actually marked should refer to the docs, that reference should be stored elsewhere. But whatever.
21:49:05skrylari'll probably revisit that when i'm out of unicode hell and i can work on my outliner some more
21:49:38skrylari liked the trick Leo does where it uses the #blah markers inside of text files so it can remember where the regions are, but then it makes a separate copy where those markers are removed
21:50:04skrylarso if someone else changes the file, it can diff the markers back in and then read all of the data back in to however you organized it
21:50:05*carum quit (Write error: Broken pipe)
21:50:29skrylarso you get to organize all the crap in a way that is best for you to navigate / annotate / whatever it, and nobody has to bitch about your #region tags
21:56:47*carum joined #nimrod
21:58:39*brson joined #nimrod
22:05:56*carum quit (Remote host closed the connection)
22:12:37*carum joined #nimrod
22:12:46*carum quit (Client Quit)
22:13:17skrylaralright time to deal with this last 200 lines of porting for the day
22:14:20Araqc2nim can translate C function bodies, you know
22:14:57skrylari don't have c2nim
22:15:19Araqnimrod c compiler/c2nim/c2nim
22:15:24skrylarthey're also not 1:1 conversions; like rewriting the pointer arithmetic to just using string indices
22:15:37Araqok
22:15:57skrylari had one method that was some horrible 80 mess that i rewrote to be 8 lines of nimrod oO
22:19:11Araqyay
22:19:15Araqgood night
22:19:19skrylarg'night
22:21:00Demoswhen trying to wrap libpng I had better luck dumping the manpage and running c2nim on that (after some regex based mungeing ofc) than I did trying to c2nim png.h
22:21:13skrylarDemos: i just handbind things still :/
22:21:31Demosinterestingly the manpage listed several functions that were not actualy exported by libpng.so
22:21:38skrylaroops
22:21:44*DAddYE quit (Remote host closed the connection)
22:21:58*zahary joined #nimrod
22:23:43*DAddYE joined #nimrod
22:32:51*carum joined #nimrod
22:33:06Mat3Araq: Map them all to the same basic type
22:33:15Mat3good night
22:33:20*Mat3 quit (Quit: Verlassend)
22:33:26*carum quit (Read error: Connection reset by peer)
22:35:40*shodan45 joined #nimrod
22:48:27*aftershave_ joined #nimrod
22:52:07OrionPK#regions are awesome
22:56:00skrylarOrionPK: i agree, and i also understand some people's frustrations with them
22:56:24skrylarOrionPK: it would be nice if toolwriters had more of an emphasis on "its okay to break things apart" like that bubble IDE concept
22:56:24*OrionPK wasnt stating opinion. OrionPK was stating fact
22:57:21skrylarthat awkward moment when you have a few hundred lines of C code to do something nimrod does in 1/4th of it
22:57:35skrylari had code to do iterators which is entirely unnecessary now
22:57:48OrionPKcool. what are you porting?
22:58:00skrylarOrionPK: my advanced unicode crap
22:58:08OrionPKahh
22:58:09EXetoCDemos: were macros the culprit?
22:58:32skrylarOrionPK: it also deals with combining marks and has a nice utility function for "where in this big buffer of text can i split it?" which is VERY useful for text editing
22:59:12OrionPKbe curious to see some benchmarks of large files when you're done :p
22:59:34OrionPKcomparison w/ the original c
22:59:46DemosEXetoC, yup! also, sjlj stuff and dllimport/dllexport stuff
23:00:55Demostons of macro options that deal wtih function declerations. Like PNG_EXPORT(void, fn_name, (args...)) would declare a function
23:01:09Demosand then lots of platform specific pragmas
23:04:25*zahary2 joined #nimrod
23:04:26*zahary quit (Read error: Connection reset by peer)
23:05:32*aftershave_ quit (Ping timeout: 246 seconds)
23:05:36skrylarDemos: the wonders of vim macros
23:06:16Demosnot really, I just did like %s/^\s+// or something
23:06:43Demoson the manpage
23:06:52Demosthen removed some stray hyphens
23:11:25*ddl_smurf quit (Quit: ddl_smurf)
23:12:26*brihat quit (Ping timeout: 252 seconds)
23:13:14*brihat joined #nimrod
23:13:33EXetoCthey really do it like that? oh well
23:14:56*ddl_smurf joined #nimrod
23:19:10Demosdo what? dllexporting?
23:20:19EXetoCby putting all of it in a macro rather than just having a macro placed before the return type
23:27:51skrylarisn't png really really old and meant to support some really crappy compilers?
23:29:44skrylarwoot, porting the non-UCD part is done \o/
23:29:57skrylartime to take a break and port the unit tests over
23:30:14*zahary2 quit (Quit: Leaving.)
23:35:02Demosskrylar, well sure, png is one of those c libraries that provides some core functionality to nearly everyone
23:38:30EXetoCI don't know why any of those points are relevant
23:39:29skrylarEXetoC: maybe there was some really stupid compiler once upon a time that required doing the header the way they did?
23:40:19Demosyeah I think like watcom c++ had dllexport stuff AFTER the function decl
23:41:26*aftershave_ joined #nimrod
23:45:44*freezerburnv joined #nimrod
23:47:10EXetoC>.>
23:58:26*brson quit (Ping timeout: 264 seconds)
23:59:05*aftershave_ quit (Ping timeout: 246 seconds)
23:59:25*ddl_smurf quit (Quit: ddl_smurf)