<< 26-10-2014 >>

00:00:28VarriountThe compiler is reading the 'gcc.options.always' line, even when using the g++ c compiler.
00:00:39Araqah
00:00:55VarriountAdding -fpermissive to the 'gcc.options.always' line fixes things.
00:01:45VarriountAraq: I don't think that's a suitable fix - is it?
00:01:59Araqnope
00:02:07VarriountYou can't set a cpp specific options.
00:02:17Varriount*option
00:02:28Araqthe compiler should use gpp options for 'cpp'
00:02:47VarriountSo.. special case it? Or create a separate compiler entry?
00:04:09*darkf joined #nimrod
00:07:34*Matthias247 quit (Read error: Connection reset by peer)
00:08:49AraqVarriount: the other C/C++ compilers have the same problem
00:09:08Araqit's not GCC specific, there is clang and clang++
00:09:22VarriountAraq: So something needs to be done to alter the entire config reading system.
00:09:31Araqmaybe append 'pp' to the config C compiler name
00:09:53Araqthat produces, gccpp, clangpp etc. config entries. good enough.
00:10:18Araq(well append that when in c++ mode)
00:10:27VarriountYeah. Not the best case, but workable
00:11:03VarriountIdeally we could just use 'g++', but I"m guessing the config file parser would have problems with that.
00:12:53Varriountflaviu: Do any *nix systems have something on par with Window's Group Policy?
00:14:26flaviuVarriount: Thats a broad question, but the OS doesn't care about stuff like that. Perhaps asking "Is there a way to have group policy feature X with linux programs"
00:15:10flaviuAlso, all I know about GP is that it can disable administrative windows snap-ins, which is easy in linux: don't add the user to sudoers
00:20:17*Jehan_ joined #nimrod
00:25:10Araqinteresting discussion: http://tmrepository.com/fudtracker/rob-pike-admits-it-modern-unix-is-a-mess/
00:25:16Araqgood night
00:28:00Varriountflaviu: Ok. On linux, can you prevent the user from running an arbitrary program, even if it doesn't have a definite existance or location?
00:29:10VarriountWindow's allow administrators to say that certain executables (say, teamviewer) aren't allowed to be run. Usually this is done either by filename inspection, or by inspection of the certificates and metadata stored in the executables.
00:29:19flaviulol, what a joke
00:29:27flaviuso if I recompile it, what happens?
00:29:38Varriount*shrug*
00:30:00Jehan_Varriount: Not sure what the context is, but this strikes me as a mostly pointless feature?
00:30:24flaviuBut ok, you can do that on linux too. Write a program to use inotify and do whatever filtering you want.
00:30:39VarriountJehan_: Well, my highschool used it to block RDP clients, (like teamviewer) from being run.
00:30:42flaviuIt won't actually work, but it'll check off the right boxes for your superior.
00:31:31Jehan_Varriount: If your users are smart enough to circumvent the system in the first place, there is no difference between renaming and modifying the executable, for all practical purposes.
00:32:06Jehan_If either can be done, one student will figure it out, and the rest will copy it.
00:32:22flaviuJehan_: The thing is, the guy who's telling you to do this doesn't realize that. You just have to make it hard enough to do that he's happy
00:34:51Jehan_Is is really hard to keep an enterprising person on a Turing-complete machine from doing what they want to do.
00:35:28flaviuJust wait until some kid discovers the wonders of X forwarding
00:36:34VarriountI'm looking through the group policy console right now..
00:37:10Jehan_Just looking at the web, there's an RDP extension for Chrome, for example.
00:37:46VarriountHuh, you can stop someone from using the profiling and debugging API's that Windows provides.
00:38:02flaviuWhy would you want to do that?
00:38:34Jehan_flaviu: Because there are managers that depend on the BDSM style of employee management?
00:38:40VarriountYou don't neccesarily want someone trying to tinker with running programs.
00:39:16flaviuJehan_: Yes, especially in this whole "public school" thing where students have zero leverage ;)
00:39:27Jehan_If it's a shared system, they shouldn't be able to mess with other people's processes, anyway. If it's their own, it's their own to mess up.
00:39:50*enurlyx left #nimrod (#nimrod)
00:40:02Varriount"Devices: Allow to format and eject removable media"
00:40:25flaviuAgain, why should the admins give a damn about that?
00:40:40flaviuBut that applies by default on linux, no configuration necessary.
00:42:08VarriountHere's a wierd one: "Remove computer from docking station"
00:42:14Jehan_Heh.
00:42:32VarriountI guess if you do so, and you aren't allowed to, you get logged off?
00:42:33Jehan_The thing is, security policies are known not to be composable.
00:42:38flaviuVarriount: You can disable task manager too!
00:42:53flaviuVarriount: But don't forget to lock down the registry or its all in vain :P
00:42:54Jehan_So, with any combination of such fine-grained settings, you're probably enabling some things that you didn't think of.
00:45:15VarriountHm, how do you enforce disk quotas on linux?
00:45:52flaviuVarriount: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/System_Administration_Guide/ch-disk-quotas.html
00:47:59Jehan_Looking through the logs: If you want to use -fpermissive to allow implicit conversions from const T* to T*, that won't work with clang.
00:48:44flaviuwhy bother with const in the first place?
00:50:12Jehan_flaviu: Because some header files do declare stuff as const, but Nim has no means to represent importc stuff as const.
00:52:21VarriountJehan_: Is there an easy workaround?
00:53:22*Trustable quit (Quit: Leaving)
00:53:42Jehan_Varriount: In C++11, cast to (decltype(target))
00:54:31Jehan_In gcc/clang for earlier versions, typeof() and __typeof() can also be used.
00:54:51VarriountJehan_: Can that be used verbatim?
00:55:05Jehan_I think we had already been discussing to allow for an extended importc syntax.
00:55:18VarriountOr does 'target' mean the target variable/type?
00:55:29Jehan_I.e. where you do {.importc: "(char *)(foo($1))".}
00:55:41Jehan_Varriount: target is whatever the value gets assigned to.
00:55:54Jehan_decltype/typeof figures out the type of an expression.
00:56:10VarriountWhat about function arguments though?
00:56:52Jehan_Doesn't have to be the literal target, can also be "what you think the type should be".
00:57:00*ehaliewicz quit (Ping timeout: 250 seconds)
00:57:04Jehan_Besides, function arguments are generally not the problem.
00:57:20Jehan_Since you can always add const/volatile implicitly, you just can't strip it.
00:57:51Jehan_Nim values never should have const/volatile, so they can always be passed to functions expection const/volatile arguments.
00:58:58Jehan_If I had to hack a quick fix together, I'd simply do a cast of importc functions to their expected return type.
00:59:22Jehan_E.g., gai_strerror() is declared as a cstring in Nim, so I'd cast it to a (char *).
01:00:37Jehan_The downside is that this blows up code complexity for the C++ target.
01:00:51Jehan_If you have lots of external function calls.
01:05:52Jehan_Luckily, it's a C++-only problem.
01:06:05Jehan_C and Objective C treat that as a warning only.
01:06:36Jehan_Which is not what you want if you actually program in either language, but makes them much nicer as target languages for compilers.
01:12:48*BlaXpirit quit (Quit: Quit Konversation)
01:19:25BitPuffinJehan_: -Werror
01:20:00Jehan_BitPuffin: -Werror is the other extreme -- it's too aggressive.
01:20:15Jehan_It makes things errors that are completely harmless.
01:21:09Jehan_Not to mention warnings that you can't avoid, because they come from external libraries.
01:21:38Jehan_I've always wanted to figure out a set of warnings that combined with -Werror give you decent error reporting, but have been too lazy to do that. :)
01:22:26Jehan_Plus, it would result in really, really long command lines. :)
01:27:25*Fr4n joined #nimrod
01:27:29*Francisco quit (Ping timeout: 255 seconds)
01:35:59*xenagi quit (Quit: Leaving)
01:45:08superfuncJehan_: why not -werror and suppress the superfluous warnings?
01:45:22Jehan_superfunc: What do you mean?
01:46:50superfuncI though werror just turned warnings to errors
01:51:38Jehan_-Werror does.
01:51:52Jehan_The problem is that there are a ton of harmless warnings that then also get turned into errors.
02:01:41*BitPuffin quit (Ping timeout: 255 seconds)
02:06:47VarriountWow. the external compiler configuration code is actually quite nice looking
02:07:39Jehan_Varriount: Yeah, it's a nice example of using Nim for internal DSLs.
02:10:02Jehan_My main issue with the compiler is stuff like TLoc with all its one-letter names for important fields.
02:11:28Jehan_Still haven't figured out what TLoc.a is for, since it's not documented and grepping for a (even grep -w a) is hopeless.
02:15:18superfuncJehan_: I meant that hopefully we could suppress the harmless warnings so we could leave -Werror on
02:15:37Jehan_superfunc: Yeah, that's what I was talking about.
02:18:44VarriountJehan_: That
02:19:01VarriountThat's why any change to the compiler code should add documentation as well as fixes.
02:20:12Jehan_Varriount: Heh. Guilty as charged. :)
02:21:52*superfunc__ quit (Ping timeout: 246 seconds)
02:22:22VarriountYes, some might consider documentation is certain areas of the compiler to be... redundant, however in a program as complicated as the Nim compiler, I'd rather have an excess of explanation than too little.
02:25:59Jehan_Varriount: Agreed.
02:26:11Jehan_Mind you, it's not any better in, say, clang.
02:26:42Jehan_I keep wanting to use some of the parts of clang for my day job, but keep getting frustrated by its internal complexity.
02:26:52Jehan_Not that gcc is any better, mind you. Probably worse.
02:28:36VarriountJehan_: Really? I was under the impression - from what I've heard about clangs 'shinyness' - that clang was documented
02:31:02Jehan_Varriount: Parts are well documented, other parts are … lacking.
02:33:42Jehan_What I'm interested in is using clang for source-to-source translation.
02:34:07Jehan_Which is not trivial to use, and the features I need are hard to figure out.
02:34:10VarriountSay.. C++ to Nim transformation? :3
02:34:21Jehan_No, C++-to-C++.
02:34:35Jehan_In the end, I wrote this from scratch in Nim.
02:34:46Jehan_It was easier than figuring out clang. :)
02:34:50VarriountJehan_: What needed to be translated?
02:34:53Jehan_Or at least, those parts of clang.
02:35:06Jehan_Varriount: Inter alia, turning global and static variables into thread-local variables.
02:35:38VarriountJehan_: Interesting.
02:36:24Jehan_And Nim is a joy to work with for this kind of application.
03:25:09*Jehan_ quit (Quit: Leaving)
03:25:23*flaviu quit (Ping timeout: 255 seconds)
03:38:46*Boscop__ joined #nimrod
03:39:17*Boscop__ is now known as Boscop
03:52:46*will quit (Ping timeout: 255 seconds)
04:09:47*ehaliewicz joined #nimrod
05:25:17*ehaliewicz quit (Remote host closed the connection)
06:13:31VarriountI just wrote up a 43 line explanation (max 79 char columns) of how functions in batch work, including arguments, scopes, and return values.
06:44:58VarriountFor anyone interested: https://gist.github.com/Varriount/3db50b6816e7a58d37ae
07:22:55*noam_ quit (Ping timeout: 244 seconds)
07:48:03Araqer ... TLoc.a wasn't used for anything interesting and is gone in bigbreak
07:52:45*vendethiel quit (Ping timeout: 256 seconds)
07:55:20*vendethiel joined #nimrod
07:58:14*irrequietus joined #nimrod
08:02:31*irrequietus quit (Client Quit)
08:03:07*irrequietus joined #nimrod
08:08:03*BlaXpirit joined #nimrod
08:16:29*vendethiel quit (Ping timeout: 245 seconds)
08:21:51*vendethiel joined #nimrod
08:38:40*ARCADIVS quit (Quit: ARCADIVS)
09:21:08*superfunc quit (Quit: Connection closed for inactivity)
09:30:29*gokr joined #nimrod
09:37:16*Matthias247 joined #nimrod
09:42:02*Francisco joined #nimrod
09:44:19*Fr4n quit (Ping timeout: 265 seconds)
09:57:49*Fran__ joined #nimrod
09:59:32*Francisco quit (Ping timeout: 250 seconds)
10:24:47*irrequietus quit (Ping timeout: 244 seconds)
10:49:48*untitaker quit (Ping timeout: 250 seconds)
11:02:34*untitaker joined #nimrod
11:10:55*xcombelle joined #nimrod
11:20:10*xcombelle quit (Ping timeout: 256 seconds)
11:34:33*BitPuffin joined #nimrod
11:37:00*BitPuffin left #nimrod (#nimrod)
11:46:39*xcombelle joined #nimrod
11:52:16*rpag quit (Quit: Leaving)
11:56:45*untitaker quit (Ping timeout: 244 seconds)
11:57:44*untitaker joined #nimrod
12:19:17*gokr_ joined #nimrod
12:19:19*gokr quit (Read error: Connection reset by peer)
12:22:09*flaviu joined #nimrod
12:28:44*gokr1 quit (Ping timeout: 256 seconds)
12:35:04*gokr joined #nimrod
12:36:21*will joined #nimrod
12:38:05*gokr_ quit (Ping timeout: 244 seconds)
12:44:22flaviuVarriount: Batch is easy mode ;) Try an nonstructured programming language - you have to develop your own calling conventions.
12:44:59AraqI still think we should compile a subset of Nim to batch and posix shell
12:45:16Araq... only 1 script to maintain
12:49:53flaviuAraq: You could do it like emscriptem! Open a temp file and use it as main memory.
12:51:12Araqreally? but that supports random access. A "file" doesn't. ;-)
12:53:13*dom96_ joined #nimrod
12:53:28dom96_gokr: thanks for mentioning me in your article :)
12:53:48flaviudd if=tmpfile count=1 bs=objsize obs=16 seek=pos/16
12:54:04flaviuThat's how you can read from main memory
12:54:34*EastByte_ joined #nimrod
12:54:35*BlaXpirit quit (Quit: Quit Konversation)
12:56:22*clone1018__ joined #nimrod
12:56:42*clone1018_ quit (Ping timeout: 260 seconds)
12:56:42*EastByte quit (Ping timeout: 260 seconds)
12:56:43*dom96 quit (Ping timeout: 260 seconds)
12:56:44*CARAM quit (Ping timeout: 260 seconds)
12:57:09*CARAM_ joined #nimrod
12:57:14flaviuAlthough it would be more portable to just use variables with binary contents and a helper program to extract values.
12:58:28flaviuYou could also do stuff like mm36423_fieldname, I suppose that would be easiest.
12:58:45*Jehan_ joined #nimrod
12:59:08*xcombelle quit (Ping timeout: 255 seconds)
13:00:13Jehan_Araq, Varriount: koch csource is currently broken, because the variable "mingw" is not defined.
13:00:28*dom96 joined #nimrod
13:00:49AraqJehan_: already fixed it
13:00:55Jehan_Ah, thanks. :)
13:00:59Araqmaybe I didn't push it
13:04:23Jehan_Looks like it.
13:04:33Jehan_But as long as it's in the pipeline, that's fine. :)
13:12:01*gokr1 joined #nimrod
13:12:06gokr1hey
13:13:44Jehan_Araq: Speaking of unpushed stuff, the most recent version produces: Error: invalid pragma: benign
13:14:10Jehan_It looks like there's a lot of code transitioned to benign instead of gcsafe, but the pragma isn't actually defined anywhere.
13:14:32*gokr1 sitting in some newly opened playland with free wifi... girls are gone in an instant
13:15:09Jehan_Or rather, not anywhere where it can be found.
13:15:23*BitPuffin joined #nimrod
13:16:25*darkf quit (Quit: Leaving)
13:17:00dom96_gokr1: hey, thanks for mentioning me in your article :)
13:17:11gokr1:)
13:17:36gokr1You seem to have been cranking out quite a lot of Nim stuff.
13:17:50gokr1Are you responsible for the networking layer?
13:18:10gokr1As in "wrote most of it"?
13:18:11AraqJehan_: I know, already fixed it
13:18:16dom96_gokr1: yeah. Not right now though as I am busy with Uni.
13:18:50Jehan_Okies, going to roll back a few revisions until the branch has stabilized again.
13:19:05Araqit's only the very latest push I think
13:19:38gokr1Do you know if Nim is being used in any heavy networking app? Just curious.
13:19:42Jehan_Yeah, but the mingw variable also.
13:20:57gokr1Since I am learning Nim - its pretty easy to contribute by writing these articles "as I go".
13:22:43flaviugokr: The forums are in nim, as is the build system
13:23:00flaviuhttp://build.nimrod-lang.org/
13:23:25*relumelu joined #nimrod
13:23:38gokr1Personally the only "weakness" I can see right now would be the dev env. Our system is in Smalltalk today and we use the Smalltalk toolset quite a lot so... that's where I still wonder slightly how things will turn out.
13:24:01gokr1But nothing prevents us from improving on that :)
13:24:54Jehan_gokr1: Tooling is generally the biggest challenge for a new language.
13:25:55Jehan_I'd actually say the biggest challenge for Nim at the moment is the debugging situation, not the IDE stuff.
13:26:13flaviuJehan_: Huh? C debugger works great.
13:26:27gokr1I did try out debuggers - and ... many of them work quite fine - but the "data explorer" side of it is the bit to "fix2.
13:26:30gokr1"fix".
13:26:31Jehan_flaviu: I'd say it works okay. Not great.
13:26:56gokr1I was wondering (as perhaps you saw) if we couldn't set up some GDB pretty printer that calls a Nim lib to do the work.
13:27:21Jehan_gokr1: I've thought the same thing, using Python scripting.
13:27:44gokr1Yeah, the GDB pretty printer is Python - but we can just have Python call a Nim lib and do the work there.
13:27:54gokr1Or perhaps... hmm. Perhaps not that easy.
13:28:39gokr1But stepping etc works quite nicely. KDevelop (on Linux) seems to work really well for example.
13:28:54Jehan_flaviu: Try to display a seq[seq[int]], for example. :)
13:30:09Jehan_Also, figuring out which C function corresponds to which generic instantiation can be a problem.
13:32:46*irrequietus joined #nimrod
13:34:26dom96_yeah, debugging is definitely something we need to improve.
13:34:28*gokr2 joined #nimrod
13:38:26Jehan_A workaround for displaying complex data is to define a function with {.exportc.} and then calling it from gdb.
13:38:29Jehan_E.g.:
13:38:40Jehan_proc print_int_seq(a: seq[int]) {.exportc.} =
13:38:41Jehan_ echo a
13:39:52*gokr1 quit (*.net *.split)
13:39:52*woodgiraffe quit (*.net *.split)
13:39:52*milosn_ quit (*.net *.split)
13:41:01*kuzy000 joined #nimrod
13:41:49*milosn joined #nimrod
13:42:01gokr2So apart from plugins for various editors etc, Aporia is the "only" IDE effort in Nim, or?
13:42:41dom96_yes
13:43:27gokr2When we looked at Lua we played with Zerobrane Studio - a wx based IDE written all in Lua.
13:44:13gokr2But gtk is just as portable I guess - although not as "native looking".
13:44:35*will quit (Ping timeout: 255 seconds)
13:44:50gokr2dom96_: Did you think any about how debugging would be best "solved" in Aporia? Still interfacing with gdb or?
13:44:56Araqin fact, we use our own file dialogs, so we get the native ones on windows
13:45:32Araqapart from the file dialogs, gtk on windows is quite "native looking"
13:45:36Jehan_gokr2: Other alternatives to piggyback on would be IDEA or MonoDevelop. Or, umm, Eclipse, I guess.
13:45:44gokr2Araq: It uses the WIMP thing, right?
13:46:07*kuzy000 quit (Remote host closed the connection)
13:46:17gokr2Jehan_: There are tons, but... perhaps it would be better if we simply improved on Aporia.
13:46:27Jehan_gokr2: I know.
13:46:39Jehan_I'm painfully aware of how much work that would be.
13:47:08gokr2I am thinking that it would be neat if we had our own IDE written *in Nim* but perhaps its the Smalltalker in me talking.
13:47:42Araqbest alternative to Aporia would be to build upon Lazarus, I think
13:48:12Jehan_gokr2: The main problem I have with Aporia is that it simply is too much of a pain to get to work on a Mac. If that's possible at all right now.
13:48:52gokr2Araq: Aha, I am definitely not well versed in the Pascal arena :)
13:49:00wanI was thinking about writing an editor in Nim, one that would have direct access to the AST to have some nice navigation
13:49:29gokr2Araq: Can pas2nim translate Lazarus to Nim? ;)
13:50:20Araqgokr2: no way. modern pascal is C-like enough to make everything as painful
13:50:39gokr2Oh, they have their own UI layer.
13:51:45gokr2Anyone did a wx wrapper?
13:53:54AraqI did once
13:54:12Araqwell
13:54:21AraqI never completed it
13:55:17Araqthe wx api is not nice to use/wrap
13:55:21dom96_Jehan_: What's the problem with getting it to work on a Mac? Is GTK simply not good on Macs?
13:55:36Jehan_dom96: Umm, the problem is that it crashes during startup?
13:56:41dom96_Why not report it on Github then?
13:56:48dom96_Maybe I can fix it.
13:56:52*Araq once prototyped the same application with both Delphi and wxPython.
13:57:06dom96_Although I guess it might be a compiler problem?
13:57:08Jehan_dom96: Do you have a Mac to reproduce the error and figure out why it happens?
13:58:14Jehan_The other thing is that personally I don't really care much for IDEs, so it's not really a priority for me.
13:59:17Jehan_The general problem is that any IDE forces me to use its editor.
13:59:21dom96_Jehan_: Unfortunately I don't.
13:59:48Jehan_dom96: Yeah, that's why I didn't bother. Macs just aren't all that popular in the Nim community, outside of gradha and myself. :)
14:00:08*woodgiraffe joined #nimrod
14:00:15dom96_Although my girlfriend has one, just asked her and it seems she will let me use it :)
14:01:20gokr2For us OSX and Windows are our primary client platforms.
14:01:27gokr2And all Linux server side.
14:01:33Jehan_Okay, I'll see if I can dig further into it and find out more.
14:01:57Jehan_FWiW, it crashes in listStoreNew, it appears, with a null pointer exception.
14:02:13gokr2Thing is - a language like Nim could offer magnificent cross referencing in an IDE.
14:02:37gokr2and these things tend to become more interested with a larger codebase.
14:02:41gokr2interesting.
14:03:26gokr2dom96_: I have a mac, but haven't tried Aporia there yet.
14:04:21dom96_I think even if we get it working it will look absolutely terrible on a Mac.
14:04:24Jehan_dom96: I'm using gtk+-2.24.24.
14:04:49Jehan_dom96: Well, MonoDevelop/Xamarin Studio also uses gtk underneath, and it's pretty much okay.
14:04:49gokr2The Zerobrane Studio is MIT btw. Quite small codebase.
14:05:09dom96_Jehan_: Maybe it's a case of getting the correct themes.
14:05:38Jehan_dom96: I believe the Mac gtk port uses native widgets.
14:05:39dom96_Maybe MonoDevelop uses some Mac OS APIs to make it nicer.
14:05:59Jehan_I know there's an option to build Gtk for the Mac without X11.
14:07:28Araqyup and that's what mono uses I think
14:07:35dom96_I feel that I should write my own GtkSourceView-like widget. GtkSourceView isn't flexible enough.
14:18:37*Matthias247 quit (Read error: Connection reset by peer)
14:27:27Jehan_Araq, dom96: Looks like the Aporia thing is actually a Nim<->C varargs interaction bug.
14:27:51Jehan_Basically, gtk_list_store_new() expects a varargs list of longs.
14:27:58Jehan_But Nim passes them as ints.
14:28:25Jehan_These are basically enums, so Gtk can't tell and returns NULL.
14:29:38Jehan_If I put the constant in a variable first, the variable has the proper type and size and gets passed correctly.
14:35:57dom96_Does Aporia then work?
14:36:02dom96_Can we fix this in the wrapper?
14:39:23gokr2later
14:39:28*CARAM_ quit (Ping timeout: 272 seconds)
14:39:31*gokr2 quit (Quit: Leaving.)
14:41:37Jehan_dom96: Yeah, it works now. And I think it's a compiler bug actually.
14:45:16*relumelu quit (Ping timeout: 246 seconds)
14:47:48*Boscop quit (Read error: Connection reset by peer)
14:48:07Jehan_Ah, interesting, it may actually be a C compiler thing.
14:48:12*Boscop joined #nimrod
14:50:52Jehan_Ah, yes, looks like a clang bug.
14:52:22Jehan_That said, the reason that it works with gcc is really only luck.
14:58:37dom96_Jehan_: cool
14:58:55Jehan_dom96: Basically, here's what happens.
14:59:24Jehan_Nim calls gtk_list_store_new((int) 6, 64, 64, 64, 64, 64, 64);
14:59:38Jehan_But instead of each 64 there should be a 64L.
14:59:44Jehan_Or (long) 64.
14:59:57Jehan_The problem is that this is a C varargs function.
15:00:23Jehan_int is 32 bits, long is 64 bits on my Mac (and this may be an issue on 64-bit Linux, too).
15:00:53Jehan_So, the function reads two 32-bit arguments as a single 64-bit argument.
15:02:09Jehan_Normally, gcc and clang see that this function has a varargs prototype, however, and pad short words to 64 bits, it appears.
15:02:30Jehan_Except in the case of Aporia, it's a dynamically linked library, so the function is actually a function pointer.
15:02:53Jehan_And it appears as though clang in this case forgets about it.
15:03:20*jorma joined #nimrod
15:03:35Jehan_The gcc frontend to clang handles it correctly, though, it appears.
15:03:40Jehan_Or rather, conservatively.
15:03:49Jehan_Strictly speaking, what clang does is still correct.
15:04:01Jehan_Nim should properly cast these constants to long.
15:05:49Jehan_In any event, Aporia works if you compile with gcc for that reason.
15:06:23Jehan_It's a bit ugly, and having to use Control rather then the Command key is not overly exciting, but it works.
15:06:34dom96_So it's a nim compiler bug then?
15:07:04Jehan_Yeah.
15:07:14Jehan_Just one that manifests only under rare circumstances.
15:07:49Araqhi jorma welcome
15:09:06AraqNim compiler is actually preferable. That should be easy to fix then.
15:11:26Jehan_Mind you, what clang appears to be doing is not entirely kosher, either, and may break under other circumstances. I'll have to look into that later.
15:11:31*gokr_ joined #nimrod
15:13:46*gokr quit (Ping timeout: 258 seconds)
15:15:28Jehan_Ah, I see, it's actually only the last argument that breaks.
15:15:44Jehan_clang also stores 32-bit sized arguments, but doesn't zero out the underlying storage.
15:16:53Jehan_So the upper bits of the last argument are garbage.
15:32:29Jehan_I've submitted a bug report with code to reproduce the issue.
15:33:12dom96_Jehan_: Awesome :D
15:40:31*kemet joined #nimrod
15:41:52*kemet quit (Client Quit)
15:55:02*Trustable joined #nimrod
15:57:05*fowl quit (Ping timeout: 258 seconds)
15:58:04*jorma quit (Ping timeout: 246 seconds)
16:06:24*endou_____ joined #nimrod
16:15:56*CARAM_ joined #nimrod
16:16:51*rpag joined #nimrod
16:19:22*flaviu is now known as flaviu_
16:21:33*AMorpork is now known as AFKMorpork
16:30:43*gokr joined #nimrod
16:31:46Araqugh, Jehan_ can you also look into: [csources] Build fail on OSX 64bit (#5) please?
16:31:51*gnosis_ joined #nimrod
16:32:11Jehan_Araq: Link?
16:32:35Araqhttps://github.com/nimrod-code/csources/issues/5
16:32:39*gokr_ quit (Ping timeout: 244 seconds)
16:34:13Jehan_Hmm, I can reproduce the error, but I'm wondering what's happening here.
16:39:04Jehan_Breaks on Linux, too.
16:39:52Jehan_If I do a fresh "koch csource -d:release" on the most recent devel checkout (after having fixed the mingw issue), it works.
16:40:32Araqhrm works for me on linux, but I'm on the wrong branch
16:42:21Jehan_I'm getting:
16:42:25Jehan_c_code/2_2/nimrod.o: In function `PreMainInner':
16:42:25Jehan_nimrod.c:(.text+0x9c1): undefined reference to `stdlib_cpuinfoDatInit'
16:42:25Jehan_nimrod.c:(.text+0xaa7): undefined reference to `HEX00_prettybaseDatInit'
16:42:25Jehan_nimrod.c:(.text+0xb6a): undefined reference to `HEX00_semparallelDatInit'
16:42:25Jehan_nimrod.c:(.text+0xbec): undefined reference to `stdlib_cpuinfoInit'
16:42:26Jehan_nimrod.c:(.text+0xcd2): undefined reference to `HEX00_prettybaseInit'
16:42:26Jehan_nimrod.c:(.text+0xd95): undefined reference to `HEX00_semparallelInit'
16:42:27Jehan_c_code/2_2/stdlib_osproc.o: In function `nospcountProcessors':
16:42:27Jehan_stdlib_osproc.c:(.text+0x1714): undefined reference to `ncpicountProcessors'
16:42:28Jehan_c_code/2_2/lookups.o: In function `skipalias_293255':
16:42:28Jehan_lookups.c:(.text+0x9c6): undefined reference to `replacedeprecated_292324'
16:42:29Jehan_c_code/2_2/cgen.o: In function `genmagicexpr_569274':
16:42:29Jehan_cgen.c:(.text+0x17b5d): undefined reference to `liftparallel_477918'
16:42:30Jehan_collect2: ld returned 1 exit status
16:43:23Jehan_That's a fresh clone & sh build.sh
16:46:14Jehan_Can grep build.sh, some modules such as semcall are never compiled or linked.
16:46:54Jehan_Hmm, wait, that may be normal even.
16:49:02Jehan_I also think that the c_code directories have old files in them that weren't removed.
16:49:26Jehan_I usually do a rm -rf build/c_code before running koch csource
16:51:08*gokr quit (Ping timeout: 258 seconds)
16:51:53*BitPuffin quit (Ping timeout: 240 seconds)
17:00:07Araqyeah same here for 'master'
17:00:11*ehaliewicz joined #nimrod
17:00:28Araqso never mind, I will fix it
17:01:11Jehan_It's three files that are missing: stdlib_cpuinfo, semparallel, and prettybase.
17:01:20Jehan_Not sure why code for them wasn't generated.
17:02:15Araqwell I simply forgot to commit build.sh ... :-(
17:03:52*Onionhammer quit (Ping timeout: 244 seconds)
17:04:24*flaviu_ quit (Remote host closed the connection)
17:05:59*flaviu joined #nimrod
17:06:47*Onionhammer joined #nimrod
17:07:27Jehan_Ah. :)
17:07:57Araqkoch needs a "push csources" command
17:09:44NimBotnimrod-code/csources master ddcc0f3 Araq [+0 ±1 -0]: fixes #5
17:11:00Jehan_Works now. :)
17:11:24Araqthis csources repo still isn't ideal
17:12:10Araqbut oh well, the alternatives all have their own problems
17:12:11Jehan_In what way? Okay, it's a bit hackish, but in principle, it works.
17:12:34Jehan_The only problem I'm seeing is that there's always a huge delta between commits.
17:13:00Jehan_So the size blows up fairly fast.
17:13:11Araqthat will vanish with the planned "deterministic C code generation" feature
17:13:29Araqplus we can always prune history
17:14:32Jehan_Yeah.
17:17:06Jehan_I've been working on how to make a smaller source distribution that's still not dependent on tools like xz.
17:17:31Jehan_What seems to work is to tar each c_code subdirectory individually and then generate binary diffs between successive tars.
17:18:53Jehan_I'd just have to modify bsdiff/bspatch to not use bzip2.
17:36:15irrequietusAraq: using nimrod with some C bindings for interfacing to hardware :)
17:37:17irrequietusbecause it compiles to sweet C this might be indeed my work use now, heh :D
17:51:32*boydgreenfield joined #nimrod
18:00:59*Fran__ quit (Quit: Leaving)
18:01:22*Matthias247 joined #nimrod
18:01:42*Fr4n joined #nimrod
18:14:47ldleworkIf I wanted to look at the definition of pop for sequences where would I look?
18:15:00ldlework(the docs should link to the source, that'd be amazing)
18:15:23dom96_Pretty sure they do link to the source.
18:15:43dom96_You can also look at the index and Ctrl + F "pop"
18:15:48Jehan_It's in lib/system.nim
18:15:48ldleworkhttp://nimrod-lang.org/system.html#pop,seq[T]
18:16:36ldleworkthanks
18:16:49Araqdom96_: I had to disable the link to source feature for 0.9.6
18:16:57Araqit broke and I dunno why
18:17:01*bjz_ quit (Read error: Connection reset by peer)
18:17:17*bjz joined #nimrod
18:21:54*Boscop quit (Ping timeout: 265 seconds)
18:22:31*askatasuna joined #nimrod
18:24:03ldleworkif I wanted to contribute, say, https://gist.github.com/dustinlacewell/61f3ccbc4e36dd1d0952 to the system library, how does that work, would it be rejected because it is too simple, etc?
18:24:51*irrequietus quit ()
18:26:13*ehaliewicz quit (Ping timeout: 255 seconds)
18:27:09Araqldlework: it's acceptable for sequtils
18:27:18Araqsystem.nim is already too bloated
18:27:25ldleworkAraq: oh neat
18:27:33Araqso I don't accept anything for it, unless I can't avoid it
18:27:51Jehan_I think there has to be a better name than ipop, though. :)
18:29:39Araqyeah, plus 'del' results not in intuitive semantics
18:30:15Araq'ipop' needs to keep the order, otherwise the seq is not stack-like
18:30:24Araqso you have to use 'delete'
18:32:44*boydgreenfield quit (Quit: boydgreenfield)
18:32:49ldleworkAraq: oh when reading over it I thought delete was just an alias
18:33:55ldleworkJehan_: suggestion?
18:34:19ldleworkI mean should probably just modify the actual pop to take an optional index
18:34:19Jehan_Umm, it's something that should really be consistent across the library.
18:34:25Jehan_For get-and-remove functionality.
18:35:30Jehan_extractAt() or something like that sounds intuitive.
18:35:50*boydgreenfield joined #nimrod
18:36:06*Boscop joined #nimrod
18:36:11ldleworktakeAt ?
18:36:17*gnosis_ quit (Quit: Connection closed for inactivity)
18:36:22ldleworkor just 'take'
18:36:53*Boscop_ joined #nimrod
18:37:35ldleworkJehan_: Nim supports proc overloading right?
18:37:46ldleworkCouldn't we just implement another pop that supports the index?
18:37:57*BitPuffin joined #nimrod
18:38:11Jehan_Hmm.
18:38:24Araqsounds like a good solution
18:38:29Jehan_The answer is, yes, it does. Not sure if `pop` is still meaningful in this context, though.
18:38:53ldleworkJehan_: https://docs.python.org/2/tutorial/datastructures.html
18:39:05Araqthe real question is what do you need ipop for?
18:39:28ldleworkAraq: nothing, I'm just perusing the documentation, and writing little tests here and there
18:39:35Jehan_ldlework: Umm, some of Python's naming choices are not necessarily great.
18:40:01ldleworkJehan_: its not necessarily terrible, pop that is
18:40:29ldleworkNo one is going to say, what the hell is with nimrod, they gave their pop function an index! :)
18:40:49*Boscop quit (Ping timeout: 265 seconds)
18:43:15ldleworkAraq: wait, would that still go in sequtils?
18:43:47Araqldlework: yeah, but then the old pop will be moved over there too
18:43:57ldleworkAraq: okay!
18:44:00Araqin fact, I should do that for bigbreak already
18:44:23ldleworkAraq: what is bigbreak
18:44:47Araqversion 0.10.0 to be released
18:44:49ldleworkis there a document outlining the branching business
18:44:52ldleworkoh
18:45:02ldleworkAraq: I'll submit the pr for it
18:45:06ldleworkagainst bigbreak?
18:45:10Araqldlework: yep
18:45:13ldleworkk
18:45:20Araqer wait a sec
18:45:29Araqdid we decide it's necessary?
18:45:33*superfunc joined #nimrod
18:49:34Jehan_Hmm, is there something wrong with idetools on bigbreak?
18:50:00ldleworkAraq: well, is pop necessary?
18:50:09ldleworkI mean its only 3 lines.
18:50:22ldleworksequtils seems fine to contain such helpers?
18:50:54Araqldlework: pop is not necessary but has the benefit of already existing
18:51:06Jehan_nim idetools does not do anything where nimrod idetools works with the exact same arguments.
18:51:28ldleworkAraq: I can submit it or not, it was just an idea.
18:51:47ldleworkIt would be pretty cool to be a contributor! :P
18:52:14Araqfix one of the over 300 issues then
18:52:38dom96_Araq: Has bigbreak been merged into devel yet?
18:52:53Araqdom96_: no
18:53:08dom96_will it be?
18:53:23Araqnext week perhaps
18:55:05NimBotAraq/Nimrod bigbreak fdf9969 Araq [+0 ±3 -0]: implements #1588
18:55:05NimBotAraq/Nimrod bigbreak 7a48942 Araq [+0 ±9 -0]: nicer error messages (untested)
18:57:17*Boscop joined #nimrod
18:57:18*Boscop quit (Changing host)
18:57:18*Boscop joined #nimrod
19:00:48*boydgreenfield quit (Quit: boydgreenfield)
19:01:32*Boscop_ quit (Ping timeout: 245 seconds)
19:04:05ldleworkI'm confused, the readline proc's in system.nim are empty?
19:05:06*johnsoft quit (Ping timeout: 250 seconds)
19:05:17*johnsoft joined #nimrod
19:07:26Jehan_ldlework: It's a forward declaration.
19:07:37ldleworkah
19:10:29*gokr joined #nimrod
19:10:51*boydgreenfield joined #nimrod
19:12:28ldleworkWould a solution to this ticket be a pr that adds generic versions of all the float specific functions casting to float then back to the generic type? https://github.com/Araq/Nimrod/issues/562
19:13:15Araqldlework: also update web/news.txt and document it as a breaking change
19:13:49ldleworkAraq: for the math.nim one, or the one I submitted against pop?
19:13:59*irrequietus joined #nimrod
19:14:42Araqthe latter
19:15:01ldleworkok
19:15:18Araqldlework: what's the point of generic floating point ops where "generic" means either float32 or float64?
19:15:41ldleworkAraq: I think the guy in the PR wants to be able to do sqrt(an_int)
19:15:44*askatasuna quit (Quit: WeeChat 1.0.1)
19:15:54Araqthat's stupid
19:15:59ldleworkinstead of int(sqrt(float(i))
19:16:12ldleworkis it?
19:16:30ldleworkseems like with generic versions, the math api would be pretty nice
19:16:46ldleworkDoes nim have generics constraints
19:17:00ldleworkwhere you can say, T must have this or that trait for being converted to and from float?
19:17:28*xcombelle joined #nimrod
19:19:48ldleworkproc sqrt*(x: T): T = result = T(sqrt(float(x))) # does this work?
19:20:49ldleworkheh if I'm being stupid just say so, I know I don't know what I'm doing
19:27:13*Demos joined #nimrod
19:27:44*boydgreenfield quit (Quit: boydgreenfield)
19:27:48*gokr1 joined #nimrod
19:28:15Jehan_ldlework: That does not necessarily have sane semantics.
19:28:25gokr1evening
19:28:42Jehan_I'd do a proc(x: BiggestInt): float = sqrt(float(x)) or something like that.
19:28:49Jehan_But don't cast back to the integral type.
19:30:20Jehan_sqrt(2) isn't 1.
19:31:56Araqphilosophically speaking, sqrt(2) isn't even a number. It's an algorithm. ;-)
19:34:53Jehan_Huh? It's very much a real number.
19:35:10Jehan_Well, the floating point approximation is only a rational number, but it's still a number.
19:36:42Araqwell it's an irrational number.
19:37:24Araqit's decimal representation is infinite, and as a constructivist I reject its existance ;-)
19:37:25Jehan_Which was an issue only for the old Greeks.
19:37:28Araq*its
19:37:43Araqno, it should be an issue for any computer scientist
19:38:07Jehan_Its existence is not a problem for constructivist math.
19:38:41Jehan_The thing is, without irrational numbers you cannot have calculus (or any sane form of it).
19:39:14Araqwell sqrt(2) is definitely more abstract than 2
19:39:20Araqor 1/2
19:40:04Araqif you keep it as sqrt(2) and not expand it, it causes no problems for constructivists, I guess
19:41:15gokr1Call me stupid, but why does "echo $x.size" not work (a tuple with an int) but "echo `$`x.size" does?
19:41:49gokr1And "echo($x.size)" works too.
19:42:00Araqit's parsed as (echo) $ (x.size)
19:42:12Araqbinary $
19:42:27Araqit works when you use #! strongSpaces
19:42:27gokr1oooh.
19:43:16gokr1And why did it work ... with `$`?
19:43:31Jehan_Because `$` is an identifier, not an operator.
19:43:41Jehan_You can't write 1 `+` 2, either.
19:43:48Jehan_But you can write 1.`+`(2)
19:48:38gokr1There is no equivalence to a cascade in Nim, right? Although trivial I guess with macros
19:54:08Jehan_What do you mean by cascade specifically? Sorry, the term is a bit overloaded.
19:54:51gokr1A Smalltalk cascade. In Smalltalk I can do "x add(5);add(6)" which is equivalent to "x add(5). x add(6)"
19:55:02gokr1So sending a series of messages to the same receiver.
19:55:23Jehan_Gotcha. And yes, macros work for that.
20:08:19*wan quit (Ping timeout: 244 seconds)
20:10:29*ehaliewicz joined #nimrod
20:15:20*ehaliewicz quit (Ping timeout: 244 seconds)
20:19:45dom96_hrm. Can't seem to be able to install GTK through homebrew.
20:19:49dom96_Jehan_: How did you do it?
20:20:03dom96_I'm getting an error when it tries to run make install.
20:22:30Jehan_dom96_: How did I do what?
20:22:48Jehan_Oh, gtk+?
20:23:04Jehan_I just did brew install gtk+, I think.
20:23:20Jehan_Mind you, I'm still running Mountain Lion, which has an older clang version.
20:23:47*BlaXpirit joined #nimrod
20:25:38*Ven joined #nimrod
20:26:13dom96_Jehan_: This mac has an even older OS: Lion.
20:26:22dom96_Maybe that's why it fails :\
20:27:04*ehaliewicz joined #nimrod
20:27:16*ehaliewicz quit (Remote host closed the connection)
20:27:29*Ven quit (Client Quit)
20:27:52Jehan_Hmm. No idea.
20:33:06gokr1If I am making a standard object "constructor" - I can either use the predefined result guy and set attributes on him, or I can just use the object construction syntax. What is the ... normal way?
20:33:46gokr1I mean say: proc newBoat2(color: string, size: int): Boat = Boat(color: color, size: size)
20:34:04gokr1or: proc newBoat(color: string, size: int): Boat = result.color = color; result.size = size
20:38:10Araqflaviu: https://github.com/Araq/Nimrod/issues/1217 is still open?
20:38:55flaviuNope. It looks like I didn't use the keywords github looks for in the commit message.
20:39:06Araqgokr1: the first way has more advantages, so if possible, you should use that
20:39:30gokr1There is no... double allocation going on then, right?
20:40:01Araqthe 2nd way is used more often I think for the simple reason that it existed much earlier
20:40:11gokr1This result guy... feels funky. But I suspect that its only when I use him, that he gets allocated?
20:40:17flaviugokr1: The second version would crash at runtime if Boat was a pointer.
20:40:29flaviuUnless I'm horribly wrong again :P
20:41:50*q66[lap] joined #nimrod
20:41:50*q66[lap] quit (Client Quit)
20:44:12Jehan_If it's a ref object, you first have to call new(result).
20:45:15Araqgokr1: 'result' is very handy and not in any way novel. both Delphi and Eiffel have it. One point of it is to encourage decoupling setting the return value from control flow
20:47:35gokr1flaviu: You are correct. I just changed Boat to a ref object, and yes, Illegal storage access.
20:50:10*superfunc quit (Quit: Connection closed for inactivity)
20:50:12Araqyes because you need to do 'new(result)'
20:50:21gokr1And inserting the "new(result)" fixed it, so indeed - result is ... just a correctly typed "local" var, no allocation going on.
20:54:18Araqguys can somebody please look into web/babelpkglist.nim and see why the "If you are reading this you..." div is not properly replaced?
20:54:33Araqping Varriount
20:55:06*wan joined #nimrod
20:55:11Araqthe div is in doc/lib.txt
20:56:22ldleworkWhen I try to compile bigbreak I get, https://gist.github.com/dustinlacewell/61b0697c5311c29ce2a8
20:57:10Araqldlework: csources from bigbreak too?
20:57:17ldleworkI'll make sure
21:00:38*johnsoft quit (Ping timeout: 255 seconds)
21:01:18*johnsoft joined #nimrod
21:15:59gokr1it seems procs resolve first, then methods, correct?
21:16:39gokr1Mmm, right, so during compilation - if we can find a proc - then we just statically bind that. Logical.
21:18:09gokr1Its a pretty nifty mix, so usually I guess you code away with inheritance of objects and overloaded procs - as long as it works out, right?
21:19:28Jehan_gokr1: More often, you'll use parametric polymorphism and variant types.
21:20:31Jehan_E.g. proc foo[T](x: T) instead of proc foo(x: S)
21:20:46gokr1So, right... many smaller object hierarchies can easily be described with variants. And then... ah, generics you mean.
21:21:50Jehan_Yeah, but my point is that parametric polymorphism is polymorphism as an alternative to subtype polymorphism.
21:22:05*irrequietus quit ()
21:22:25Jehan_You use the former where you can do static dispatch, the latter where you need dynamic dispatch.
21:22:56Jehan_Parametric polymorphism gives you better type information, subtype polymorphism the flexibility of late binding.
21:33:04gokr1Since I am a bit rusty on generics stuff - in this case Nim will compile several variants of foo (your example) - given all callsites of foo, right?
21:34:25gokr1So instead of "losing" type info with using a common type for a parameter - and thus not being able to bind statically anymore in that proc - you use that.
21:34:49gokr1(not so eloquently put, but)
21:35:47*xcombelle quit (Ping timeout: 265 seconds)
21:37:44Jehan_Yes, though in principle a shared implementation is also possible.
21:37:58Jehan_Similar to what OCaml and Haskell do.
21:38:38gokr1Yeah, right.
21:43:02*wan quit (Ping timeout: 265 seconds)
21:49:43NimBotAraq/Nimrod bigbreak 0e439ce Araq [+3 ±2 -1]: implements #78
21:52:24*Jesin quit (Quit: Leaving)
21:52:30gokr1Btw, wxRust piggy backs on the work by wxHaskell to produce a C wrapper of wx. https://github.com/kenz-gelsoft/wxRust
21:52:56gokr1Then they generate a "high level binding" using a Python script.
22:03:36ldleworkAraq: when compiling a hello world after compiling bigbreak: https://gist.github.com/dustinlacewell/a7910033a66a1ff20d72
22:04:51gokr1ldlework: I think Araq fixed that one... the other day.
22:05:02gokr1Check IRC log :)
22:07:22Araqldlework: should work with today's commits
22:07:31ldleworkI just cloned
22:07:35ldleworkgar
22:07:49Araqwell don't use 0.9.6 to build it, it won't work
22:08:29Araqgokr1: yeah, I used the C wrapper of wx too.
22:16:24*wan joined #nimrod
22:23:07*xenagi joined #nimrod
22:28:50Araqlooks like I need a bigbreak-devel branch ...
22:29:06gokr1An object adds a header that has a ref to the type of the object (I guess) - but.. is there more? I am guessing a tuple has nothing in addition to its members.
22:29:33Araqa raw object also has no runtime type information (RTTI)
22:29:45Araqit's introduced when you do "object of ...."
22:29:56gokr1Right, yes, I read that.
22:30:08gokr1Or {.inheritable.}
22:30:15Araqtrue
22:30:29gokr1But ... I think its also mentioned that objects have "hiding" and tuples do not.
22:30:48gokr1But this ... is just a "design choice" or?
22:31:06gokr1I presume its about the "*".
22:31:17*superfun[c] joined #nimrod
22:31:49Araqhow can you reasonably hide fields in a tuple?
22:32:05VarriountAraq: Pong
22:32:19AraqVarriount: I see no patch to koch.nim wrt version detection
22:33:24VarriountAraq: Did you look in the bigbreak branch?
22:33:29gokr1Sidenote: On the GDB/MI stuff, there seems to be two C libs, but... don't seem to be in very useful states. gdbwire and libmigbd
22:36:22AraqVarriount: I missed your import, that's ugly :P
22:36:42Araqand also wrong
22:37:08Araqor let's say slightly less wrong than system.NimVersion
22:37:14Araqbut still not correct
22:37:25Araqthe point is that koch is not recompiled often
22:37:42Araqso koch needs to read the version from Nim *at runtime*
22:38:02*nande joined #nimrod
22:38:22*boydgreenfield joined #nimrod
22:40:17VarriountAraq: But where will it read the version from?
22:40:52VarriountShould we open up nversion.nim, read in the contents, and get the version from there?
22:40:56gokr1Araq: On reasonably hiding in tuples - to me they don't look that different to objects. But I agree - there are a range of convenience things that would make it "oddish" - you can index via [i], you can unpack in let/var, you can create a tuple without a declared type.
22:42:12AraqVarriount: I thought about running the compiler and extracting the version number it reports
22:42:56*Matthias247 quit (Read error: Connection reset by peer)
22:43:03VarriountAraq: If I'm compiling version 9.6 with version 9.5, 9.5 is going to report its version as 9.5
22:44:16VarriountAraq: We could have koch compile itself when bootstrapping. :p
22:44:26AraqVarriount: how so? the compiler itself takes the number from nversion.nim
22:44:44Araqkoch passes the version only to the docgen etc.
22:45:35VarriountOh, I see. I was thinking wrongly.
22:46:02Jehan_Hmm, there doesn't seem to be a string reverse function in the stdlib. Or am I just overlooking something?
22:46:29Araqit's perhaps not exported, Jehan_
22:46:52Jehan_Hmm, I was going through strutils.nim in its entirety.
22:47:30*Jesin joined #nimrod
22:53:51AraqVarriount: btw I skimmed your bugfix about the missing * export marker. looks good.
22:53:59Araqdid you already make a PR?
22:54:59Araqand what is 'kickstart'?
22:58:28*johnsoft quit (Ping timeout: 255 seconds)
22:59:25*johnsoft joined #nimrod
23:00:36*gokr quit (Quit: IRC for Sailfish 0.8)
23:06:15TrustableIs the branch "master" the replacement for "stable"?
23:06:24Trustablehttps://github.com/Araq/Nimrod/wiki/Official-branches
23:07:06flaviuAraq: reverse isn't in there. It is available in algorithm.nim, but only for openarrays
23:08:49*boydgreenfield quit (Quit: boydgreenfield)
23:09:19AraqTrustable: "stable" means pretty much "dead", but yes
23:09:58TrustableAraq: Should "stable" replaced by "master" in this wiki page?
23:11:41*boydgreenfield joined #nimrod
23:12:40*Boscop_ joined #nimrod
23:12:59NimBotAraq/Nimrod bigbreak 73ff043 Araq [+0 ±2 -0]: docgen works on linux
23:15:22Araqwho writes these wiki pages?
23:15:46Araqand should I read them?
23:16:27*Boscop__ joined #nimrod
23:16:32*Boscop quit (Ping timeout: 255 seconds)
23:19:02TrustableI have marked it as outdated
23:20:29Araqit describes perhaps the way it should be done
23:20:31*Boscop_ quit (Ping timeout: 255 seconds)
23:21:17AraqVarriount: can you look into the babelpckglist.nim issue please?
23:22:26Araqgood night
23:22:35*Boscop__ quit (Ping timeout: 244 seconds)
23:26:53Trustablegood night
23:31:31*fowlmouth joined #nimrod
23:36:04*saml_ joined #nimrod
23:44:12*superfun[c] quit (Quit: Page closed)
23:46:04*BlaXpirit quit (Quit: Quit Konversation)
23:58:26*superfun[c] joined #nimrod
23:58:33*darkf joined #nimrod