00:07:56 | * | Trixar_za is now known as Trix[a]r_za |
00:19:00 | * | DAddYE joined #nimrod |
00:34:34 | NewGuy | Still no luck here with Aporia. Don't know what I'm overlooking here - it just refuses to load libglib. |
00:56:42 | NewGuy | I managed to get the .dll to load - the problem was 32 v 64 stuff. |
00:56:59 | NewGuy | However now loading Aporia gives me "could not import: gtk_combo_box_text_new" |
01:02:09 | NewGuy | And I tried switching to GTK 2.16, but the error just changes to "could not import: gtk_info_bar_new_with_buttons" |
01:13:23 | * | rubino123 quit (Remote host closed the connection) |
01:14:19 | * | q66 quit (Quit: Leaving) |
01:55:55 | * | Amrykid quit (Excess Flood) |
01:56:14 | * | Amrykid joined #nimrod |
02:00:11 | Araq | NewGuy: could be a new issue, you can try to use my binaries: |
02:00:13 | Araq | http://nimrod-code.org/download/aporia.zip |
02:00:22 | Araq | http://nimrod-code.org/download/gtk.zip |
02:05:13 | NewGuy | Araq: Nope, I think I've figured it out. My Mingw is using SEH exceptions, which don't allow 32 bit cross-compilation, apparently. So I can't compile Aporia 32 bit (without changing my entire Mingw setup), and the 64 bit of GTK+ is apparently somewhat broken. |
02:05:39 | NewGuy | But thanks so much for those binaries. |
02:09:03 | * | DAddYE quit (Remote host closed the connection) |
02:09:14 | * | DAddYE joined #nimrod |
02:09:18 | * | DAddYE quit (Remote host closed the connection) |
02:09:46 | * | DAddYE joined #nimrod |
02:14:10 | * | DAddYE quit (Ping timeout: 245 seconds) |
02:18:57 | Araq | alright. good night |
02:45:17 | * | NewGuy quit (Quit: Page closed) |
02:47:48 | * | EvilAww quit (Quit: ZNC - http://znc.in) |
02:48:12 | * | EvilAww joined #nimrod |
03:18:54 | * | Associat0r quit (Quit: Associat0r) |
04:44:56 | * | erlnoob joined #nimrod |
05:01:08 | * | OrionPK quit (Quit: Leaving) |
05:09:14 | * | NewGuy joined #nimrod |
05:09:42 | NewGuy | Does anyone else have problems making a custom nimcache path? |
05:10:18 | NewGuy | I've been trying to get a nimcache down one directory in a folder called "nimcache" (from the source directory) |
05:11:00 | NewGuy | Unfortunately the path that would be used (..\nimcache) puts it down *two* directories instead. |
05:11:22 | * | NewGuy quit (Client Quit) |
05:12:06 | * | NewGuy joined #nimrod |
05:12:26 | NewGuy | And what does end up working is ".\nimcache" (single period instead) |
05:13:03 | NewGuy | And I assume that's either an undocumented feature or a bug? |
05:21:24 | * | NewGuy quit (Quit: Page closed) |
05:34:34 | * | erlnoob_ joined #nimrod |
05:36:14 | * | erlnoob quit (Ping timeout: 240 seconds) |
05:36:15 | * | erlnoob_ is now known as erlnoob |
06:58:09 | reactormonk | any idea about https://github.com/Araq/Nimrod/issues/347 ? |
07:13:14 | reactormonk | any way it's possible to add that stuff at loop generation or so? |
07:24:46 | Araq | reactormonk: it's a minor bug. why does it concern you that much? |
07:28:41 | * | erlnoob_ joined #nimrod |
07:31:13 | * | erlnoob quit (Ping timeout: 276 seconds) |
07:31:13 | * | erlnoob_ is now known as erlnoob |
07:33:18 | reactormonk | Araq, not sure, I think I don't like a WA. |
07:42:17 | reactormonk | Araq, how do I wrap a function around in nimrod? |
07:42:31 | reactormonk | proc(item: tuple(TTilePos, string)) = # my try, doesn't like that |
07:48:15 | reactormonk | Araq, a simple solution would be to tell the for to generate a closure with {.closure.} |
07:48:21 | * | DAddYE joined #nimrod |
07:49:00 | Araq | reactormonk: learn the syntax then. seriously. |
07:58:47 | * | reactormonk quit (Ping timeout: 260 seconds) |
08:00:08 | * | BitPuffin joined #nimrod |
09:31:11 | * | erlnoob_ joined #nimrod |
09:32:54 | * | erlnoob quit (Ping timeout: 264 seconds) |
09:32:55 | * | erlnoob_ is now known as erlnoob |
09:49:22 | * | DAddYE quit (Remote host closed the connection) |
09:49:48 | * | DAddYE joined #nimrod |
09:53:33 | * | q66 joined #nimrod |
09:53:50 | * | DAddYE quit (Ping timeout: 240 seconds) |
10:11:49 | BitPuffin | You guys are quiet today! |
10:11:59 | Araq | it's sunday |
10:12:15 | BitPuffin | you mean everyone are hung over? |
10:14:52 | Araq | or in the swimming pool |
10:15:39 | BitPuffin | hahaha |
10:16:49 | BitPuffin | just thought of a nice way to get a diff of the functions in opengl 4.3 and 4.4 |
10:18:54 | BitPuffin | http://www.lwjgl.org/javadoc/org/lwjgl/opengl/GL43.html |
10:20:25 | * | DAddYE joined #nimrod |
10:23:04 | BitPuffin | aand well they havent had a release with 4.4 yet |
10:42:39 | BitPuffin | Araq: is it really wise to set TGLdouble to be float instead of float64? |
10:43:05 | Araq | I don't know what if we make float 32bits? |
10:43:12 | Araq | on some archs at least |
10:48:05 | BitPuffin | Araq: well exactly, then it wouldn't be a double precision floating point number |
10:48:15 | BitPuffin | which is what opengl would expect |
10:48:22 | BitPuffin | ah wait |
10:48:25 | BitPuffin | I ment the other way around |
10:48:31 | BitPuffin | it should be float64 instead of float |
10:48:37 | BitPuffin | sorry |
10:48:54 | BitPuffin | http://www.nimrod-code.org/gl.html#130 |
10:49:19 | Araq | yeah fix it |
10:52:21 | BitPuffin | And I should also add GL_ARB_ES2_compability extension to the glext module |
10:53:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
10:53:39 | BitPuffin | strange |
10:53:54 | BitPuffin | http://www.nimrod-code.org/opengl.html#116 here it's correct |
10:56:24 | * | Associat0r joined #nimrod |
10:56:24 | * | Associat0r quit (Changing host) |
10:56:24 | * | Associat0r joined #nimrod |
10:57:40 | BitPuffin | Araq: pull request opened |
10:57:48 | BitPuffin | for the double stuff |
11:00:50 | Araq | ok |
11:01:02 | Araq | I assume you tested your code with the change and nothing breaks |
11:01:49 | BitPuffin | well no not really |
11:01:53 | BitPuffin | why wouldn't that work though? |
11:02:13 | BitPuffin | unless there is a reason someone made it float |
11:02:14 | BitPuffin | hrm |
11:02:17 | dom96 | hello |
11:02:47 | BitPuffin | Okay so how should I test it? just compile nimrod? |
11:02:52 | BitPuffin | dom96: howdy! |
11:03:09 | Araq | BitPuffin: compile your stuff with this change |
11:03:19 | Araq | I hope you use it :P |
11:03:46 | Araq | hi dom96 |
11:04:02 | BitPuffin | well not yet, I'm busy with linagl and cologne, and life :D |
11:04:23 | Araq | then close the pull request already |
11:05:26 | BitPuffin | awh |
11:05:26 | BitPuffin | okay |
11:05:38 | Araq | sorry, I can change float to float64 without testing myself |
11:05:42 | dom96 | gradha's blog looks nice |
11:06:18 | Araq | you can help me by testing things |
11:06:56 | BitPuffin | of course you can, I was just thinking it's so trivial so it's better for you to focus on other stuff |
11:06:58 | BitPuffin | but yeah |
11:07:00 | BitPuffin | makes sense |
11:07:05 | BitPuffin | dom96: link? |
11:07:21 | dom96 | http://gradha.github.io/users-prefer-static-linking.html |
11:07:59 | BitPuffin | I suppose same goes for the extension |
11:10:19 | dom96 | Araq: What do you think about Jehan's post? |
11:11:24 | Araq | he has good points |
11:12:34 | dom96 | Also in regards to http://forum.nimrod-code.org/t/195 I think I have to take the gtk2 wrappers out of the nimrod repo and into a seperate one finally. |
11:13:15 | Araq | yeah, has my blessing |
11:33:03 | * | Trix[a]r_za is now known as Trixar_za |
11:52:00 | * | DAddYE joined #nimrod |
11:52:18 | * | Trixar_za is now known as Trix[a]r_za |
11:58:39 | BitPuffin | Araq: Hmm, an array that stores matrices row major is that an array of columns or an array of rows |
11:58:39 | BitPuffin | erf |
11:58:45 | BitPuffin | rows I think? |
12:04:39 | * | Trix[a]r_za is now known as Trixar_za |
12:22:05 | dom96 | Araq: Compiling niminst causes the compiler to go into an infinite loop... |
12:23:29 | BitPuffin | actually maybe it's always the same anyway |
12:25:02 | * | DAddYE quit (Ping timeout: 240 seconds) |
12:37:37 | * | Trixar_za is now known as Trix[a]r_za |
12:53:38 | Araq | dom96: lol? is that a new regression? |
12:53:52 | dom96 | I think so |
12:54:14 | dom96 | possibly x86_64 specific |
12:54:27 | dom96 | IIRC nimbuild compiles niminst |
12:54:33 | dom96 | but only on x86 |
12:58:19 | Araq | dom96: can't reproduce it here on 64bit |
12:58:27 | Araq | it takes a while |
12:58:33 | Araq | but it's no endless loop |
12:58:58 | dom96 | ok let me try to leave it for longer |
12:59:07 | dom96 | Although it seems to be hanging on osproc |
12:59:13 | dom96 | oh it does work hah |
12:59:29 | dom96 | why does it hang for so long though? |
12:59:52 | Araq | for me it hangs here: tools/niminst/niminst.nim(115, 0) Hint: 589 [Processing] |
13:00:57 | dom96 | for me it's: Hint: end of listing [CodeEnd] |
13:01:06 | Araq | hmm yeah |
13:02:54 | dom96 | I don't think it ever was this slow. |
13:03:08 | Araq | indeed |
13:05:43 | BitPuffin | How does one even get stuck on matrix transposition code >_> |
13:08:15 | BitPuffin | https://gist.github.com/BitPuffin/df9f8262a4c491035d44 |
13:08:21 | BitPuffin | is that correct? or can it be done faster |
13:09:08 | Araq | looks good to me |
13:10:16 | Araq | hu? it's always slow AFTER the inno.tmpl file no matter where I put it? |
13:10:31 | BitPuffin | also if a documentation comment is right above a proc is it a part of the proc? or how does one properly document a proc |
13:10:42 | BitPuffin | but it on the first line of the proc? |
13:11:15 | Araq | doc comment above the proc doesn't work. simple. |
13:11:46 | BitPuffin | aight |
13:13:07 | dom96 | Looks like Nimbuild needs to start measuring the time it takes to do each task. |
13:14:44 | Araq | dom96: looks like the regression is caused by the large number of & expressions that inno.tmpl produces |
13:15:00 | dom96 | interesting. |
13:18:54 | * | Associat0r quit (Quit: Associat0r) |
14:01:05 | * | reactormonk joined #nimrod |
14:06:57 | * | EXetoC joined #nimrod |
14:19:50 | BitPuffin | does import use relative paths? |
14:20:06 | BitPuffin | so that if two modules are in the same dir they can simply import each other |
14:20:25 | BitPuffin | and don't have to worry about the code that's later improting them imports them like lib/module |
14:22:34 | * | DAddYE joined #nimrod |
14:24:19 | dom96 | yeah, I think so. |
14:30:35 | BitPuffin | cool |
14:30:37 | BitPuffin | ummmm |
14:30:42 | dom96 | might wanna test it to be sure lol |
14:30:56 | BitPuffin | is it valid to do low(result)..high(result) ? |
14:31:26 | BitPuffin | is a proc? |
14:31:30 | dom96 | depends what result is, if you're asking whether it's ok to have: 5 .. 9 then the answer is yes. |
14:31:39 | BitPuffin | guess there is only one way to find out |
14:32:02 | * | erlnoob quit (Quit: erlnoob) |
14:32:31 | * | Amrykid quit (Changing host) |
14:32:31 | * | Amrykid joined #nimrod |
14:41:15 | * | OrionPK joined #nimrod |
14:46:24 | * | Mat2 joined #nimrod |
14:46:26 | Mat2 | hello |
14:46:46 | BitPuffin | hey Mat2 |
14:47:06 | Mat2 | hi BitPuffin |
14:48:35 | BitPuffin | sup? |
14:48:49 | Mat2 | what means sup ? |
14:50:24 | BitPuffin | it means "what is up?" |
14:50:34 | BitPuffin | which weans "what are you doing?" |
14:51:09 | * | DAddYE quit (Ping timeout: 264 seconds) |
14:53:22 | Mat2 | ah ok, preparing an ARM backend for my AOT compiler (which in fact is used for the microcode interface of my VM design) |
14:54:14 | Mat2 | (the instruction-set can be extended at runtime) |
15:00:19 | BitPuffin | sweet! |
15:00:27 | BitPuffin | and I'm struggling with the most ridiculous thing |
15:00:55 | Mat2 | sorry, what thing ? |
15:01:37 | BitPuffin | how to pick out the row and the column from a 2d array >.< |
15:02:54 | * | OnionPK joined #nimrod |
15:03:04 | BitPuffin | it's stored column major |
15:03:21 | BitPuffin | array[C, array[R, T]] |
15:03:46 | BitPuffin | so if I want the 0th row for example |
15:03:55 | BitPuffin | is that a[0] |
15:04:28 | BitPuffin | or is a[0] the 0th column |
15:06:14 | Mat2 | you now, an 2-dimensional array is just an 1-dimensional array with row*dimension+col calculation ? |
15:07:02 | BitPuffin | yeah I know that |
15:07:31 | * | OrionPK quit (Ping timeout: 276 seconds) |
15:07:49 | Mat2 | why don't you just define an 1-dimensional array and use a function for element calculation ? |
15:07:52 | BitPuffin | But I'm working on matrices for my math library, and I want to be able to return a vector of a row or a column |
15:08:18 | Mat2 | same for vector adressing |
15:08:24 | BitPuffin | yeah |
15:08:29 | BitPuffin | but why would I do that when there is syntax for it? |
15:08:42 | BitPuffin | in fact when using [] aren't we using a proc? |
15:09:58 | Mat2 | because that gives you possibilities for fast block-copies without the need of recalculation for example and that should be important if you want to implement vector processing routines |
15:11:16 | Mat2 | (specially if you try to program shaders) |
15:11:52 | BitPuffin | why would I need recalculation? |
15:13:47 | Mat2 | because otherwise you must transform from CR coordinates to offset-range |
15:14:55 | BitPuffin | isn't that optimized away though? |
15:15:29 | Mat2 | that depends on the compiler (do you trust GCC ? - I wouldn't) |
15:15:59 | Mat2 | its also easier (in my opinion) |
15:16:51 | BitPuffin | I thought GCC was fairly okay |
15:16:54 | BitPuffin | well |
15:17:00 | BitPuffin | It might be easier |
15:17:06 | BitPuffin | But I've never done that before |
15:17:29 | BitPuffin | or wait |
15:18:28 | BitPuffin | that works with a square matrix |
15:19:45 | BitPuffin | this is a*b dimensional matrices |
15:19:54 | BitPuffin | maybe I should have a separate type for square matrices |
15:20:27 | Mat2 | yeah |
15:21:43 | BitPuffin | Mat2: but your equation was for row major wasn't it? |
15:22:24 | Mat2 | you can apply this method for all kinds of matrices |
15:22:48 | * | Onion_PK joined #nimrod |
15:23:44 | Mat2 | (in fact, at machine-code level all these calculations are handled these way) |
15:23:47 | BitPuffin | Mat2: I know but the row*dimension+col is row major isn't it? for column major it should be column*dimension+row shouldn't it? |
15:24:26 | Mat2 | y*dimesion+x |
15:24:35 | Mat2 | ^dimension |
15:25:10 | BitPuffin | ^dimension? |
15:26:06 | Mat2 | dimension is the line-offset (the number of columns) of a 2d array |
15:26:38 | * | OnionPK quit (Ping timeout: 240 seconds) |
15:26:50 | Mat2 | so for an 2d array of 80x25 elements, the calculation is: 80 * y + x |
15:26:51 | dom96 | !repos |
15:26:51 | NimBot | Announced repos: Araq/Nimrod, nimrod-code/nimbuild, nimrod-code/aporia, nimrod-code/nimforum, nimrod-code/babel, nimrod-code/packages, dom96/jester, nimrod-code/csources |
15:27:09 | Mat2 | hi dom96 |
15:27:16 | dom96 | hi Mat2 |
15:28:46 | Mat2 | BitPuffin: For fast access, its common to build a table of offsets for each x-y value |
15:29:15 | BitPuffin | Mat2: yes but if we think in terms of matrices, if I want to store it column major. Let's say the matrix is 4x4. In column major the 12 13 14th elements contain translation |
15:29:34 | BitPuffin | Mat2: then the equation is 4 * cols + row ? |
15:29:45 | BitPuffin | col* |
15:29:47 | dom96 | Anyone on Windows? |
15:29:54 | BitPuffin | dom96: hell no |
15:30:04 | dom96 | I need someone to test something for me |
15:30:13 | Mat2 | sorry, no |
15:30:37 | BitPuffin | Mat2: is it correct? |
15:30:46 | dom96 | pity |
15:31:06 | BitPuffin | Also is there a way to tell nimrod that I really want something to be stored in the CPU cache instead of in ram |
15:31:45 | BitPuffin | so that I can store dimension * col calculation there when iterating through |
15:31:59 | dom96 | http://build.nimrod-code.org/docs/manual.html#register-pragma |
15:32:02 | BitPuffin | I can imagine it being slower to access ram than to simply do the calculation again |
15:35:02 | Mat2 | BitPuffin: you can't hint directly to preload cache-lines because that's 1.) cpu dependent and most processors do not have instructions for that 2.) can result in secondary cache-misses which tend to consume lots of clock-cycles, dependent on cache organisation |
15:35:45 | BitPuffin | Mat2: so it's better to just store it as usual? Will that be faster though? (maybe it will keep it in cache anyway) |
15:36:08 | Mat2 | exceptions are IA32 conform cpu'S because there exist some instructions for this purpose (PREFETCH0, PREFETCH1, INVD etc.) |
15:37:10 | BitPuffin | Mat2: is there anything you don't know? |
15:37:24 | Mat2 | on modern out-of-order designs you can trust the internal cache handling, it is higly effective |
15:37:31 | BitPuffin | neat! |
15:37:35 | BitPuffin | anyway |
15:37:36 | Mat2 | BitPuffin: a lot ! |
15:37:46 | BitPuffin | was I correct about the whole column major thing |
15:38:00 | BitPuffin | 4 * col + row for row major? |
15:39:45 | Mat2 | for a 4x4 matrix, that should work |
15:40:49 | BitPuffin | Mat2: sweet, I'll add that later then, just gotta finish n1*n2 dimensional matrices |
15:40:52 | BitPuffin | wanna support both |
15:41:04 | BitPuffin | and since nimrod supports dead code elim it shouldn't matter |
15:43:02 | Mat2 | you can simply take calculary paper and calculate the offset per hand to see if it correct (or use a spreadsheet) ! |
15:43:29 | BitPuffin | Yeah that's true :) |
15:43:40 | BitPuffin | https://gist.github.com/BitPuffin/6150745 is this correct for n1*n2 dimensional matrices? |
15:46:07 | BitPuffin | R*C dimensional is a better thing to say probably |
15:47:03 | * | DAddYE joined #nimrod |
15:47:04 | Mat2 | a node: I'm just new to Nimrod so can't say if these heavily C++ styled example is correct but the calculations seems so |
15:47:49 | BitPuffin | you used a C++ snippet as reference? |
15:47:57 | BitPuffin | or did I do C++ style? |
15:48:10 | Mat2 | no, but you seem to prefer common C++ style programming |
15:48:21 | BitPuffin | I do? |
15:48:25 | * | OnionPK joined #nimrod |
15:48:39 | BitPuffin | you mean because I made column a template? |
15:48:43 | Mat2 | yes |
15:48:47 | BitPuffin | ah |
15:48:54 | BitPuffin | well it's not the same as C++ |
15:49:00 | BitPuffin | it's just substituted at compile time |
15:49:26 | Mat2 | I came here with a Foth background- quite different philosophy |
15:49:30 | Mat2 | ^Forth |
15:50:05 | BitPuffin | aha! |
15:50:24 | BitPuffin | well I thought it was better to make it a template |
15:50:34 | BitPuffin | I could also make it a proc and mark it with the compileTime pragma |
15:50:52 | BitPuffin | don't know what's the preferred convention |
15:51:35 | Mat2 | do what makes sense for you - but think about the runtime consequences |
15:51:45 | Mat2 | (the possible ones) |
15:52:15 | dom96 | I think compile-time procs are meant to be used in macro primarily. |
15:52:18 | dom96 | *macros |
15:52:33 | Mat2 | we should ask Araq about that |
15:52:49 | BitPuffin | probably |
15:52:56 | BitPuffin | when he gets back |
15:53:01 | * | Onion_PK quit (Ping timeout: 276 seconds) |
15:53:19 | BitPuffin | Mat2: what would be the runtime consequences? |
15:53:39 | OnionPK | good grief.. this guy's arguing with me that path's should be /'s instead of \ on windows. |
15:54:16 | dom96 | / also works on windows :P |
15:54:35 | OnionPK | thats just because windows is smart enough to know what you're trying to do |
15:55:00 | OnionPK | but it will always give the user \'s for a path |
15:55:20 | OnionPK | this guy would rather have his program mysteriously crash because the user put in \'s |
15:55:23 | OnionPK | rather than just handle it :p |
15:55:43 | Mat2 | BitPuffin: Matrix calculations memory and adress-calculation restricted, so try to reduce both to the minimum |
15:56:32 | Mat2 | OnionPK: This is a joke, right ? |
15:57:05 | OnionPK | Mat2 I wish |
15:57:48 | OnionPK | some people dont understand that user experience is kind of more important than petty pedantry about unix's superiority |
15:58:17 | BitPuffin | Mat2: hmm, well in this case I can't really think of any problems that could occur, and it's never too late to turn it in to a proc later on |
15:59:30 | Mat2 | OnionPK: well, we are humans, tending to be self-restricted in emotinal irrationalism |
15:59:45 | OnionPK | Mat2: speak for yourself :P |
15:59:59 | Mat2 | like anyone *lol* |
16:00:22 | Mat2 | ^emotional |
16:00:48 | OnionPK | btw |
16:00:48 | OnionPK | https://github.com/dz0ny/leapcast |
16:00:51 | OnionPK | thats the project |
16:00:59 | OnionPK | it's actually pretty slick, I had thought about doing this myself |
16:01:07 | BitPuffin | https://gist.github.com/BitPuffin/6150802 I hope this is correct matrix*matrix multiplication, it's so easy to mess up lol :P But man that was expressive |
16:01:11 | Mat2 | BitPuffin: Test it out, think over and try to find a simple but efficience solution |
16:02:33 | BitPuffin | Mat2: Yeah I will, I'm just assuming that it's a bit unnecessary to call a procedure just to access a an array inside an array |
16:02:42 | BitPuffin | but we'll see :) |
16:04:14 | Mat2 | I suggest you minimize offset calculation though building a table if the matricies are fixed sized |
16:05:12 | Mat2 | then, accessing elemnts is just an indirect load operation |
16:06:04 | Mat2 | ^elements |
16:06:14 | BitPuffin | Mat2: Yeah I will, I'll create a separate type called TSquareMatrix |
16:07:43 | Mat2 | ehm ok *shroug* |
16:09:09 | BitPuffin | Mat2: or you mean even when they aren't square? |
16:10:31 | BitPuffin | https://gist.github.com/BitPuffin/6150834 Bug possibly? |
16:11:24 | Mat2 | I mean even of course |
16:12:06 | Mat2 | but as written before I'm new to Nimrod so I can not decide if the syntax is correct |
16:12:16 | BitPuffin | Mat2: hmm, yeah that could make R*C dimensional matrices a bit faster too |
16:12:40 | Mat2 | http://sgate.emt.bme.hu/patai/publications/z80guide/part5.html |
16:12:42 | BitPuffin | Mat2: but I'm not sure how you mean I should build the table |
16:12:56 | BitPuffin | Mat2: yeah it was a question to everybody more or less :) |
16:13:21 | BitPuffin | dom96: you know all of nimrod and Araq is not here, so could you help me determine if this is a bug? |
16:14:00 | dom96 | hrm |
16:14:26 | dom96 | Wouldn't that be: range[range[]]? |
16:14:39 | dom96 | Since you've defined C as being 'range' |
16:15:18 | dom96 | Perhaps 'C' on its own is what you want? |
16:16:09 | BitPuffin | dom96: well I just wanted to make it so that you can only pass in indices within the range |
16:17:49 | BitPuffin | dom96: Hmm I think you were right |
16:18:06 | BitPuffin | because now it compiled :) |
16:18:15 | dom96 | cool :P |
16:19:16 | dom96 | If you want to pass '5 .. 8' etc. |
16:19:23 | dom96 | Then use the TSlice[T] type |
16:19:41 | dom96 | I wonder if you can specify a TSlice as a value for a range[] |
16:20:14 | * | DAddYE quit (Ping timeout: 240 seconds) |
16:20:32 | dom96 | I guess that requires the 'generic values' feature |
16:22:35 | dom96 | I think this should work: https://gist.github.com/dom96/f452f074b11d91775567 |
16:22:41 | dom96 | Araq: ^ |
16:25:52 | Mat2 | generally, for understanding Intel cpu's these link is a good start: http://www.righto.com/2013/01/inside-alu-of-8085-microprocessor.html |
16:26:48 | * | BitPuffin quit (Ping timeout: 245 seconds) |
16:27:20 | * | BitPuffin joined #nimrod |
16:27:40 | Mat2 | some remendants of the 8-bit line are important until today |
16:28:58 | BitPuffin | dom96: I think it works the way I did it, compilation didn't fail at least |
16:31:14 | Mat2 | you should test if calculation is done right |
16:31:31 | BitPuffin | yeah I will do that |
16:31:38 | BitPuffin | before releasing :) |
16:31:43 | BitPuffin | 0.2 |
16:32:04 | BitPuffin | I won't make squarematrix until values passed to generics is added |
16:32:21 | dom96 | BitPuffin: Are you going to make a cool 3d game with your lib? :P |
16:32:28 | BitPuffin | dom96: for sure :) |
16:32:33 | dom96 | yay :D |
16:32:54 | BitPuffin | dom96: and blog about the process and mention nimrod like a million times :P |
16:33:02 | dom96 | yeah! :D |
16:33:38 | dom96 | I am tempted to create a little Minecraft clone. Never done anything with OpenGL before though. |
16:34:28 | Mat2 | Apple spend some time (and money) in the past to hire so called evangelists for promoting :P |
16:34:56 | BitPuffin | Mat2: gonna read the thing you linked now, problem is that I don't know asm |
16:35:22 | BitPuffin | dom96: I almost got a freelancing job creating a minecraft clone which I would have pushed to make in nimrod haha |
16:35:34 | BitPuffin | but he was very weird about salary and didn't respond |
16:36:15 | dom96 | aww too bad, that would be cool. |
16:36:48 | dom96 | I just really want to try OpenGL and Minecraft clone seems like a nice start. |
16:36:50 | BitPuffin | for sure |
16:37:01 | BitPuffin | yeah could be |
16:37:14 | dom96 | No idea how much work it would be though heh |
16:38:03 | BitPuffin | dom96: there are lots of open source minecraft clones, you could use them as reference |
16:38:19 | Mat2 | BitPuffin: http://tutorials.eeems.ca/Z80ASM/ <- that's the start |
16:39:28 | dom96 | BitPuffin: Yeah, maybe if I get stuck, but I think I will learn more if I don't use one. |
16:40:18 | BitPuffin | Mat2: thanks! that should be useful! |
16:42:36 | BitPuffin | Mat2: I'll do that a bit later then, right now I need to move forward |
16:42:52 | BitPuffin | dom96: probably |
17:17:13 | * | DAddYE joined #nimrod |
17:23:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
17:59:43 | NimBot | nimrod-code/csources master 5502c78 Dominik Picheta [+2789 ±1 -1366]: Updated C sources to new format. |
18:00:14 | dom96 | haha, look at that + and - count :D |
18:01:47 | NimBot | nimrod-code/nimbuild master 0a16027 Dominik Picheta [+0 ±1 -0]: Builder: Discard all changes before git pulling. |
18:01:47 | NimBot | nimrod-code/nimbuild master 104486a Dominik Picheta [+0 ±1 -0]: Builder: Added -o flag to 'unzip' (overwrite files without prompting). |
18:01:47 | NimBot | nimrod-code/nimbuild master f97de80 Dominik Picheta [+0 ±1 -0]: Implemented new C source build system. |
18:06:57 | Araq | congrats, dom96 :-) |
18:07:31 | dom96 | So I think that the converted between Async sockets and normal sockets is a bad idea. |
18:07:34 | dom96 | *converter |
18:07:45 | Araq | I agree |
18:07:54 | Araq | converters are generally a bad idea |
18:09:13 | dom96 | Araq: Are you ok with the build scripts having an if statement? |
18:09:28 | dom96 | I already implemented it so you better like it :P |
18:09:44 | Araq | so effectively niminst is not good enough for nimbuild? |
18:09:51 | Araq | and needs a special mode? |
18:09:54 | dom96 | I made it so that it uses ./bin by default, but if ../koch.nim exists then it uses ../bin |
18:10:08 | Araq | that sounds hacky |
18:10:14 | dom96 | huh, what do you mean? |
18:10:20 | Araq | why not make yet another config option? |
18:10:53 | Araq | er ... do you mean the shell scripts contain an 'if' ? |
18:11:00 | dom96 | yes |
18:11:08 | Araq | fine with me |
18:11:11 | dom96 | I don't want to have two different c source versions. |
18:11:22 | dom96 | Where one uses 'bin' and the other '../bin' |
18:11:23 | Araq | the shell scripts are a pita anyway |
18:11:25 | dom96 | because what's the point |
18:12:01 | Araq | somebody should finally replace the directory system by a system that works |
18:12:14 | dom96 | This way it essentially detects whether we are inside a nimrod repo |
18:12:15 | dom96 | or not |
18:12:24 | Araq | yeah fine with me |
18:13:50 | dom96 | Araq: You wouldn't be on Windows by any chance would you? |
18:14:32 | Araq | no ... whenever I boot windows ~4 systems decide they need updates |
18:15:02 | Araq | so I only boot windows when there is some TV show to watch in the meantime |
18:15:37 | Araq | but there is nothing on TV this year ... |
18:15:40 | Mat2 | ciao |
18:15:47 | dom96 | bye Mat2 |
18:15:48 | * | Mat2 quit (Quit: Verlassend) |
18:16:01 | dom96 | Araq: is there ever? |
18:16:09 | dom96 | I haven't watched TV since Eurovision. |
18:16:41 | dom96 | In fact no. I haven't watched TV in way longer than that. |
18:16:54 | dom96 | I remembered switching to bbc iplayer to watch Eurovision :P |
18:20:12 | * | DAddYE joined #nimrod |
18:23:35 | * | boredomist joined #nimrod |
18:25:07 | dom96 | hey boredomist, long time no speak. |
18:26:34 | * | DAddYE quit (Ping timeout: 256 seconds) |
18:28:37 | OnionPK | theres some decent shows, but they're all on channels i dont have |
18:29:06 | Araq | OnionPK: I was talking about german tv though |
18:29:21 | Araq | which seems to be much worse than others |
18:31:00 | dom96 | Nowadays I am so used to watching TV shows with no ads that it's really hard to go back to normal TV. |
18:31:16 | Araq | hell ya, dom96 |
18:33:56 | OnionPK | araq my experience of german tv = american tv + german voice over :P |
18:36:26 | NimBot | nimrod-code/nimbuild master 465dbcd Dominik Picheta [+0 ±1 -0]: Builder: Modified C sources generation process. |
18:37:12 | dom96 | OnionPK: Are you on Windows by any chance? |
18:37:24 | OnionPK | yeah |
18:37:26 | dom96 | if so, mind testing something for me? |
18:37:36 | * | DAddYE joined #nimrod |
18:38:06 | * | Associat0r joined #nimrod |
18:38:06 | * | Associat0r quit (Changing host) |
18:38:06 | * | Associat0r joined #nimrod |
18:40:11 | OnionPK | perhaps, what'd you have in mind |
18:40:21 | * | q66_ joined #nimrod |
18:40:45 | BitPuffin | dom96: dude that's a lot of code! What did you do? |
18:41:10 | dom96 | BitPuffin: I built a time machine and stopped time! |
18:41:21 | BitPuffin | dom96: sweet! |
18:41:52 | dom96 | nah, I moved where the C sources are in the repo :P |
18:42:16 | BitPuffin | dom96: how come that added like 1 400 lines of code? |
18:43:12 | NimBot | Araq/Nimrod master 32264d1 Dominik Picheta [+0 ±1 -0]: sockets.send now throws an exception when a non-blocking socket is... 1 more lines |
18:43:12 | NimBot | Araq/Nimrod master af4bda6 Dominik Picheta [+0 ±3 -0]: Modified the behaviour of the build scripts to accommodate new C sources... 1 more lines |
18:43:53 | * | q66 quit (Ping timeout: 240 seconds) |
18:44:44 | dom96 | BitPuffin: It added a lot more than that. The numbers NimBot announces are file counts. |
18:45:41 | dom96 | "Showing 4,154 changed files with 7,933,068 additions and 2,865,037 deletions." |
18:45:45 | dom96 | https://github.com/nimrod-code/csources/commit/5502c78919d213e498df14343874d0fc5990bcb1 |
18:45:47 | dom96 | :P |
18:46:23 | * | q66_ quit (Ping timeout: 240 seconds) |
18:49:14 | BitPuffin | :o |
18:49:40 | BitPuffin | gonna go grocery shopping |
18:49:50 | BitPuffin | dom96: linagl has been bumped to 0.1.1 :D |
18:49:55 | dom96 | :D |
18:50:41 | BitPuffin | It renamed all the TVector aliases and added one for unsigned ints and changed the type of TIVecx to int32 instead of int |
18:53:07 | dom96 | We should post on reddit about every version bump heh |
18:53:22 | EXetoC | I'll make a few bumps today then |
18:56:10 | dom96 | yay. Also welcome back. :) |
18:58:43 | EXetoC | tnx! |
18:58:52 | * | BitPuffin quit (Ping timeout: 256 seconds) |
18:58:55 | EXetoC | gotta bring my computer next time. I just can't do without it |
19:01:32 | EXetoC | I was going to bring a laptop, but I was unable to build Nimrod on Windows. is the windows sdk or something needed? because it complained about an undefiend reference to _wfopen |
19:09:41 | Araq | EXetoC: dunno, use the gamera edition |
19:09:44 | * | Mat2 joined #nimrod |
19:12:07 | EXetoC | Araq: is that correctly spelled? I've gotten no relevant hits from google |
19:13:15 | Araq | http://nimrod-code.org/download/nimrod_gamera_0.9.2.exe |
19:13:46 | dom96 | NimBot should get a !gamera command :P |
19:14:03 | Mat2 | where from you haven an ARM board at hand ? |
19:14:15 | dom96 | me? |
19:14:42 | EXetoC | that explains it :> |
19:15:20 | Mat2 | dom96: Beside the RPI ? |
19:15:33 | EXetoC | thanks. I missed that. I'll try to install from source again though |
19:15:35 | * | EXetoC quit (Quit: WeeChat 0.4.1) |
19:15:46 | dom96 | Mat2: I only have an RPI |
19:17:37 | Mat2 | hmm, I suspect the exception compiling Aporia is unique to the SoC used on the RPI |
19:18:10 | dom96 | why? |
19:18:23 | Araq | Mat2: you should turn off memory overcommitting and see what it changes |
19:18:59 | * | tass joined #nimrod |
19:19:38 | * | tass quit (Client Quit) |
19:20:30 | Mat2 | dom96: because debugging leads to faulty page handling |
19:20:51 | Mat2 | Araq: Hat do you mean with memory overcommitting ? |
19:20:59 | Mat2 | ^what |
19:21:52 | dom96 | Mat2: I'm not sure how that suggests that the problem is unique to the SoC on the RPI. |
19:22:27 | Araq | dom96: linux does overcommitting on memory which means OOM is turned into a segfault |
19:22:44 | Araq | (OOM = out of memory) |
19:22:59 | dom96 | was that directed at Mat2? |
19:23:10 | Araq | gah |
19:23:15 | Mat2 | dom96: there exist some minor changes between ARMv6 and ARMv7 (an incompatiblity) |
19:23:18 | Araq | Mat2: look at what I said to dom96 |
19:24:23 | Mat2 | Araq: ah ok |
19:26:16 | dom96 | Mat2: Sorry, I still don't understand why you think it's unique to the RPI unless you tested it with a different ARM processor and found that it works. |
19:26:52 | Mat2 | dom96: That was my plan |
19:28:42 | Mat2 | sadly I do not have an board with ARMv7 cpu. I'll try to use QEMU for a test instead |
19:44:58 | * | EXetoC joined #nimrod |
19:46:06 | Mat2 | Araq: ok, I have disabled memory overcommiting but no change compiling Aporia |
19:46:47 | Mat2 | I try my luck with an emulated ARM7 board |
19:47:25 | EXetoC | it built, but then I got "file not found" when trying to compile two different sources. it didn't say which file or anything so I couldn't be bothered |
19:48:08 | Araq | well with an error report like this, I can't be bothered either |
19:49:51 | EXetoC | obviously not |
19:52:20 | dom96 | oh just realised, OnionPK got away with not testing stuff for me. |
19:52:41 | dom96 | well maybe EXetoC can do it now, are you still on Windows? |
19:56:56 | OnionPK | dom96 what'd u want me to test? |
19:57:58 | dom96 | Try compiling this: https://github.com/nimrod-code/csources |
19:58:36 | dom96 | Just cloning that and executing build.bat should be good enough. |
20:01:17 | OnionPK | k |
20:01:18 | EXetoC | not anymore |
20:01:39 | dom96 | OnionPK: thanks |
20:01:54 | EXetoC | I wonder how many of the users are on windows |
20:02:08 | OnionPK | dom96 build.bat runs without error |
20:02:26 | OnionPK | got a bin\nimrod.exe |
20:02:34 | dom96 | cool |
20:02:38 | dom96 | Thanks again. |
20:02:41 | OnionPK | np |
20:02:56 | boredomist | dom96: Hey there |
20:02:59 | boredomist | just lurking |
20:03:02 | OnionPK | works with clang too |
20:03:13 | dom96 | boredomist: ahh, alright. |
20:03:24 | dom96 | OnionPK: Awesome. |
20:03:43 | dom96 | Araq: Looks like we can finish the transition :) |
20:07:25 | OnionPK | whats the transition? |
20:09:35 | dom96 | OnionPK: Removing the csources.zip from the Nimrod repo. |
20:09:44 | dom96 | And moving it to a separate github repo. |
20:10:34 | OnionPK | interesting.. and then what, the build process wgets it? |
20:11:49 | dom96 | Going to have to clone it. |
20:12:01 | dom96 | Although perhaps it would be better to have a git submodule in there |
20:12:06 | dom96 | But Araq dislikes those. |
20:12:31 | OnionPK | it'd be nice if the build script automatically cloned it or something if it finds it's not there |
20:13:38 | OnionPK | why split it into a diff repo anyway? why not just not have it zipped |
20:14:09 | dom96 | That would work too yes. |
20:14:16 | dom96 | We would have two build scripts then though. |
20:14:31 | dom96 | A bit confusing but not really an issue. |
20:14:52 | dom96 | The reason we split it up is because having it zipped causes the repo to increase in size by the size of the .zip every time the .zip is updated. |
20:15:51 | OnionPK | and why have it zipped? |
20:16:30 | dom96 | because then you have diffs with 7million+ changes |
20:17:06 | OnionPK | wouldnt that still be an issue if it's a separate repo? |
20:17:44 | dom96 | People wouldn't need to look at those diffs. |
20:18:12 | dom96 | The biggest problem was when changes to .nim code and the c sources got mixed up. |
20:18:45 | dom96 | Back then github just showed the whole diff, it did not truncate it. |
20:19:38 | dom96 | Perhaps nowadays with some discipline we could get away with having it in the same repo. |
20:20:02 | dom96 | lol. |
20:20:12 | dom96 | I dunno. Araq's call. |
20:42:26 | * | q66 joined #nimrod |
20:44:29 | Araq | dom96: I can't follow sorry. We both agreed how to proceed with the C sources |
20:46:43 | dom96 | yes, well thinking about it now. We could get away with putting the unzipped C sources in the Nimrod repo, because github will no longer list all of the 7 million changes. |
20:47:11 | Mat2 | personally I see no problem handling the C sources in a different repro as long as handling is documentated |
20:47:44 | dom96 | The only problem is inconvenience: having to clone the repo when bootstrapping for the first time. |
20:47:50 | Araq | dom96: still generated code doesn't belong in there |
20:48:05 | Araq | especially not it's 7 million lines of code |
20:48:19 | Araq | the repo grows enormous |
20:48:41 | Araq | for the nimbuild repo we can regularly delete the history |
20:48:46 | dom96 | Actually yeah. Another issue is that Github will think the repo is not a Nimrod repo but a C repo. |
20:49:20 | dom96 | True. I don't think it will grow as much though. |
20:50:16 | dom96 | I assume you don't want any submodules in the Nimrod repo? |
20:50:20 | * | Mat2 using Assembla and prefering Mercurial |
20:50:52 | Araq | not if we can avoid it |
20:51:05 | dom96 | Sure we can. |
20:51:14 | Araq | I admit I'm baised because submodules never worked for me |
20:52:25 | dom96 | Do we want another build script to do the cloning of the C sources repo etc? |
20:53:30 | dom96 | It's to automate the process described in the readme here: https://github.com/nimrod-code/csources |
20:53:52 | boredomist | Out of curiosity, why would you store automatically generated sources in a repository? |
20:54:10 | OnionPK | because you need to be able to build nimrod.exe somehow |
20:54:13 | * | NewGuy joined #nimrod |
20:54:20 | OnionPK | and you dont have nimrod.exe to build nimrod.exe |
20:54:35 | boredomist | Well yeah, but version control on something you don't care about versioning is somewhat weird |
20:54:39 | boredomist | In my view |
20:55:11 | OnionPK | well.. there is versioning if the compiler is updated |
20:55:21 | dom96 | boredomist: Yes, but remember that if someone wants to push code which breaks bootstrapping they must update the C sources. |
20:55:55 | boredomist | Sure |
20:56:09 | boredomist | I just don't see the point of storing it in a VCS is all |
20:56:09 | dom96 | Hosting it in a github repo allows anyone with access to it to push these C sources. |
20:56:13 | OnionPK | would be nice if the build script could handle it all though, just have minimal barrier to entry, automate as much as feasible |
20:56:59 | dom96 | indeed. |
20:57:49 | dom96 | boredomist: Where would you store it? |
20:58:14 | boredomist | I'd probably do a tarball on nimrod.org or wherever |
20:58:22 | OnionPK | hosting on git makes sense, doesnt make sense to have multiple servers for that.. what if one goes down |
20:58:44 | dom96 | That would mean that every dev would need ftp access to it. |
21:00:05 | boredomist | Sure, but copying over public keys isn't too much trouble |
21:00:29 | boredomist | I'm not part of the project, so I don't really have any room to argue about this |
21:00:32 | boredomist | I was just curious |
21:02:16 | Araq | well github got rid of its "download" feature so there |
21:02:49 | Araq | if we like it on github's servers (and we do) we have no choice anyway |
21:04:47 | boredomist | Well can I suggest that your build script does "git clone --depth=1" so it doesn't have to build down 7M changes * N commits? |
21:05:01 | boredomist | That was main thought about using git |
21:05:40 | boredomist | Replace that second "build" with "pull" |
21:06:18 | Araq | boredomist: yeah we wanted to do that |
21:06:28 | Araq | --depth=1 ftw |
21:06:53 | boredomist | It really annoys me that a --depth=1 repo is basically useless |
21:07:00 | * | gradha joined #nimrod |
21:07:11 | boredomist | Can't make commits, can't update it, blah |
21:07:11 | boredomist | Silly git |
21:09:29 | dom96 | You can always download the tarball of the master of the csources repo which is basically the same as hosting it on nimrod-code.org |
21:09:37 | dom96 | Araq: So you want that script? |
21:10:45 | Araq | dom96: I don't know, build.bat doesn't support git easily and then the scripts do different things |
21:11:03 | dom96 | Well I was thinking of creating a separate script. |
21:11:52 | Araq | ok then |
21:12:46 | dom96 | But I dunno. Having a script automate the steps removes your options. You can't change between release and debug mode, and for Windows we will need a 32bit and 64bit version... |
21:14:19 | dom96 | I guess there aren't that many more steps than there are now. |
21:24:18 | NimBot | Araq/Nimrod master a3163de Dominik Picheta [+0 ±2 -3]: Updated bootstrap instructions. Removed csources.zip. |
21:29:06 | dom96 | gradha: how's pelican? |
21:30:47 | dom96 | Araq: Did you see this? |
21:30:49 | gradha | hmm... ok? |
21:30:57 | dom96 | <dom96> I think this should work: https://gist.github.com/dom96/f452f074b11d91775567 |
21:31:29 | gradha | dom96: I tried installing jekyll but again something in ruby land fucked up so I looked at anything else and pelican was the first alternative I tried |
21:31:33 | dom96 | gradha: I guess I should blame Arch for pushing Python 3 on me. |
21:31:49 | dom96 | I've had problems with jekyll and pelican |
21:31:57 | dom96 | Mostly because of pygments |
21:32:04 | dom96 | And python 3 |
21:32:29 | gradha | dom96: looks like you were my perfect target audience for the blog post |
21:32:54 | dom96 | oh? I didn't read it yet. |
21:33:16 | dom96 | I don't see any kpop videos :( |
21:33:25 | Araq | dom96: I saw it but it's a minor thing |
21:33:34 | dom96 | Araq: Want a bug report? |
21:33:45 | gradha | dom96: I'm going to make a section for those, already two nice ideas queued |
21:33:49 | Araq | meh sure |
21:34:02 | dom96 | gradha: kpop video posts, or Nimrod posts? :P |
21:34:08 | gradha | kpop, of course |
21:34:22 | dom96 | cool |
21:34:26 | gradha | I can advance you one will be on group DalShabet and another on 2eyes |
21:35:23 | gradha | I love these kpop groups, they go so much to the extreme negative that they overflow and become awesomely good |
21:35:54 | dom96 | I'm watching the Dota 2 International so I feel like kpop videos will be a nice complement. |
21:37:30 | gradha | other than that I have three ideas for tech, one may be large enough to split in two posts |
21:37:52 | * | Amrykid quit (Excess Flood) |
21:38:16 | * | Amrykid joined #nimrod |
21:38:18 | dom96 | You should write lots of Nimrod posts and submit to reddit/HN :) |
21:38:47 | dom96 | I will do that as soon as I can a damn blog working. |
21:38:52 | dom96 | *can get |
21:38:58 | gradha | BTW, if any of you loves dongles, just wait to read about DICKS in http://nmap.org/misc/hakin9-nmap-ebook-ch1.pdf |
21:39:17 | gradha | dom96: meh, don't use reddit/hn, feel free to post them yourself, I wont |
21:39:28 | dom96 | gradha: That's inappropriate, send me a picture of you so that I can tweet about you! |
21:39:45 | gradha | github avatar not enough? |
21:39:48 | gradha | ok, wait a sec |
21:40:04 | dom96 | nah, because then people won't believe me. |
21:40:20 | gradha | you will want to unsee these http://gradha.sdf-eu.org/fotos.en.html |
21:40:43 | dom96 | :D |
21:40:47 | gradha | forgot, NSFW |
21:41:07 | dom96 | haha |
21:41:20 | gradha | I have to update the photo with my favourite language |
21:43:31 | dom96 | lol just got to that photo... |
21:43:44 | NewGuy | Hey guys, which threading model should I use? |
21:44:31 | Mat2 | can you please explain what are your intentions ? |
21:44:36 | Araq | NewGuy: there is only one --threads:on |
21:45:07 | NewGuy | I meant message passing, actually. |
21:45:31 | NewGuy | Because the actor system says that it's deprecated on the documentation page |
21:45:43 | NewGuy | Or should I just use bare channels |
21:46:00 | * | gradha wonders why there is no hollywood module in nimrod |
21:46:27 | Araq | ok ok, you can use --gc:boehm and --threadAnalysis:off and get a second model ;-) |
21:47:44 | Araq | well the actors API got renewed and works afaict, but I consider the API a pita and would go for bare bone channels |
21:47:44 | NewGuy | Haha, sounds good! |
21:47:44 | gradha | isn't dom96 working on super async module which cures cancer? |
21:48:18 | dom96 | Yes. It hasn't quite cured cancer yet though. |
21:49:10 | Araq | NewGuy: depending on what you're doing you could also use processes and the 0mq wrapper |
21:49:26 | dom96 | pff, 0mq wrapper |
21:49:30 | dom96 | Use sockets like a real man. |
21:49:41 | dom96 | That's how nimbuild works. |
21:51:31 | gradha | dom96: I guess I don't follow reddit/hn because I already follow the equivalent of kpop, so I don't have much time left |
21:52:14 | NewGuy | dom96: But we have no doubt it will cure it soon, though! |
21:52:29 | dom96 | gradha: I think you should at least look at HN, it's very specific to technology news. |
21:52:48 | NewGuy | Araq: Nah, threads and channels will work just fine! |
21:54:04 | NewGuy | Araq: Although I would like to know how poor the performance for channels are (since it has a disclaimer in the docs). |
21:55:21 | Araq | well the main problem is the copying which you can avoid by casting to 'ptr' but then you need to keep the stuff alive on your own |
21:55:59 | Araq | blocking channels could perhaps mitigate this issue |
21:56:06 | gradha | dom96: any time I look at tech news sites all I see is drama, so I prefer if the articles sport nice girls pictures |
21:57:40 | gradha | hmm... so http://www.reddit.com/r/programming/ features an article on how to write programming tutorials. Who would need that? |
21:58:00 | * | Amrykid quit (Excess Flood) |
21:58:16 | * | Amrykid joined #nimrod |
21:58:54 | NewGuy | Araq: Oh, I was expecting that kind of cost, so yeah no problems there! |
21:58:54 | * | Amrykid quit (Changing host) |
21:58:54 | * | Amrykid joined #nimrod |
21:58:55 | dom96 | HN is usually better |
21:59:35 | Araq | NewGuy: well the implementation uses condition variables and locks |
21:59:41 | Araq | not cool ;-) |
22:01:23 | NewGuy | Newguy: (Of course) - but it could be worse! Could have to use Go ;-) |
22:01:49 | NewGuy | Araq: Of course - but it could be worse! Could have to use Go ;-) |
22:02:03 | Mat2 | ciao |
22:02:09 | dom96 | NewGuy: I think you will fit in well here ;) |
22:02:22 | * | Mat2 quit (Quit: Verlassend) |
22:04:03 | gradha | yes, talking to yourself is a good predictor |
22:04:28 | dom96 | lol |
22:05:05 | NewGuy | Damn, somebody noticed! |
22:06:52 | Araq | people don't like me saying anything negative about anything |
22:07:25 | Araq | so I'll just say that Golang is great except the name perhaps and the semantics and the type system |
22:07:46 | gradha | awww, no mention of the mascot? |
22:08:50 | NewGuy | gradha: Oh come on, that's the one thing I don't mind! |
22:11:45 | * | gradha wonders if the go mascot being a gopher is making some pun on internet protocols |
22:13:43 | NewGuy | gradha: At the risk of sounding like a complete idiot - How do I go about doing that? |
22:15:40 | gradha | NewGuy: I don't follow, sorry, what do you want to do? |
22:17:08 | NewGuy | "* gradha wonders if the go mascot being a gopher is making some pun on internet protocols" |
22:17:30 | gradha | I just wonder if there's a connection to https://en.wikipedia.org/wiki/Gopher_(protocol) |
22:18:00 | gradha | golang tends to be advertised as coroutines ideal for scaling web servers, or at least that's the example I get |
22:18:04 | NewGuy | Haha, I just meant the format of the message. No username, starts with an astericks |
22:18:13 | gradha | ah, ok |
22:18:21 | gradha | it's some IRC fancy stuff |
22:18:29 | gradha | you prefix whatever you want to say with "/me " |
22:18:37 | * | gradha wonders if that explanation helped |
22:18:52 | Araq | the truth is |
22:18:56 | * | NewGuy is very happy to learn something new |
22:18:58 | Araq | Nimbot can read our minds |
22:19:12 | Araq | and sometimes it will write them there |
22:19:20 | gradha | Araq: I don't believe that, he still doesn't high five me |
22:19:27 | gradha | NimBot: high five pal! |
22:19:28 | NewGuy | Araq: Shit, does that mean our thoughts are under the same license as the forum? |
22:19:31 | * | Araq is always right |
22:19:44 | * | NewGuy intercepts |
22:19:45 | * | gradha reserves the right to believe any alternative reality |
22:19:47 | dom96 | NimBot is just waiting for the right moment |
22:20:44 | gradha | NewGuy: I'm sure there are more irc tricks you can learn here, dom96 presumably pings us under the table, and sometimes it tickles |
22:20:56 | Araq | NewGuy: no your thoughts are property of the NSA |
22:21:28 | gradha | oh, that's why they follow me, they just get random noise |
22:21:33 | NewGuy | Araq: You aren't fooling me, I know how far Nimbot's control goes. |
22:21:51 | * | NewGuy puts on tin foil hat. |
22:23:43 | dom96 | Tin foil hat won't help you, friend. |
22:27:39 | gradha | hah, they removed in Allegro5 the useful but obscure file appending/reading code |
22:27:41 | dom96 | gradha: I can't help but cringe when I read 'operative system' :P |
22:28:27 | gradha | why? what meaning does it convey to you? |
22:28:58 | dom96 | I just never see it called 'operative system'. 'Operating System' is extremely common. |
22:29:57 | gradha | my bad, it's a direct translation of the spanish term, is operating system the english default? |
22:30:06 | dom96 | yeah |
22:30:32 | Araq | gradha: I tried the append approach on linux once iirc |
22:30:36 | Araq | doesn't work |
22:31:11 | gradha | weird, I remember it working for Allegro under linux, I betatested the upx support |
22:31:35 | gradha | maybe things have changed? |
22:33:42 | dom96 | The thing is: there are absolutely no applications on Linux that use static linking, of the common libraries at least. The reason is that each library is installed using the package manager and you cannot update packages which are statically linked. |
22:34:24 | gradha | dom96: the "no update" is precisely the good thing for stability |
22:34:49 | dom96 | What if the current version is unstable? |
22:35:15 | gradha | then the people releasing the binary didn't test enough? |
22:35:29 | gradha | dynamic linking is not an excuse for writing correct software |
22:35:37 | Araq | dom96: chances are it works good enough for you or you wouldn't use it |
22:36:01 | dom96 | What if there is a security issue you were not aware of? |
22:36:25 | gradha | dom96: sure, and the next version of the dynamic library breaks the API to fix that bug |
22:36:48 | dom96 | Not necessarily. |
22:37:04 | gradha | yep, but not guaranteed either |
22:37:30 | gradha | so basically, you are moving the cost of dependency maintenance on the user at the imaginary benefit of fixing bugs in the future |
22:37:47 | gradha | I don't think that's a reasonable trade off |
22:40:38 | dom96 | Perhaps. The problem is that most (if not all) linux distros use this philosophy. |
22:40:51 | NewGuy | I'm in gradha on this one, I prefer my static linking. |
22:41:14 | gradha | dom96: yes, that's the problem, linux distros expect users to be sysadmins. I've been there and don't mind, but it's why linux will never be usable |
22:42:04 | NewGuy | You can't imagine the problems I have setting up old software on my Linux-box. |
22:42:44 | NewGuy | The programs usually don't come with the dependencies and just say "get it from this site or the package management". |
22:42:57 | Araq | the truth is also: most bugs fix corner cases that properly written clients do not trigger |
22:43:09 | NewGuy | And if it's not there, then I have to go scoure the internet and hope somebody has a copy that I need. |
22:43:10 | Araq | so this "it needs to be updated for every program" is wrong |
22:43:59 | NewGuy | Araq: Not to mentioon sometimes those corner fixes can cause other bugs (although this is far more rare). So an update may not add anything, but ruin something. |
22:44:59 | gradha | dynamic linking used to have value when memory/disk/bandwidth were scarce, but now most of my software is shorter in size than a 3 minute clip of kpop, not even in full hd, imagine the ration when we get 4K |
22:45:25 | gradha | s/ration/size ratio/ |
22:46:56 | gradha | in a way this is like 3d card technology, dynamic linking is like "the ideal" solution, but thanks to the hardware growing exponentially, the "stupid" solution of static linking is effectively better for users |
22:47:10 | comex | static linking is fundamentally wrong because of security |
22:47:41 | comex | it may be also wrong due to bugs - honestly, I don't know, I haven't tried using statically linked desktop applications or anything |
22:48:21 | comex | but if you're looking at embedding anything from WebKit, at the extreme, to, say, FreeType, which I've exploited a bunch of times |
22:48:30 | comex | you're asking for trouble |
22:48:44 | gradha | ah, comex, just in case you didn't catch it we are sort of discussing http://gradha.github.io/users-prefer-static-linking.html which starts with static linking but actually goes on portability of software |
22:48:48 | comex | server software is usually more flexible in this way - although consider those recent Rails vulnerabilities or whatever |
22:49:10 | comex | ah, I remember arguing with some crazy person on HN about this once :) |
22:50:08 | gradha | "app bundles" are actually a patch to the "yeah, dynamic linking is better, we don't need stinking static linking!" mentality of some developers (eg. no GTK static libraries) |
22:50:08 | NewGuy | gradha: Don't think I said it, but great article. |
22:50:22 | gradha | NewGuy: thanks |
22:50:53 | Araq | well I'm not crazy to discuss security issues with comex ... |
22:51:02 | dom96 | indeed. Very good article. |
22:51:32 | gradha | meh, you'll see the stars when I start with kpop |
22:53:18 | comex | so perhaps there should be a balance - you could say iOS does this |
22:53:32 | gradha | Araq: maybe using the zipfile for appending stuff to the binary, rather than going the file format of Allegro 4 |
22:53:33 | comex | since third party libraries are statically linked, but things like WebKit and FreeType are dynamically linked |
22:53:36 | NewGuy | I think I'm ballsy enough, Araq. |
22:54:26 | NewGuy | comex: How about we dynamically link where necessary for security or buggy libs - and statically link everywhere else? Middle ground sound good? |
22:54:38 | gradha | comex: yes, the OS guarantees some dynamic libraries are always present, similar to libc and the like, but for others you can opt in, like statically linking sqlite or using the OS provided version |
22:55:12 | gradha | NewGuy: there has to be a middleground, otherwise your binary would include the OS, like emacs |
22:55:17 | comex | :) |
22:55:59 | comex | NewGuy: it may be a good idea. on the other hand, *when* you put all the effort into making all the packages dynamically linked and working together, like a high quality Linux distro |
22:56:08 | comex | it probably comes out better, since you don't have to worry about anything being out of date at all |
22:56:21 | comex | of coure, Linux distros don't have nearly as many packages as app stores... |
22:56:28 | comex | *course |
22:56:46 | * | comex shrug |
22:58:31 | NewGuy | It's really just a context and preference thing, really. |
22:59:01 | * | NewGuy resigns with Araq. |
22:59:06 | dom96 | I think it makes sense on Windows where each application installs their own dependencies anyway. |
23:02:33 | * | Sergio965 joined #nimrod |
23:03:51 | gradha | it seems Allegro 5 dropped their datafiles in favour of https://icculus.org/physfs/ but nimrod could use the zipfile module, maybe |
23:04:06 | comex | i prefer bundles over ugly binary appending stuff |
23:04:49 | dom96 | gradha: what about slurp? |
23:06:09 | gradha | IIRC extra data appended to the binary won't be loaded into ram, with slurp you hit that penalty always |
23:22:48 | gradha | well, there's not much magic to the way Allegro handled appended data, according to http://sourceforge.net/p/alleg/allegro/ci/4.4/tree/src/file.c#l1286 it should be fairly trivial to do this with zipfiles |
23:27:55 | Araq | good night guys |
23:28:01 | gradha | good night |
23:28:40 | EXetoC | bb |
23:28:51 | dom96 | bye Araq |
23:28:52 | * | DAddYE quit (Remote host closed the connection) |
23:29:18 | * | DAddYE joined #nimrod |
23:33:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
23:42:26 | gradha | bye bye |
23:42:33 | * | gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=1ZZC82dgJr8 again) |
23:43:15 | * | Associat0r quit (Quit: Associat0r) |
23:47:01 | dom96 | good night |