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:53 | Araq | er .. who renamed compilerprocs in jssys.nim? |
00:04:00 | Araq | reactormonk? |
00:04:45 | zahary1 | I did |
00:05:04 | Araq | you 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:41 | zahary1 | hmm. ok |
00:07:14 | Varriount|Mobile | skrylar: Araq has a vendetta against them |
00:07:35 | skrylar | Varriount|Mobile: yeah but the nature of the vendetta is what I'm curious about |
00:07:50 | skrylar | they're clearly existent so their usefulness is acknowledged, but they're put in the wierd "this is where black people go" box |
00:07:53 | skrylar | lol |
00:08:37 | Varriount|Mobile | Man, we need dom96 or Araq to link to that blog post about hating unsigned type |
00:08:43 | Araq | here, 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:46 | reactormonk | Araq, maybe |
00:09:04 | reactormonk | Araq, ah ok. btw: git blame to the rescue |
00:09:23 | Araq | they are acknowledged to not work, skrylar |
00:09:34 | Araq | only C and C++ embrace them |
00:09:43 | skrylar | and Rust |
00:10:01 | skrylar | I'm not sure the applicability of mentioning the lack of unsigned types in Python/Ruby which have bignums |
00:10:07 | dom96 | Araq: The languages you mentioned do not call themselves "systems programming languages" |
00:10:33 | skrylar | dom96: I've also seen the nightmare of Java networking code |
00:10:46 | skrylar | Which equates to "use a bigger type, waste memory, and then jump hoops to manually do unsigned types" |
00:11:06 | skyfex | skrylar: Varriount|Mobile: http://critical.eschertech.com/2010/04/07/danger-unsigned-types-used-here/ |
00:11:09 | Araq | dom96: Ada doesn't like them either, and Ada is a systems programming language |
00:11:24 | skyfex | And http://forum.nimrod-lang.org/t/313#1631 |
00:11:45 | Araq | (this term is not well defined anyway) |
00:13:12 | Araq | Oberon left them out, not that this means anything though, Oberon left out everything lol |
00:13:35 | skrylar | skyfex: okay, i read that blog post. it doesn't make a convincing case why unsigned types should be illegal. |
00:13:37 | dom96 | Ada doesn't really count because it's not mainstream :P |
00:13:50 | skrylar | It points out flaws in implicit type conversion, but those are not unique to uint. |
00:14:22 | Araq | nope |
00:14:31 | skyfex | skrylar: Yeah, I should point out I'm just linking.. I don't have a strong opinion myself |
00:14:57 | skrylar | skyfex: 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:21 | Discoloda | if you dont like unsigned, call it 'nat' |
00:15:56 | skrylar | there 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:57 | Araq | 'nat' is very different from 'unsigned', Discoloda |
00:15:57 | Demos | I 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:59 | skrylar | simply because its trendy |
00:16:25 | skrylar | Demos: Unfortunately, I really couldn't care less what C++ experts think... :\ |
00:16:34 | skrylar | Andrei lost my respect when he ruined D |
00:16:36 | Araq | Demos: and yet size_t is everywhere and it's unsigned ... |
00:16:48 | skrylar | and Bjarne admitted he made a monster nobody can fully understand... |
00:16:56 | Demos | also stroustrup (I think it was him) commented that having standard library templates return unsigned numbers for stuff like .size() was a mistake |
00:16:57 | skyfex | skrylar: How did it ruin D? I haven't followed that language for a little while |
00:17:05 | skyfex | *he |
00:17:27 | NimBot | Araq/Nimrod devel 66a2ebb Zahary Karadjov [+0 ±1 -0]: rename compilerProcs to match the recently changed jssys.nim |
00:17:45 | Araq | skrylar: they have bignums but they don't have *unsigned* bignums |
00:17:57 | skrylar | skyfex: 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:07 | skrylar | skyfex: as well as a massive increase in template-related ICE's |
00:18:14 | Discoloda | Araq: dont they cover the same range (with enough member) 0 .. whatever |
00:18:21 | Discoloda | memory* |
00:18:43 | Demos | was D's delete like c++'s (it would run a destructor and free memory)? |
00:18:45 | Araq | Discoloda: the point is they really shouldn't so that promotion from nat to int cannot fail |
00:18:54 | skrylar | Demos: yes, it had a proper new/delete |
00:18:57 | skyfex | skrylar: Define ICE? |
00:19:05 | Demos | internal compiler error perhaps? |
00:19:07 | skrylar | Demos: then they decided "just let the GC do it" even though the GC was always meant to be optional under Walter |
00:19:11 | skrylar | yes, internal compiler error |
00:19:26 | skrylar | Walter's D produced useful errors, Andrei's D gives the usual GCC barf if anything |
00:19:41 | skrylar | sixteen-layer-of-template-errors-wait-no-just-segfault |
00:19:48 | Demos | well if you can "let the GC do it" than you probably don't need a fancy delete |
00:20:12 | skrylar | Demos: removing 'delete' because you wrote bad code is a poor rationale |
00:21:17 | Demos | well 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:56 | skrylar | i 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:07 | Araq | Demos: spot on, these need to be 2 ops. nimrod makes the same mistake |
00:22:15 | skrylar | I 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:27 | Araq | but we'll find a way to deal with it |
00:22:45 | Demos | Araq, really? I thought nimrod just said "write an initialization function" |
00:23:16 | Araq | Demos: that's true but we got PFoo(x: val) syntax which does both |
00:24:06 | Demos | I 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:44 | zahary1 | I plan to add a "placement new" operator that will be able to construct objects into pre-allocated slots |
00:25:47 | Araq | zahary1: I think I have a superior design with my new pointer tagging stuff :P |
00:26:04 | zahary1 | is it described somewhere? |
00:26:15 | Araq | nope |
00:26:27 | zahary1 | so how does it work? |
00:26:32 | Araq | wanted to blog about it ... |
00:26:37 | Demos | I 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:40 | Varriount|Mobile | zahary1: Is your 'placement new' described anywhere? |
00:26:55 | zahary1 | the pointer says how the memory is allocated and then there is something like placement new that construct the object there? |
00:27:14 | zahary1 | we've discussed it here some time ago |
00:27:34 | Araq | I don't think so |
00:27:41 | Araq | but yes |
00:27:45 | zahary1 | Demos: placement new can avoid copies when you use a custom allocation scheme |
00:27:56 | zahary1 | … while allowing you to use your standard "init functions" |
00:28:28 | skrylar | my code thus far has 'newx' which does new(result); initx(result) and just initx() so.. |
00:29:52 | NimBot | Araq/Nimrod devel 8036483 Araq [+0 ±8 -0]: renamed noStackFrame to asmNoStackFrame |
00:29:52 | NimBot | Araq/Nimrod devel ef8a298 Araq [+0 ±9 -0]: vm2: new representation of registers |
00:29:52 | NimBot | Araq/Nimrod devel 2f64955 Araq [+0 ±4 -0]: fixed opcConv |
00:29:52 | NimBot | Araq/Nimrod devel 3918bc5 Araq [+0 ±1 -0]: simple macros work again |
00:29:52 | NimBot | 7 more commits. |
00:29:55 | Demos | right, 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:35 | Araq | so, it's done |
00:30:37 | Araq | good night |
00:30:41 | skrylar | g'night |
00:30:43 | Varriount|Mobile | Night |
00:30:45 | zahary1 | Demos: this won't compile now, but it's equivalent to "the placement new operator" |
00:30:53 | zahary1 | it requires some codegen support |
00:32:48 | Demos | right. I would prefer to just use the result/NRVO thing nimrod already has rather than a whole new placement new |
00:33:44 | zahary1 | I'm calling it this way for a lack of another name - I'm referring to this finer NRVO handling |
00:34:21 | Demos | oh... just using NRVO causes problems with user defined `=`. |
00:35:10 | * | oxful_ quit (Quit: Leaving) |
00:35:53 | zahary1 | the 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:10 | Demos | I thought var x = myalloc(Type) \n x = initMyObject() already did that |
00:42:57 | zahary1 | you 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:30 | Demos | right. 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:55 | EXetoC | you mean init(x[])? |
00:48:54 | EXetoC | otherwise you're not passing x or the memory that it points to, to anything |
00:49:55 | Demos | actually 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:19 | Demos | I was actually under the impression that this is why result works the way it does |
00:52:13 | EXetoC | yeah so you need some kind of support for it |
00:52:32 | Demos | right, it is an optimization. More or less |
00:53:04 | EXetoC | I prefer user-defined constructors that are invoked by specifying the type name. |
00:53:05 | Demos | Actually with nimrod's side effect tracking it may never change the behavior of the program |
00:53:34 | EXetoC | your approach would be alright, save for the fact that you must always introduce temporaries |
00:53:34 | Demos | sure init could be called initFoo or whatever |
00:53:48 | EXetoC | well actually that's always the case when dealing with 'var' params |
00:55:09 | Demos | my 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:25 | EXetoC | Demos: yes like now, though I often omit the prefix (still with camelCase) |
00:56:43 | Demos | so 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:51 | Demos | s/but// |
00:58:33 | Demos | best of all the constructor does not care /at all/ how the memory was allocated, just that it was |
00:58:40 | Demos | well the init function |
00:59:55 | EXetoC | right. I think Araq said that was for > 1.0, but that's assuming he understood me correctly |
01:01:02 | Demos | what RVO or placement new? |
01:02:00 | Demos | I assumed RVO was already done sice the pattern is enforced by the language |
01:05:21 | EXetoC | the latter |
01:08:07 | Demos | well let it be known that I dont like that feature :D |
01:08:57 | EXetoC | I mean allocation-agnostic constructors |
01:11:08 | Demos | I 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:17 | Demos | which is already allocation agnostic |
01:21:28 | EXetoC | I didn't say otherwise |
01:21:50 | Demos | well then my work is done :D |
01:29:16 | * | carum quit (Remote host closed the connection) |
01:29:51 | EXetoC | and 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:41 | fowl | template echoCode* (x): stmt = echo(astToStr(x), " #=> ", x) |
01:48:09 | skrylar | EXetoC: wouldn't that require overloading on the return type? |
01:57:30 | EXetoC | skrylar: we were discussing language support for constructors, rather than just normal procs |
01:57:52 | skrylar | EXetoC: whats the difference? :) |
01:58:17 | skrylar | let 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:24 | EXetoC | init 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:19 | EXetoC | "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:53 | Demos | we 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:23 | Demos | Type 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:55 | Demos | I 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:45 | renesac | Demos, you can do what you said in nimrod using distinct types and implementing the relevant procs |
04:02:56 | Demos | right, 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:57 | renesac | proc `*` (a: meters, b: seconds): ??? = ... |
04:03:17 | renesac | yep |
04:03:21 | Demos | that is a pain |
04:03:45 | renesac | well, I'm using distinct types to implement mixed precision arithmetic for my bignum module |
04:04:25 | renesac | I 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:32 | renesac | not the most efficient ever (ideally we would be using base u64, result u128), but very quick |
04:05:39 | renesac | to implement |
04:05:48 | renesac | and you have {.borrow.} |
04:06:09 | renesac | but if you want special behaviour, you need to define it |
04:06:43 | renesac | otherwise the computer won't read your mind |
04:06:56 | renesac | casts are your friend |
04:08:19 | Demos | right. But there are rules that define valid conversions between the 7 base units and stuff derived from them |
04:08:56 | Demos | but 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:03 | Demos | yeah I think you can do it with macros and 7 special types |
04:10:03 | renesac | hum.. I see |
04:10:26 | renesac | arbitrarily combining different types can lead to a type explosion |
04:10:40 | Demos | if everything checks out you can just cast to the base type of each unit (real numbers) |
04:10:43 | Demos | well floats |
04:10:48 | renesac | well, you have a finite number of useful units... |
04:10:52 | Demos | no |
04:11:01 | Demos | you can combine the base units however you like |
04:11:11 | Demos | well in an infinate number of ways |
04:11:12 | * | carum quit (Remote host closed the connection) |
04:11:16 | Demos | not really however you want |
04:11:25 | renesac | right |
04:11:43 | renesac | but do you need infinite possibilities? |
04:11:51 | Demos | but 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:56 | Demos | pretty much |
04:12:09 | renesac | or you can work with m/s, m/s², but w/o m/s^4 |
04:12:13 | renesac | ? |
04:12:40 | renesac | *only with the first two, w/o the more exotic |
04:12:56 | renesac | if 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:57 | Demos | apperently 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:49 | Demos | yeah that does not include multiplication of dimensioned values |
04:18:36 | Demos | oh wait you just let multiplication be the addition operation for the vector space |
04:21:41 | Demos | so then /I think/ that each derived unit you may want is just a specific vector |
04:21:49 | * | carum joined #nimrod |
04:26:00 | Demos | you may not actually need macro magic |
04:33:54 | renesac | I haven't followed, but the different operations for each pair of types may indeed be a problem |
04:36:14 | renesac | hum... yeah, really not, because s * s type should be s, not s^2 |
04:36:30 | NimBot | Varriount/NimLime master b308e49 Erik O'Leary [+0 ±2 -0]: Added support for procedures without ()'s |
04:37:43 | Demos | what? 4s * 5s should yield 20s^2... |
04:51:27 | NimBot | Varriount/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:19 | Demos | basicly each identifier needs to be associated at compile time with an ordered 7-tuple |
05:34:25 | Demos | of integers |
05:43:35 | * | renesac quit (Ping timeout: 246 seconds) |
05:44:00 | * | renesac joined #nimrod |
05:45:06 | Demos | trouble is that I need to be able to attach this extra info to symbols, not sure how to do that yet. |
05:58:12 | renesac | humm, right |
05:59:33 | * | carum quit (Remote host closed the connection) |
06:13:17 | renesac | Demos, I made a sketch: https://gist.github.com/ReneSac/6dfe2a72d7d0f1822d43 |
06:13:31 | * | carum joined #nimrod |
06:13:44 | renesac | not sure if I'm making some basic error again |
06:14:56 | renesac | and 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:12 | Demos | right, but that looks like a runtime check. Ideally TUnit would be an alias for int64 |
06:49:17 | Demos | sorry float64 |
06:49:27 | Demos | then the units are tracked at compile time |
06:50:26 | Demos | but yeah, that is the idea |
06:52:06 | Demos | wowah Varriount nimlime cool commits. You using the new idetools fixes? |
06:53:10 | Demos | and ofc you need a multiplication operator that just scales a dimensioned value by a real (floating point) number |
06:57:31 | Demos | actually that is not what you want. Scalar multiplication should raise the power |
06:59:00 | Demos | but something like 4 * 2s is just 8s because that particular * operator is dealing with the values, not the dimensions |
06:59:41 | Demos | 2 * s = 2 * (0,1) = (0,2) = s^2 |
07:00:30 | Demos | anyway 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:00 | NimBot | Araq/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:16 | Varriount | Demos: Some of the new commits aren't by me. |
16:55:48 | * | r0b2 joined #nimrod |
16:56:41 | Varriount | Araq: koch boot is broken |
16:59:33 | * | brson joined #nimrod |
17:00:05 | Varriount | Araq: https://gist.github.com/Varriount/9213017 |
17:01:19 | Araq | Varriount: I'm aware |
17:02:35 | * | nande joined #nimrod |
17:02:48 | Varriount | Araq: That's why koch boot is failing with the testers |
17:08:54 | NimBot | Araq/Nimrod devel e755a55 Araq [+0 ±1 -0]: bootstrapping should work again |
17:19:59 | Varriount | Araq: Thanks! |
17:22:24 | Varriount | skyfex: Just to make sure, you are using the NimLime plugin for sublime text, right? Not the other, outdated plugin? |
17:24:03 | skyfex | I 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:38 | skyfex | Varrount: 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:59 | BitPuffin | Oh threads |
17:46:03 | BitPuffin | you motherfuckers |
17:46:30 | skrylar | BitPuffin: lol threading issues? |
17:46:41 | BitPuffin | yeah |
17:46:46 | BitPuffin | but I fixed it like a baws |
17:50:41 | Varriount | skyfex: It's possible, if difficult to do. |
17:51:04 | * | ddl_smurf quit (Quit: ddl_smurf) |
17:53:30 | skrylar | BitPuffin: threading sadness is more fun than unicode sadness :) |
17:54:36 | skyfex | Ooooh, I love the Check File feature. Neat :) |
17:55:36 | Varriount | skyfex: Thanks. |
17:55:50 | skyfex | What does the Index feature actually do? |
18:01:03 | NimBot | Varriount/NimLime master a0cf741 Clay Sweetser [+0 ±2 -0]: Fixed check command lag (stupid threads) |
18:01:19 | Varriount | skyfex: Ask OrionPK |
18:03:05 | * | aftershave_ joined #nimrod |
18:03:33 | * | io2 joined #nimrod |
18:05:39 | Varriount | skyfex: Python threads are wierd. |
18:07:07 | * | io2 quit (Excess Flood) |
18:09:13 | * | DAddYE joined #nimrod |
18:09:24 | Araq | hi DAddYE |
18:12:02 | Varriount | Help me. I'm stuck in a Music Appreciation class with a ranting professor out of touch with modern thought. |
18:13:33 | OrionPK | index lists out a bunch of functions/types etc |
18:13:40 | OrionPK | from the std lib |
18:19:00 | * | Endy joined #nimrod |
18:19:30 | * | renesac quit (Excess Flood) |
18:20:47 | Araq | it's surprising how many parts of the stdlib are used at compile-time in the tests ... |
18:23:11 | skrylar | Varriount: fire up reaper, play random noises and tell him to appreciate it |
18:23:12 | skrylar | lol |
18:23:29 | * | renesac joined #nimrod |
18:26:33 | Varriount | skrylar: That would only encourage him. |
18:26:48 | skrylar | Varriount: at least playing random notes is fun to do |
18:29:38 | skrylar | i'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:34 | Varriount | Now he's ranting about telling the truth and persian culture. |
18:33:57 | Varriount | dom96: Babel path still doesn't work. |
18:34:16 | * | nande quit (Remote host closed the connection) |
18:34:20 | dom96 | Varriount: does for me |
18:34:27 | Varriount | On windows? |
18:34:32 | dom96 | yes |
18:34:41 | Varriount | Hm. Might be my installation |
18:34:57 | dom96 | is it giving you the same error? |
18:38:40 | Varriount | dom96: "babel path babel" gives "Warning: Package 'babel' not installed" |
18:39:10 | dom96 | did you update it correctly? |
18:39:37 | Varriount | By using "babel install babel"? |
18:41:43 | Varriount | dom96: ^ |
18:42:51 | dom96 | that isn't supported on Windows |
18:43:22 | Varriount | Oh. Good to know that little fact is stated somewhere. |
18:44:05 | Varriount | dom96: Then what should I do? |
18:44:19 | reactormonk | Should I create an issue for history rewrite to get the csources out of the git repo? |
18:44:44 | dom96 | Varriount: clone the repo manually. |
18:45:03 | Varriount | dom96: Which I have done. |
18:45:56 | Varriount | I cloned a repo, installed nimlibpng, and used "babel path nimlibpng", and things still didn't work. |
18:49:33 | dom96 | have 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:02 | Mat3 | hello |
19:03:04 | * | brson quit (Client Quit) |
19:03:46 | Araq | hi Mat3 brb |
19:05:02 | reactormonk | Araq, purging csources from the repo relevant? |
19:08:52 | Mat3 | hi Araq and all |
19:13:10 | * | TylerE joined #nimrod |
19:17:23 | Varriount | dom96: Got it working, however the path command breaks on packages with '-' in their names. |
19:19:17 | dom96 | how does it break? |
19:23:17 | Araq | reactormonk: I think so but can we do it without breaking each and every fork? |
19:25:32 | reactormonk | Araq, 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:46 | Araq | Mat3: 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:46 | Araq | dom96: what's your number 1 showstopper bug for asyncio? |
20:26:13 | dom96 | nimrod c -r asyncio2 |
20:26:16 | dom96 | on linux |
20:26:24 | dom96 | telnet localhost 6667 |
20:26:27 | dom96 | it will crash |
20:27:18 | Demos | Varriount, is nimlibpng the only package that does not work? |
20:28:11 | Araq | seriously? you expect me to use telnet? |
20:28:55 | dom96 | oh come on |
20:29:06 | dom96 | All you need to do is connect. |
20:29:15 | Araq | we need nimtelnet |
20:29:28 | dom96 | if you want you can compile & run the equivalent nimrod app |
20:30:01 | * | sale4one quit (Remote host closed the connection) |
20:30:30 | Demos | nope babel path fails on all packages it seems |
20:30:37 | NimBot | Araq/Nimrod devel b36da05 Araq [+0 ±1 -0]: htmlgen works again |
20:31:01 | dom96 | Demos: Did you update babel? |
20:31:19 | Demos | babel install babel right? |
20:31:46 | dom96 | That won't work on Windows. |
20:32:53 | Demos | because of replaceing running executables? |
20:33:03 | * | vendethiel quit (Quit: q+) |
20:33:05 | Demos | it does crash mintty though |
20:33:12 | BitPuffin | babel install babel install babel install babel install babel install babel install babel install babel install babel install babel |
20:33:36 | BitPuffin | lol telnet |
20:33:37 | BitPuffin | like what |
20:33:45 | BitPuffin | well |
20:33:59 | BitPuffin | I guess the nimrod community isn't really known for its great security practices |
20:34:02 | dom96 | Demos: yes |
20:34:08 | * | aftershave_ quit (Quit: Textual IRC Client: www.textualapp.com) |
20:34:26 | Demos | telnet is fine if you are sending public text anyways |
20:34:35 | Demos | or for like the telnet based starwars |
20:34:46 | BitPuffin | ^the only thing I use it for |
20:35:10 | dom96 | BitPuffin: Yeah, because debugging a corruption requires the greatest encryption ever. |
20:35:18 | BitPuffin | dom96: it does |
20:35:20 | Demos | so it seems that msys2's pacman manages to replace running executables, it often causes some major crashing and burning though |
20:35:33 | BitPuffin | I wasn't following what you were taliking about |
20:35:41 | BitPuffin | just that telnet makes me lol |
20:35:48 | BitPuffin | dom96: snarky boy |
20:36:15 | BitPuffin | dom96: y u no ple doto |
20:36:35 | dom96 | Because i'm busy being productive :P |
20:40:45 | Demos | hm installing babel from git seems to fail |
20:40:50 | * | 5EXAAMAAB quit (Ping timeout: 252 seconds) |
20:42:02 | skrylar | BitPuffin: erm.. |
20:42:27 | skrylar | I concur with the "is there something that needs encrypting?" sentiment |
20:43:04 | * | aftershave_ joined #nimrod |
20:43:11 | skrylar | aren't there enterprise servers that sometimes have telnet sockets for internal use, because its really easy to toss one in for debugging? |
20:43:21 | skrylar | s/servers/server software |
20:43:56 | Araq | skrylar: apple does that. They also disabled SSL :P |
20:44:09 | Araq | goto fail; goto fail; |
20:44:54 | Araq | it's surprising that after all these years running a static checker over every piece of code that is pushed is not mandatory |
20:45:19 | Araq | says quite a lot about the company, IMHO |
20:46:23 | Demos | I am not so sure. I think the number of false positives from -Wunreachable-code is quite high |
20:46:30 | Demos | esp with c++ generic code |
20:47:16 | Araq | I'm talking about a static checker, not gcc |
20:47:29 | Araq | tools which cost money |
20:47:50 | Demos | can clang's static analysis stuff manage? |
20:48:12 | Araq | clang's stuff is getting good, but it's not there yet, afaict |
20:49:46 | skrylar | Araq: so where is the static checker for nimrod :P |
20:50:28 | Demos | you kinda need to know what failure prone code looks like before you write a static analysis tool |
20:50:29 | Araq | skrylar: it's where the commercial support is ... in alice's wonderland |
20:53:09 | skrylar | lol |
20:53:21 | skrylar | well the klie project was neat |
20:53:45 | * | ddl_smurf joined #nimrod |
20:53:56 | skrylar | would be nicer if it allowed making test cases for a specific function instead of trying to deep-scan the whole codebase though |
20:57:47 | skrylar | Araq: well its not quite static analyzers but i ported over the grapheme code earlier |
20:58:38 | Araq | skrylar: aweseom |
20:58:49 | Araq | that should be in the core though, not a babel package |
20:58:59 | Araq | well for a start a babel package is good enough |
20:59:43 | skrylar | at 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:58 | skrylar | there'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:47 | skrylar | it's not sinful code overall, but it will probably need some beautifying |
21:00:53 | Araq | because you didn't know about bitwise negation back then? |
21:01:01 | skrylar | i didn't put -1 in unsigned types |
21:01:19 | skrylar | it also encodes codepoints back to front because it was easier for me to figure out how to do the math for it |
21:01:40 | Araq | that might be bad for memory prefetching |
21:01:52 | skrylar | well that it does is you give it the number 8000 |
21:02:01 | skrylar | and it starts at the final byte in the encoding and encodes backwards |
21:02:06 | skrylar | then gives you the data in the correct order |
21:02:33 | skrylar | i did it that way because you can bit shift everything down in a single pass, but it does look derpy |
21:03:18 | skrylar | some of the C crap became iterators now, which is a lot nicer |
21:03:27 | Araq | sounds good, we need more voodoo level stuff in the stdlib |
21:03:51 | Araq | people are starting to think they can contribute to the stdlib |
21:03:54 | skrylar | e.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:03 | Araq | your code will teach them a lesson |
21:04:13 | skrylar | my horrible no-education code? lol |
21:04:41 | skrylar | (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:07 | Demos | that is quite the introduction to the world of programming :D |
21:10:28 | skrylar | naaah, i've been coding for ~10 years, i was just horrible at it |
21:11:12 | skrylar | i found a math book recently that actually explains things properly so i've been backfilling away my stupidity |
21:11:58 | skrylar | though 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:56 | Demos | an old version of TC++PL or D&E? |
21:13:04 | skrylar | Probably TC++PL |
21:13:10 | skrylar | I remember taking it back and just getting a Deitel |
21:13:45 | skrylar | the deitel was this 500 pound mass of supergloss paper in 10pt font |
21:14:00 | Demos | afaik 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:29 | skrylar | i don't know why but i kind of like BASIC's syntax. |
21:16:03 | Demos | BASIC 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:24 | skrylar | Demos: you just need to be in denial more |
21:16:35 | skrylar | its not a "slow compiler", its a "mature implementation" |
21:16:56 | Demos | I actually learned Logo --> Java --> c++. Well it is a slow language that is totally hostile to tooling |
21:17:34 | Demos | C++'s semantics are not that bad. |
21:17:58 | skrylar | VB -> Delphi -> Java -> C++ -> Ruby/Python -> C++ -> D -> C++ -> C# -> C99 -> Rust -> Nimrod. xD |
21:18:08 | Demos | by slow language I mean that the way the language is specifies forces implementations to be slow |
21:18:11 | BitPuffin | Araq: we don't even have a static checker in nimrod do we? |
21:18:28 | * | ddl_smurf quit (Quit: ddl_smurf) |
21:18:33 | Araq | BitPuffin: well I do code reviews |
21:18:38 | skrylar | Demos: because it was never designed to be good, it was people chucking stuff over C |
21:18:40 | Araq | :P |
21:18:45 | Demos | oh yeah I learned C# in there someplace but honestly if you know C# you know java. |
21:18:46 | BitPuffin | Araq: not tha same :P |
21:18:50 | skrylar | if you wanted tooling you had to go with Obj-C :) |
21:18:55 | skrylar | or LISP |
21:18:56 | Demos | well imo C has some of the same problems |
21:18:56 | BitPuffin | Araq: so you can do code reviews for my code too? 8D |
21:19:06 | skrylar | Demos: C at least has cscope and cstags |
21:19:08 | Araq | true, a static checker is not as good as me |
21:19:26 | Demos | does 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:35 | skrylar | Lisp has extensive tooling. |
21:19:46 | skrylar | Symbolics Lisp machines had excessive amounts of it |
21:20:07 | Demos | I guess not having to parse the language must be nice |
21:20:10 | skrylar | "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:16 | BitPuffin | Araq: launch Araq As A Service |
21:20:19 | Demos | or rather not having to form an AST |
21:20:33 | skrylar | Demos: probably a mix of smarter programmers <_< |
21:20:34 | Demos | so like a debugger... |
21:20:50 | BitPuffin | and then some fucker creates an open source alternative to Araq |
21:21:06 | Demos | who has smarter programmers? how did that come up? |
21:21:14 | skrylar | Albino Replaces AraQ v0.2b |
21:21:50 | * | Araq is not open source |
21:22:04 | skrylar | Demos: 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:22 | skrylar | e.g. MIT scheme required actually knowing what a continuation is |
21:22:55 | * | aftershave_ quit (Ping timeout: 272 seconds) |
21:22:57 | Matthias247 | I don't know that :) |
21:23:22 | Matthias247 | seems you can do software without it :) |
21:23:25 | Demos | CPS 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:40 | skrylar | Demos: people were still hardcore failing MIT's comp-sci though |
21:25:07 | Matthias247 | Demos: don't know if it's really successful or currently only hyped by language geeks. |
21:25:11 | Demos | I dont really like CPS, not that great when mixed with types |
21:25:23 | Matthias247 | There's not a lot of real-world haskell code |
21:25:36 | Demos | although the only time I have really designed something using CPS was in javascript so who the hell knows |
21:25:48 | skrylar | here'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:05 | skrylar | why don't we get those kinds of nice things for file languages :( |
21:26:14 | Demos | I hear smalltalk did not scale that well... |
21:26:39 | Demos | but that is like 3rd hand info so who the hell knows |
21:26:41 | skrylar | well considering Sun bought up the dev teams who were writing smalltalk optimizers so they could steal the tech for java... >> |
21:27:11 | skrylar | seriously, a big chunk of the Hotspot VM was basically taken from Strongtalk |
21:27:29 | skrylar | a lot of V8's javascript improvements also yoink things they were doing to improve smalltalk performance |
21:28:33 | Araq | skrylar: we have all these things for file languages |
21:29:10 | Araq | and smalltalk's IDE was awful, yes, I used it |
21:29:34 | skrylar | i liked the class browser :\ |
21:29:53 | Demos | now 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:22 | Araq | well ymmv of course, but smalltalk is awful |
21:30:23 | skrylar | i've seen eclipse's attempt at a class browser for java, but that doesn't actually segregate methods in to purposes |
21:30:58 | Demos | well if you factored stuff into classes wrong than you are kinda screwed |
21:31:14 | Demos | I know visual studio has quite a nice object browser |
21:31:28 | skrylar | Demos: i've seen a few but they don't have any semantics |
21:31:29 | Araq | smalltalk -- everything happens elsewhere |
21:31:53 | Demos | what do you mean semantics, you just list the definition and maybe some docs |
21:31:57 | Araq | it's like Java on steriods |
21:32:00 | skrylar | Demos: in ( http://i.stack.imgur.com/RFHCD.gif ) it shows the package, class names, then the grouping for methods |
21:33:03 | skrylar | i 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:13 | BitPuffin | Araq: how is smalltalk like java |
21:33:50 | Araq | BitPuffin: factories, adapters, methods that are 2 lines long |
21:34:11 | Demos | OGRE is kinda an example of how not to write an engine though.... |
21:34:22 | BitPuffin | Demos: lol yea |
21:34:30 | skrylar | i think STL docs group methods too |
21:34:51 | skrylar | whether or not ogre is the pinnacle of computer science doesn't really reduce the "method grouping is kinda useful" example though :) |
21:35:03 | Demos | yeah 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:06 | skyfex | skrylar: Wooo! Delphi, my first! |
21:35:30 | skrylar | Demos: i use group markers around properties for instance |
21:35:47 | Demos | are group markers doxygen things? |
21:36:15 | skrylar | Demos: 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:59 | skrylar | its 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:02 | Demos | yeah I sometimes use #region and #endregion in VS |
21:37:14 | skrylar | i've seen people bitch and moan about #region |
21:37:31 | Araq | gah, you're one of those |
21:37:32 | Demos | I use in more in C# than C++ |
21:37:40 | Araq | #region is awful too |
21:37:43 | Demos | since afaik it is nonstandard in c++ |
21:37:52 | skrylar | he's really going to hate all the vim markers then :P |
21:37:57 | skrylar | # Combining Diacritic marks {{{ |
21:38:40 | Matthias247 | I thought region was only supported for C# |
21:38:56 | skrylar | yeah, its a C# thing |
21:38:59 | Matthias247 | never tried to use it in c++ |
21:39:05 | Demos | I 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:18 | Demos | It may be like #pragma region in c++ or something |
21:39:54 | skrylar | Leo does some neat things for categorizing code |
21:40:06 | Demos | I think having babel somehow sort by typeclass or something could be good. No idea how that would work |
21:40:25 | Demos | sorry nimdoc not babel |
21:40:27 | Demos | derp |
21:40:42 | Araq | Demos: that's planned |
21:40:56 | skrylar | you 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:56 | Demos | I know |
21:41:22 | Demos | looks kinda like Acme |
21:41:31 | skrylar | yeah, i don't use it sadly |
21:42:04 | skrylar | the 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:09 | Demos | in any case I want the tools/compiler to figure out how stuff is related as much as possible |
21:42:17 | Demos | without my input |
21:42:24 | skrylar | they're never going to do that smartly |
21:43:27 | Demos | sure, 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:08 | skrylar | i need to see if stgit works on windows later |
21:44:55 | skrylar | patch 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:54 | Demos | those kinds of markers should not be stored in the source text |
21:46:56 | Demos | imo |
21:47:06 | * | ddl_smurf joined #nimrod |
21:47:18 | skrylar | if you use doxygen they probably already are |
21:47:56 | Demos | right, but the places that are actually marked should refer to the docs, that reference should be stored elsewhere. But whatever. |
21:49:05 | skrylar | i'll probably revisit that when i'm out of unicode hell and i can work on my outliner some more |
21:49:38 | skrylar | i 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:04 | skrylar | so 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:29 | skrylar | so 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:17 | skrylar | alright time to deal with this last 200 lines of porting for the day |
22:14:20 | Araq | c2nim can translate C function bodies, you know |
22:14:57 | skrylar | i don't have c2nim |
22:15:19 | Araq | nimrod c compiler/c2nim/c2nim |
22:15:24 | skrylar | they're also not 1:1 conversions; like rewriting the pointer arithmetic to just using string indices |
22:15:37 | Araq | ok |
22:15:57 | skrylar | i had one method that was some horrible 80 mess that i rewrote to be 8 lines of nimrod oO |
22:19:11 | Araq | yay |
22:19:15 | Araq | good night |
22:19:19 | skrylar | g'night |
22:21:00 | Demos | when 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:13 | skrylar | Demos: i just handbind things still :/ |
22:21:31 | Demos | interestingly the manpage listed several functions that were not actualy exported by libpng.so |
22:21:38 | skrylar | oops |
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:06 | Mat3 | Araq: Map them all to the same basic type |
22:33:15 | Mat3 | good 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:07 | OrionPK | #regions are awesome |
22:56:00 | skrylar | OrionPK: i agree, and i also understand some people's frustrations with them |
22:56:24 | skrylar | OrionPK: 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:21 | skrylar | that awkward moment when you have a few hundred lines of C code to do something nimrod does in 1/4th of it |
22:57:35 | skrylar | i had code to do iterators which is entirely unnecessary now |
22:57:48 | OrionPK | cool. what are you porting? |
22:58:00 | skrylar | OrionPK: my advanced unicode crap |
22:58:08 | OrionPK | ahh |
22:58:09 | EXetoC | Demos: were macros the culprit? |
22:58:32 | skrylar | OrionPK: 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:12 | OrionPK | be curious to see some benchmarks of large files when you're done :p |
22:59:34 | OrionPK | comparison w/ the original c |
22:59:46 | Demos | EXetoC, yup! also, sjlj stuff and dllimport/dllexport stuff |
23:00:55 | Demos | tons of macro options that deal wtih function declerations. Like PNG_EXPORT(void, fn_name, (args...)) would declare a function |
23:01:09 | Demos | and 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:36 | skrylar | Demos: the wonders of vim macros |
23:06:16 | Demos | not really, I just did like %s/^\s+// or something |
23:06:43 | Demos | on the manpage |
23:06:52 | Demos | then 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:33 | EXetoC | they really do it like that? oh well |
23:14:56 | * | ddl_smurf joined #nimrod |
23:19:10 | Demos | do what? dllexporting? |
23:20:19 | EXetoC | by putting all of it in a macro rather than just having a macro placed before the return type |
23:27:51 | skrylar | isn't png really really old and meant to support some really crappy compilers? |
23:29:44 | skrylar | woot, porting the non-UCD part is done \o/ |
23:29:57 | skrylar | time to take a break and port the unit tests over |
23:30:14 | * | zahary2 quit (Quit: Leaving.) |
23:35:02 | Demos | skrylar, well sure, png is one of those c libraries that provides some core functionality to nearly everyone |
23:38:30 | EXetoC | I don't know why any of those points are relevant |
23:39:29 | skrylar | EXetoC: maybe there was some really stupid compiler once upon a time that required doing the header the way they did? |
23:40:19 | Demos | yeah 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:10 | EXetoC | >.> |
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) |