00:05:04 | * | Boscop quit (Read error: Connection reset by peer) |
00:05:04 | * | brson quit (Ping timeout: 240 seconds) |
00:05:31 | * | Boscop joined #nimrod |
00:05:36 | * | Boscop quit (Changing host) |
00:05:36 | * | Boscop joined #nimrod |
00:09:17 | * | Boscop quit (Read error: Connection reset by peer) |
00:09:43 | * | Boscop joined #nimrod |
00:10:00 | * | enquora quit (Quit: enquora) |
00:11:28 | * | Boscop quit (Read error: Connection reset by peer) |
00:11:50 | * | Boscop joined #nimrod |
00:15:06 | * | Boscop quit (Read error: Connection reset by peer) |
00:15:11 | Varriount | Araq: Found out the bug. |
00:15:30 | * | Boscop joined #nimrod |
00:15:31 | Varriount | A pointer was being incremented for some reason. |
00:15:36 | * | Boscop quit (Changing host) |
00:15:37 | * | Boscop joined #nimrod |
00:15:56 | Varriount | Araq: Any particular reason the SysAssert just quits, instead of writing a stack trace to the output? |
00:18:33 | Araq | you can't always write a stack trace when your heap is corrupted |
00:23:53 | Varriount | Araq: Now here's a good question: Now that Linux and (nearly) Windows have file monitoring support, what is going to be done about Mac and *BSD? |
00:24:02 | * | Varriount_ joined #nimrod |
00:24:02 | * | Varriount_ quit (Client Quit) |
00:25:12 | Araq | Varriount: the Mac users do not need this feature and the BSD users will write a patch for us |
00:25:34 | Varriount | Why don't Mac users need the feature? |
00:26:19 | Araq | they are happy without a DEL key, they are happy without this advanced feature called "file monitoring" ;-) |
00:26:34 | Varriount | Oh you cynic you. :P |
00:29:52 | Varriount | Araq: Perhaps we can convince gradha to write an implementation for us. I think he's the only one who has access to a Mac. |
00:30:18 | Araq | lol, you're so wrong |
00:30:42 | Varriount | Hm. So you have access to a Mac? |
00:30:55 | Araq | lots of people here use a mac, jehan, zahary |
00:31:10 | * | Varriount looks for zahary |
00:31:28 | Araq | he promised he'll return btw |
00:31:45 | Varriount | Araq: Ah. On another note, why is 'semistatic' evil? |
00:32:58 | Araq | because it's a side effect of disambiguation pass masquerading as a type |
00:33:41 | Varriount | In other words...? |
00:35:30 | NimBot | Araq/Nimrod devel 9d5d3c9 Araq [+0 ±1 -1]: fixes #820 |
00:35:30 | NimBot | Araq/Nimrod devel abc8447 Araq [+0 ±1 -0]: fixes #1413 |
00:35:52 | Araq | in other words it is yet another semantically vague clusterfuck |
00:36:05 | Varriount | Ah. Now I get it. |
00:36:15 | Varriount | *writes that down for future posterity* |
00:37:14 | Araq | so ... when should you use 'semiStatic[T]'? why is static[T] even in the language? is 4 a static[int] or is it an int? |
00:39:36 | Varriount | Araq: So... why didn't you tell zahary this? |
00:41:03 | Araq | I did |
00:41:20 | Araq | months ago, you can check the logs |
00:41:56 | Varriount | So.. should I remove the static[] section in the language manual? |
00:43:46 | Araq | no, I need to think about how this should work |
00:47:50 | * | willwillson quit (Ping timeout: 260 seconds) |
00:47:54 | Varriount | Araq: If --gc:markAndSweep and -d:useSysAssert -d:useGcAssert don't help in finding memory leaks, is there anything else I can do? |
00:48:48 | Araq | sure, use the memory profiler |
00:49:23 | Araq | by their nature leaks are caused by the stack traces that cause frequent allocations |
00:51:44 | Varriount | It's too bad Nimrod doesn't have some sort of memory visualization tool. |
00:54:02 | NimBot | Araq/Nimrod devel 32a5d4b Araq [+0 ±2 -0]: fixes #1442 |
00:54:11 | Araq | good night |
00:54:19 | Varriount | Good night. Thanks for the help. |
01:09:52 | * | q66_ quit (Quit: Leaving) |
01:10:25 | adoniscik | bye |
01:30:03 | * | nande quit (Read error: Connection reset by peer) |
01:40:22 | * | noam quit (Read error: Connection reset by peer) |
01:40:47 | * | noam joined #nimrod |
01:47:10 | adoniscik | is there a linter? |
01:48:37 | Varriount | adoniscik: Sorta. `nimrod pretty` is supposed to reformat a file to fit style conventions, and `nimrod check` is supposed to warn about deprecated programming conventions. |
01:49:19 | Varriount | The pretty tool needs updating though, to fit the style guide (located at https://github.com/Araq/Nimrod/wiki/NEP-1-:-Style-Guide-for-Nimrod-Code ) |
02:58:23 | * | xenagi joined #nimrod |
03:38:41 | * | xenagi quit (Ping timeout: 255 seconds) |
03:41:52 | * | saml_ quit (Quit: Leaving) |
04:00:35 | Varriount | dom96, Araq: I'm re-working the file watching procedure to use a different scheme for tracking if a file has moved. Hopefully it will sort out the GC problems I'm having. |
04:13:38 | * | flaviu quit (Ping timeout: 260 seconds) |
04:49:41 | * | kshlm joined #nimrod |
05:06:36 | * | silven joined #nimrod |
05:15:52 | * | ome joined #nimrod |
05:17:32 | * | gkoller joined #nimrod |
05:20:29 | * | gkoller quit (Client Quit) |
05:48:02 | * | Demos quit (Read error: Connection reset by peer) |
06:41:33 | NimBot | nimrod-code/packages master df2db95 achesak [+0 ±1 -0]: Added pythonfile and colorsys. |
06:41:33 | NimBot | nimrod-code/packages master bac77d5 achesak [+0 ±1 -0]: Fixed URL. |
06:41:33 | NimBot | nimrod-code/packages master 6ad8d36 achesak [+0 ±1 -0]: Oops. |
06:41:33 | NimBot | nimrod-code/packages master 504f3c9 Dominik Picheta [+0 ±1 -0]: Merge pull request #81 from achesak/master... 2 more lines |
07:13:26 | * | adoniscik quit (Ping timeout: 250 seconds) |
07:19:03 | * | kunev joined #nimrod |
07:27:04 | * | johnsoft quit (Ping timeout: 260 seconds) |
07:28:04 | * | johnsoft joined #nimrod |
07:32:42 | * | reloc0 quit (Ping timeout: 246 seconds) |
07:43:56 | * | zahary joined #nimrod |
07:45:44 | * | BlameStross joined #nimrod |
08:02:48 | * | zahary quit (Quit: Leaving.) |
08:42:54 | * | johnsoft quit (Ping timeout: 260 seconds) |
08:43:11 | * | johnsoft joined #nimrod |
08:48:17 | * | johnsoft quit (Ping timeout: 255 seconds) |
08:48:35 | * | johnsoft joined #nimrod |
08:53:58 | * | io2 joined #nimrod |
09:31:02 | * | OrionPK quit (Read error: Connection reset by peer) |
09:31:30 | * | BlameStross1 joined #nimrod |
09:32:49 | * | BlameStross quit (Ping timeout: 246 seconds) |
09:33:05 | * | reloc0 joined #nimrod |
09:59:23 | * | johnsoft quit (Ping timeout: 255 seconds) |
09:59:57 | * | johnsoft joined #nimrod |
10:00:04 | * | BlameStross1 quit (*.net *.split) |
10:00:05 | * | untitaker quit (*.net *.split) |
10:00:05 | * | Varriount quit (*.net *.split) |
10:07:18 | * | BlameStross1 joined #nimrod |
10:07:18 | * | untitaker joined #nimrod |
10:07:18 | * | Varriount joined #nimrod |
10:07:33 | * | ome quit (Quit: Connection closed for inactivity) |
10:16:02 | reactormonk | #81? O.o |
10:16:49 | reactormonk | ah, packages. |
10:23:55 | * | BlameStross1 quit (*.net *.split) |
10:23:55 | * | untitaker quit (*.net *.split) |
10:23:56 | * | Varriount quit (*.net *.split) |
10:25:50 | * | gs joined #nimrod |
10:29:32 | * | kshlm quit (Ping timeout: 255 seconds) |
10:30:40 | * | BlameStross1 joined #nimrod |
10:30:40 | * | untitaker joined #nimrod |
10:30:40 | * | Varriount joined #nimrod |
11:58:34 | * | EXetoC joined #nimrod |
12:04:29 | * | willwillson joined #nimrod |
12:07:04 | EXetoC | has anyone needed to use MongoDB yet? |
12:12:40 | * | johnsoft quit (Ping timeout: 260 seconds) |
12:13:04 | * | johnsoft joined #nimrod |
12:19:05 | EXetoC | other than the guy who submitted the bug report 8 months ago.. I wasn't aware of that one. I need to fix it in any case |
13:03:59 | * | zahary joined #nimrod |
13:11:08 | * | darkf quit (Quit: Leaving) |
13:14:24 | * | zahary quit (Quit: Leaving.) |
13:16:17 | * | Varriount_ joined #nimrod |
13:19:12 | * | Varriount quit (Ping timeout: 246 seconds) |
13:28:37 | * | johnsoft quit (Ping timeout: 245 seconds) |
13:30:03 | * | OrionPK joined #nimrod |
13:33:08 | * | zahary joined #nimrod |
13:35:57 | * | johnsoft joined #nimrod |
13:46:18 | * | enquora joined #nimrod |
13:47:43 | * | EXetoC quit (Quit: WeeChat 0.4.3) |
13:56:24 | * | nueva joined #nimrod |
13:57:13 | * | nueva quit (Client Quit) |
14:08:02 | * | EXetoC joined #nimrod |
14:43:16 | * | kunev quit (Quit: leaving) |
14:55:16 | * | zahary quit (Quit: Leaving.) |
14:55:54 | * | EXetoC quit (Quit: WeeChat 0.4.3) |
15:19:01 | * | ome joined #nimrod |
15:29:04 | * | ics joined #nimrod |
15:32:07 | * | EXetoC joined #nimrod |
15:38:18 | * | Demos joined #nimrod |
15:55:36 | Skrylar | meep. |
15:59:47 | * | zling_ quit (Ping timeout: 245 seconds) |
16:00:34 | enquora | Am looking at nimrod to create a non-trivial library that needs to run on server, iOS and in browser. Need to pass in a substantial amount of data, prefereably in json or xml format, and output a non-trivial byte object. Any examples of how one would configure a project for this? |
16:00:56 | enquora | The library is a pdf generator, btw |
16:01:06 | * | zling_ joined #nimrod |
16:08:04 | Skrylar | nimrod doesn't really have to be configured for that |
16:08:11 | Skrylar | unless you mean like, library design guides or the like |
16:09:32 | willwillson | there are some cross platform examples in the examples directory, e.g : https://github.com/Araq/Nimrod/tree/devel/examples/cross_calculator |
16:23:35 | * | silven quit (Remote host closed the connection) |
16:28:27 | Demos | one of the nicest features of nimrod is that because of its great compile time code exceution and metaprogramming support you rarely need complex build systems |
16:32:17 | * | BlameStross joined #nimrod |
16:32:18 | * | silven joined #nimrod |
16:33:48 | * | BlameStross1 quit (Ping timeout: 246 seconds) |
16:40:25 | * | adoniscik joined #nimrod |
16:49:35 | * | q66 joined #nimrod |
17:00:40 | * | Matthias247 joined #nimrod |
17:23:03 | * | brson joined #nimrod |
17:23:37 | * | adoniscik quit (Read error: No route to host) |
17:55:19 | * | TylerE quit (Read error: Connection reset by peer) |
17:56:15 | * | TylerE joined #nimrod |
18:00:24 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
18:10:38 | * | adoniscik joined #nimrod |
18:13:13 | * | gs quit (Ping timeout: 246 seconds) |
18:14:33 | * | Trustable joined #nimrod |
18:17:18 | NimBot | Araq/Nimrod devel 1573400 Reimer Behrends [+0 ±2 -0]: More robust implementation for finding the beginning of the stack.... 4 more lines |
18:17:18 | NimBot | Araq/Nimrod devel 1d19c95 Andreas Rumpf [+0 ±2 -0]: Merge pull request #1400 from rbehrends/fix-stackscan... 2 more lines |
18:32:13 | * | noam_ joined #nimrod |
18:35:06 | * | silven_ joined #nimrod |
18:39:27 | * | willw946 joined #nimrod |
18:40:05 | * | noam_ quit (Ping timeout: 260 seconds) |
18:41:15 | dom96 | hi |
18:41:28 | * | silven quit (*.net *.split) |
18:41:28 | * | willwillson quit (*.net *.split) |
18:41:28 | * | noam quit (*.net *.split) |
18:41:29 | * | Fr4n quit (*.net *.split) |
18:42:39 | shodan45 | dom96: hello |
18:42:47 | dom96 | hi shodan45 |
18:47:02 | shodan45 | ... I really should stop reading systemd flame wars & get some work done >_> |
18:47:57 | * | Fr4n joined #nimrod |
18:50:04 | dom96 | haha |
18:56:19 | * | noam joined #nimrod |
19:01:33 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
19:13:13 | endou__ | shodan45: Haha, just the same here |
19:13:41 | endou__ | all: Btw, I have not introduced my self, so hello everyone and thank you Araq I like Nimrod very much |
19:13:41 | Matthias247 | I also read it... |
19:14:05 | Araq | hi endou__. thank you. |
19:14:07 | Matthias247 | reddit seems to be the death for productivity :) |
19:15:58 | dom96 | hello endou__! |
19:22:06 | * | askatasuna joined #nimrod |
19:24:09 | dom96 | Araq: Should zmq remain in the stdlib? |
19:24:20 | Araq | no |
19:24:31 | Araq | it should be a babel package |
19:40:50 | * | flaviu joined #nimrod |
19:42:35 | * | Ven joined #nimrod |
19:46:36 | NimBot | Araq/Nimrod devel 3b7a149 Dominik Picheta [+0 ±0 -1]: Removed zmq wrapper. |
19:47:46 | flaviu | Does this work for anyone else: https://github.com/Araq/Nimrod/graphs/traffic ? |
19:47:53 | flaviu | *someone |
19:48:39 | dom96 | works for me |
19:48:54 | flaviu | hmm, you might have to be a contributer to the repo then |
19:49:01 | flaviu | It works for me on my repos too |
19:49:11 | flaviu | Can you screenshot it? I'm curious |
19:50:05 | adoniscik | doesn't for me |
19:50:13 | Araq | works for me |
19:50:26 | flaviu | I guess you have to be a contributor to get those analytics |
19:50:51 | * | untitaker quit (Ping timeout: 246 seconds) |
19:51:02 | dom96 | I can screenshot it, if Araq doesn't mind. |
19:52:31 | Araq | sure why not |
19:53:18 | Araq | hint: the numbers are so huge that we don't have names for them |
19:55:56 | * | untitaker joined #nimrod |
19:56:07 | dom96 | flaviu: http://i.imgur.com/AtsbvzF.png |
19:57:02 | flaviu | reddit: 6 |
19:57:04 | flaviu | lol |
19:58:10 | flaviu | Anyway, not too shabby, especially since it looks like they only started collecting data since a couple weeks ago |
19:58:51 | dom96 | It is interesting that the Nimrod forum gives more unique visitors to the repo |
19:58:55 | dom96 | than reddit |
19:59:13 | flaviu | I assume thats because it contains a lot more googleable contents |
19:59:33 | flaviu | reddit contains just maybe ~1000 comments overall, the fourm much more |
20:01:41 | Araq | the redditors are all busy writing haskell code that doesn't use the GC |
20:02:47 | Araq | because we all know that (a) GCs don't scale and hurt multi core and (b) pure functional programming is excellent for multi core |
20:03:22 | flaviu | pure functional programming is also good for GC |
20:03:58 | flaviu | Old can never point to new |
20:05:25 | Matthias247 | oh, I also found the religous post about clojure-fibers being the one and only async approach - interesting ;) |
20:06:23 | Matthias247 | or arguing whether python is too slow for tcp |
20:06:30 | Matthias247 | I should really block that page :) |
20:12:15 | NimBot | Araq/Nimrod devel fc6a799 def [+0 ±1 -0]: Add random() for openarrays |
20:12:15 | NimBot | Araq/Nimrod devel add0a0e Dominik Picheta [+0 ±1 -0]: Merge pull request #1351 from def-/random-openarrays... 2 more lines |
20:12:18 | EXetoC | too slow for tcp. I don't even.. |
20:12:55 | flaviu | EXetoC: Apparently the library that she used was really slow |
20:14:01 | * | askatasuna quit (Quit: WeeChat 0.4.3) |
20:14:44 | endou__ | Matthias247: Could you send me the link to the clojure-fibers post? |
20:15:12 | flaviu | endou__: http://www.reddit.com/r/programming/comments/2ddl21/farewell_to_asynchronous_code/ |
20:15:30 | Matthias247 | yep, that one |
20:15:36 | endou__ | ty |
20:17:59 | dom96 | Somebody mentioned async await so it's all good. |
20:18:50 | Araq | now since there are several people here not sleeping ... |
20:19:30 | Araq | any opinion on .benign ? |
20:20:09 | dom96 | oh, this guy is arguing that Quasar is more powerful, whatever that is. |
20:20:22 | * | Ven quit (Ping timeout: 250 seconds) |
20:20:32 | Matthias247 | for my c# work project I now converted everything that' async first to Tasks and now the rest to Rx Observables. |
20:20:38 | dom96 | Araq: My opinion is: it sound ok. |
20:20:51 | EXetoC | "Reactive (Dataflow) Programming in Java and Clojure with Quasar and Pulsar" |
20:20:58 | Matthias247 | that really fixed a lot of my threading mess :) |
20:20:58 | dom96 | Matthias247: You should try out Nimrod's async await :) |
20:21:10 | Matthias247 | yeah, i have to |
20:21:15 | Matthias247 | But you also need Rx ;) |
20:21:17 | dom96 | We worked out most of the issues now, I hope. |
20:21:23 | dom96 | What's Rx? |
20:21:27 | Matthias247 | reactive extensions |
20:21:35 | Matthias247 | asynchronous streams |
20:21:47 | dom96 | got any links handy? |
20:22:11 | Matthias247 | http://www.introtorx.com |
20:23:03 | Matthias247 | was initially done for C#, but there are now ports for Java (rxjava), the remaining jvm stuff, JS, cpp and probably others |
20:23:50 | Matthias247 | that's probably a nice example: https://gist.github.com/benjchristensen/4679253#file-videoexample-snippet-groovy |
20:24:02 | adoniscik | does nimrod have a limit on the number of -l parameters it accepts? |
20:24:27 | flaviu | I'd be surprised lol |
20:26:41 | Araq | the VM has all sorts of limits |
20:26:44 | dom96 | Matthias247: that site is a bit broken |
20:27:18 | flaviu | dom96: There's a second, vertical, TOC |
20:27:38 | dom96 | flaviu: ... I know |
20:27:57 | Matthias247 | I can do nothing about that :) |
20:29:01 | dom96 | That site is really more of a tutorial and an in-depth look. I would prefer a TL;DR :P |
20:29:54 | flaviu | dom96: https://github.com/Netflix/RxJava/wiki |
20:30:09 | flaviu | Google is pretty great lol |
20:30:34 | dom96 | what did you search for? |
20:30:54 | flaviu | rxjava |
20:31:23 | flaviu | rx has poor searchablility, but I remembered Matthias mentioning java |
20:31:42 | dom96 | ahh |
20:31:56 | Matthias247 | yeah, the wiki is pretty good |
20:31:58 | dom96 | I searched for reactive extensions and to no surprise there were no results for RxJava |
20:32:08 | Matthias247 | especially the marble diagrams they have for all operators |
20:34:31 | Araq | an observably is a queue that you are only allowed to read from. I think. |
20:34:57 | dom96 | 'onNext'? Isn't that a callback? |
20:36:07 | dom96 | Matthias247: I think you should write RxNimrod :P |
20:37:32 | Matthias247 | The basic thing is similar to a multicast delegate or a C# event |
20:37:33 | adoniscik | does nimrod have a limit on the number of -l parameters it accepts? |
20:37:56 | Matthias247 | But you can use composition operators to transform that into other events (like in LINQ) |
20:38:23 | Matthias247 | and you can switch threads in between by using observable.ObserveOn(scheduler). Which is extremely helpful |
20:39:00 | Matthias247 | and contrary to a a normal event it has an end (OnCompleted) or can report an error (OnComplete) |
20:39:44 | Matthias247 | thereby you can use them as a replacement for futures. The value comes through OnNext and then the end follows. Or an error is reported through OnError |
20:42:59 | Matthias247 | oh, and when you Subscribe() to an Observable you get an IDisposable which you can use to unsubscribe from the stream. Or event to cancel an async operation when it's implemented that way |
20:43:51 | Araq | meh I don't really like objects reinventing basic control flow |
20:44:20 | Araq | but perhaps "basic" control flow is all wrong |
20:44:31 | Matthias247 | but it's for async cross-thread control-flow |
20:44:54 | Araq | yeah but that doesn't change anything: |
20:45:15 | Araq | foo(x); bar(y) # ok sequential control flow |
20:46:00 | Araq | andThen(foo, x, bar, y) # bah |
20:47:34 | * | ARCADIVS joined #nimrod |
20:47:35 | Araq | it suggests you got the builtin control flow wrong |
20:48:10 | Araq | and indeed maybe C# is simply too sequential/ low level and you should program in a dataflow language instead |
20:49:03 | Araq | ofc nim has the same problem but then we always have the "systems programming" excuse ... ;-) |
20:49:40 | Araq | s/have/use |
20:49:49 | Matthias247 | ok, I agree that it's hard to follow with the hidden async operations and the whole map/flatmap/whatever stuff |
20:50:20 | Matthias247 | but I don't know a really good solution for all use cases :) |
20:51:28 | Araq | use a really dataflow language instead? you get data race freedom as a nice side effect if you pick the right language |
20:52:29 | Araq | but I don't know what dataflow languages are out there |
20:53:29 | Matthias247 | but is that suitable for e.g. building a UI, which also involves lot's of async? |
20:55:10 | Matthias247 | e.g. I would have a hard time imagening how Erlang or Go concurrency would map to a UI (which is quite async but everything is in a single thread and not multiples) |
20:57:07 | * | io2 joined #nimrod |
20:57:10 | Araq | you can tell Go to only use a single thread ... I think |
20:57:22 | dom96 | yep |
20:57:56 | Matthias247 | yes. Then you are safe to manipulatee everything from everywhere ;) |
20:59:10 | Matthias247 | But with C# I can easily have most UI stuff asynchronously in the UI Thread and still have others threads which do other (possibly blocking) stuff :) |
21:00:21 | Matthias247 | ok, you could probably use a single goroutine as your UI mainloop. Which uses a channel input as the message pump |
21:00:40 | Araq | if you do have a UI in C#, you're doing it wrong |
21:00:54 | Araq | you should write a web app instead :P |
21:01:10 | dom96 | asp.netmasterrace |
21:01:10 | Matthias247 | yeah, then you are bound to a single thread anyway ;) |
21:01:37 | Araq | Matthias247: sssshhht, but it's webscale this way |
21:02:10 | Matthias247 | oh, btw: Dart also has futures and a stripped down version of Rx (called streams) for async stuff |
21:02:37 | Matthias247 | but as it is single threaded there's no need for streams working across threads |
21:02:44 | Araq | it's like Dart's main designer knows about C# |
21:03:15 | Skrylar | Single threaded languages are good jokes :) |
21:04:05 | shodan45 | hm? what about web workers? |
21:05:27 | Matthias247 | web workers (and dart isolates) are really limited in what they can do compared to real multithreaded languages |
21:06:28 | Matthias247 | Araq: that's not the worst thing :) |
21:06:34 | adoniscik | isn't nimrod supposed to see static libraries before dynamic ones? |
21:07:31 | Araq | adoniscik: no, you have to use --dynlibOverride or some other means to link to a static library |
21:18:45 | * | Jehan_ joined #nimrod |
21:23:15 | Araq | hi Jehan_ your patch causes gcleak, gcleak2 and gcleak5 to fail |
21:23:27 | Jehan_ | Araq: Bleh. |
21:23:41 | Jehan_ | Let me have a look. |
21:23:43 | Araq | and also DLL building |
21:24:02 | Araq | well it's quite possible that the limits are simply too narrow |
21:24:22 | Araq | but apart from that it's all good |
21:24:31 | Skrylar | DLLs are hell :/ |
21:24:54 | Skrylar | Conceptually the idea of using shared libs is great, in practice its nearly worthless. |
21:25:48 | Skrylar | I'm thinking here of how turbopascal et all are able to perform O(1) RTTI because they simply don't support DLLs and hard-code type info, whereas if I recall C++ has to do a lot of moebius garbage to support that. And in truth, everybody ends up shipping their own DLLs anyway. So all you gain is de-duplicated code within the shipped package. |
21:26:22 | Skrylar | On Windows you end up with "the <insert/> runtime" packages during install, on OSX you just bundle them with the .app |
21:26:56 | Skrylar | And oops, the system python is 0.0.1 different than you built, with some unforseen change that shouldn't have been in a maintenence build; now your programs broke. |
21:27:25 | Araq | yeah. and on Linux it simply doesn't work, but its users are used to it. :P |
21:27:42 | Skrylar | Linux software that isn't an OS package tends to do the mac thing: put the .so's with the binary |
21:27:55 | Skrylar | because you can't even trust that your glibc won't try to give you surprise anal |
21:28:18 | Araq | what's "Linux software that isn't an OS package"? |
21:28:46 | def- | most commercial software for example |
21:28:48 | Skrylar | Araq: proprietary |
21:28:59 | shodan45 | I know some linux admins that would get very angry if you took away their shared libs :) |
21:29:07 | Araq | lol obviously |
21:29:22 | Araq | I mean: there is very little commercial software for linux |
21:29:24 | Skrylar | shodan45: shared libs are a wonderful source of bugs ._. |
21:30:17 | Skrylar | but eh, some people like psychosis, so more power to them |
21:30:28 | shodan45 | Skrylar: hm? you mean the shared libs mechanism? or the libs themselves? |
21:30:45 | Skrylar | I'm more critical of a language having no true threading support, or having a dumb GC, because threading is important and GCs without manual control are a recipe for pain |
21:31:07 | Skrylar | I'm willing to give up shared objects from a language if it comes with good enough benefits (e.g. significantly faster RTTI systems) |
21:31:16 | Skrylar | shodan45: both. |
21:31:32 | Skrylar | shodan45: Take Python for instance; they LOVE to break the language even in 0.0.1 updates |
21:31:51 | shodan45 | Skrylar: errr you must be joking and/or thinking of PHP |
21:32:03 | Skrylar | no, i've had a lot of nightmare experiences with pythons |
21:32:16 | Araq | by its very nature every change in python, is a breaking change, strictly speaking |
21:32:21 | Skrylar | "wait i need this python for that program, this python for this program, then play spin-the-python to see which one i need loaded this minute" |
21:32:41 | shodan45 | Skrylar: ok... that's not my experience at all |
21:34:04 | Jehan_ | Araq: Hmm, I can't reproduce the leaks. |
21:34:36 | Skrylar | shodan45: there's also the multi-compiler problem of the shared object design |
21:34:47 | shodan45 | hehe, I've always found it interesting in online discussions when people have completely opposite experiences from myself |
21:34:57 | Skrylar | IIRC with C++, the recommendation is to actually use a C function to instantiate C++ objects portably |
21:35:11 | Skrylar | because they can't agree on what "x = new Foo::Bar()" actually means in assembly |
21:35:18 | Jehan_ | Oops, with --gc:markandsweep I do. |
21:35:38 | Skrylar | shodan45: yeah, 'cause there's a lot of stuff that works for me out of the box that takes other people months to figure out xD |
21:35:41 | Jehan_ | But only for 4 and 5. |
21:35:54 | Araq | Jehan_: windows-x86, inux-x86, linux-ppc64 |
21:36:04 | Araq | most fail for linux-ppc64 |
21:36:37 | Araq | --gc:markAndSweep is not what I mean, they fail since quite some time, I think |
21:37:25 | Araq | https://gist.github.com/anonymous/c737fcbd22db866bbf09 |
21:37:33 | Araq | https://gist.github.com/anonymous/c7273972e68a126a6427 |
21:37:42 | Araq | https://gist.github.com/anonymous/2aa829193d874a70a711 |
21:39:04 | shodan45 | Skrylar: in one instance of "opposite experiences", I eventually figured out that a friend of mine is an idiot, after many cases of "gahh! I HATE $foo!!" |
21:39:09 | shodan45 | :) |
21:40:29 | shodan45 | Skrylar: but seriously - PHP absolutely comes in 1st place WRT breaking crap between releases |
21:40:57 | Araq | PHP is in a class of its own for everything |
21:41:32 | shodan45 | (disclaimer: I have MANY years of PHP experience, and I absolutely hate it.) |
21:42:09 | Jehan_ | Araq: I have no doubt that they fail for you, I'm just puzzled why. |
21:43:23 | shodan45 | have you guys seen this? https://air.mozilla.org/language-composition/ |
21:44:14 | shodan45 | I thought it was pretty cool, aside from the custom editor thing |
21:45:57 | EXetoC | doesn't work |
21:46:23 | EXetoC | right... |
21:46:53 | EXetoC | can't have the same url as referer |
21:48:32 | shodan45 | EXetoC: you mean the mozilla link? |
21:50:10 | flaviu | Of all the languages, they chose python for performance lol |
21:52:00 | shodan45 | flaviu: hm? you mean pypy? pypy is written in "rpython", not quite the same thing |
21:52:21 | flaviu | "HP (Hippy) + Python (PyPy) RPython meta-tracing VM. Even with mixed source files, our performance is better than the stock PHP interpreter" |
21:52:48 | flaviu | I'm reading that as "If we write some of the program in python rather than PHP, we get better performance" |
21:53:04 | shodan45 | flaviu: ahh no, that's not what they meant :) |
21:53:05 | flaviu | I don't know how good pypy is though |
21:53:18 | flaviu | Oh, I see |
21:53:41 | shodan45 | flaviu: it's quite good, afaik, especially for a dynamic language |
21:54:43 | flaviu | I suppose so, although I don't understand the appeal of dynamic typing. Though I |
21:54:58 | shodan45 | nimrod & pypy are where I go when I feel my brain cells dying from having to code PHP for a living :) |
21:55:00 | flaviu | 'd rathar not get into that |
21:56:40 | * | enquora quit (Quit: enquora) |
21:56:47 | Jehan_ | Araq: Okay, I can't reproduce it on Linux/x86_64, either. This is with gcc 4.9.0 |
21:58:40 | shodan45 | flaviu: sure, understood... I've done both & appreciate both |
21:59:33 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
21:59:44 | * | Demos quit (Ping timeout: 260 seconds) |
22:02:52 | Araq | Jehan_: ok, does DLL building work for you? |
22:04:02 | Jehan_ | In a second, I do get a crash with markandsweep on gcleak4 if I modify it a bit, and trying to figure out why that happens. |
22:05:29 | Araq | when defined(setStackBottom): # creates a warning |
22:05:33 | Araq | and rightly so |
22:05:40 | Araq | it needs to be 'declared' now |
22:08:12 | Jehan_ | Well, when I wrote that, it was still defined. :) |
22:08:12 | Araq | and indeed for me bootstrapping fails |
22:08:26 | Araq | on win32 here in debug mode |
22:09:07 | Jehan_ | I was adapting the existing routine. |
22:09:46 | Jehan_ | Sigh, this Linux machine is poorly setup. |
22:10:27 | Araq | ugh |
22:10:34 | Araq | I "fixed" it and still crashes |
22:13:06 | Jehan_ | Araq: By DLL building, you mean nimrtl? |
22:13:17 | Jehan_ | That works for me on both Mac and Linux. |
22:13:24 | Araq | there is a test dll/client.nim |
22:14:01 | dom96 | [linux-x86 1d19c9525e3b devel] Test diff (5 now fail, 0 now succeed): https://gist.github.com/c7273972e68a126a6427 |
22:14:06 | dom96 | [windows-x86 1d19c9525e3b devel] Test diff (7 now fail, 0 now succeed): https://gist.github.com/2aa829193d874a70a711 |
22:14:14 | dom96 | [linux-ppc64 1d19c9525e3b devel] Test diff (8 now fail, 0 now succeed): https://gist.github.com/c737fcbd22db866bbf09 |
22:14:18 | dom96 | These might be helpful |
22:27:07 | Jehan_ | Okay, I'm getting an illegal storage access with the DLL. |
22:27:21 | Jehan_ | In canBeCycleRoot. |
22:29:50 | Araq | well |
22:30:08 | Araq | it used to be called in PreMain() |
22:30:23 | Araq | now it's called in nimMain |
22:37:34 | Araq | well ... I made some other change to the codegen ... maybe it's not your patch that breaks my bootstrapping |
22:38:31 | Araq | ping Varriount_ |
22:40:50 | Jehan_ | Okay, in the DLL case, I have gch.stackBottom == 0. |
22:41:43 | Jehan_ | Ugh, somehow different code gets generated for DLLs. |
22:43:04 | Jehan_ | Eh, nevermind. Looking at the wrong file. |
22:46:15 | Jehan_ | Hmm. How did this ever work? |
22:49:18 | Araq | well check how it is before your patch ;-) |
22:49:27 | Araq | maybe it never worked on your platform |
22:49:56 | Araq | testing DLLs is not really supported by our tester since it requires messing with LD_WTF settings |
22:50:04 | Jehan_ | Yeah. |
22:50:09 | Jehan_ | Here's the problem: |
22:50:58 | Jehan_ | setStackBottom is not defined when useNimRtl is defined. |
22:51:32 | Jehan_ | This turns initStackBottom/initStackBottomWith into a no-op. |
22:52:57 | Jehan_ | So stackBottom doesn't get set. |
22:53:51 | Jehan_ | But: the same problem would have occurred pre-patch, since I copied the initStackBottom implementation and simply gave it a parameter rather than having it figure it out itself. |
23:05:10 | Araq | yeah and this has been a patch |
23:05:19 | Araq | code doesn't start like that |
23:06:16 | * | Varriount_ is now known as Varriount |
23:06:19 | Varriount | Araq: Pong |
23:07:33 | * | ome quit (Quit: Connection closed for inactivity) |
23:07:39 | Araq | Varriount: can you please "koch boot" for win32 for the most recent devel version |
23:08:05 | Varriount | Ok. |
23:08:21 | Varriount | I'll have to take the builders down. |
23:13:50 | Varriount | Araq: Ok, I've recompiled. |
23:14:16 | Araq | with the 32bit gcc? |
23:14:23 | Varriount | Yes. |
23:14:42 | Araq | with "koch boot"? no release? |
23:15:12 | Varriount | Oh, you never specified the flags. I used -d:release --stackTrace:on --lineTrace:on |
23:15:48 | * | Matthias247 quit (Read error: Connection reset by peer) |
23:17:28 | Jehan_ | Okay, pre-patch, the setStackBottom code does get generated. Now I'm completely baffled. |
23:18:07 | * | nande joined #nimrod |
23:19:09 | Varriount | Araq: Ok, done. |
23:24:52 | Varriount | Araq: So, why did you need me to do that? |
23:26:20 | Araq | because it doesn't work for me |
23:26:37 | Araq | but I guess my other patch that cannot possible be responsible is responsible ... |
23:27:43 | Varriount | Ah. |
23:28:47 | Varriount | So Araq, I was unable to find the memory leak. I'm reduced to making my code iterative instead of recursive. :< |
23:29:11 | * | darkf joined #nimrod |
23:39:27 | * | Trustable quit (Quit: Leaving) |
23:42:40 | Jehan_ | Okay, I think I'm finally getting a handle on why the DLL case breaks (or at least have a reasonable idea why). Umm, let's just say, dark compiler magic. |