01:09:02 | * | Trixar_za is now known as Trix[a]r_za |
01:10:35 | * | DAddYE quit (Remote host closed the connection) |
01:27:11 | * | q66 quit (Quit: Leaving) |
02:12:21 | * | DAddYE joined #nimrod |
02:17:13 | * | DAddYE quit (Ping timeout: 276 seconds) |
03:13:15 | * | DAddYE joined #nimrod |
03:19:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
03:30:26 | * | Associat0r joined #nimrod |
03:30:26 | * | Associat0r quit (Changing host) |
03:30:26 | * | Associat0r joined #nimrod |
03:50:57 | * | DAddYE joined #nimrod |
03:53:27 | * | DAddYE quit (Remote host closed the connection) |
03:53:57 | * | DAddYE joined #nimrod |
03:58:37 | * | DAddYE quit (Ping timeout: 276 seconds) |
04:03:53 | * | xilo quit (Ping timeout: 245 seconds) |
04:11:08 | * | DAddYE joined #nimrod |
04:14:12 | * | DAddYE quit (Remote host closed the connection) |
04:14:45 | * | DAddYE joined #nimrod |
04:19:10 | * | DAddYE quit (Ping timeout: 245 seconds) |
04:24:04 | * | OrionPK quit (Quit: Leaving) |
04:36:52 | * | DAddYE joined #nimrod |
05:02:53 | * | Associat0r quit (Quit: Associat0r) |
05:14:10 | * | EXetoC quit (Quit: WeeChat 0.4.1) |
05:53:03 | * | DAddYE quit (Read error: Connection reset by peer) |
05:53:58 | * | DAddYE joined #nimrod |
07:08:59 | * | Araq_ joined #nimrod |
08:09:35 | * | Associat0r joined #nimrod |
08:11:24 | * | Roin quit (Read error: Connection reset by peer) |
08:11:32 | * | Associat0r quit (Client Quit) |
08:15:17 | * | Roin joined #nimrod |
08:15:17 | * | Roin quit (Changing host) |
08:15:17 | * | Roin joined #nimrod |
08:56:06 | * | DAddYE quit (Remote host closed the connection) |
08:56:39 | * | DAddYE joined #nimrod |
09:00:58 | * | DAddYE quit (Ping timeout: 245 seconds) |
09:48:32 | * | q66 joined #nimrod |
10:05:08 | * | vegai joined #nimrod |
10:27:22 | * | Trix[a]r_za is now known as Trixar_za |
10:41:51 | Araq_ | hi vegai, welcome |
10:43:08 | dom96 | hello vegai |
10:55:20 | * | BitPuffin joined #nimrod |
10:59:33 | * | DAddYE joined #nimrod |
11:00:07 | vegai | howdy again |
11:04:22 | * | DAddYE quit (Ping timeout: 276 seconds) |
11:10:57 | * | Trixar_za is now known as Trix[a]r_za |
11:19:42 | * | Trix[a]r_za is now known as Trixar_za |
11:21:27 | * | EXetoC joined #nimrod |
11:27:33 | dom96 | vegai: oh, have you been here before? Your name does sound familiar. |
11:29:40 | vegai | yeah, once or twice |
11:32:03 | * | Trixar_za is now known as Trix[a]r_za |
11:33:17 | dom96 | will you stick around this time? :) |
11:35:34 | vegai | probably not :P |
11:36:00 | vegai | what's been happening? |
11:38:37 | Araq_ | we're getting a new VM for much improved macro handling |
11:39:12 | dom96 | I'm not sure when you were last here, but we got a new website. |
11:39:17 | dom96 | 0.9.2 was released |
11:39:40 | dom96 | You can take a look at the changelog here: http://www.nimrod-code.org/news.html#Z2013-05-20-version-0-9-2-released |
11:40:05 | dom96 | We are having a bit of a debate about whether to get rid of style insensitivity... |
11:40:32 | dom96 | I am working on an C#-ish await thing. |
11:43:02 | dom96 | I created a little OS dev starter for nimrod: https://github.com/dom96/nimkernel |
11:45:01 | dom96 | Babel is now practically finished. |
11:45:21 | Araq_ | lol, daddye disagrees with you dom96 |
11:45:38 | Araq_ | but surely the compiler needs to catch up first |
11:46:02 | dom96 | Araq_: About babel being finished? |
11:46:47 | Araq_ | yeah |
11:48:12 | dom96 | why? |
11:48:37 | dom96 | But perhaps I should have said "It's usable" :P |
11:48:48 | dom96 | or "ready for a first release" |
11:51:06 | Araq_ | dunno he said something about locking which I didn't understand |
11:51:29 | Araq_ | like the package manager needs to hold a file lock to prevent inconsistencies etc. |
11:52:49 | Araq_ | a very useful thing, this way you have to 'sudo rm filelock' when the package manager crashes |
12:10:19 | vegai | I saw that dom96 had entered a nimrod web framework into that big benchmark thing |
12:10:22 | vegai | jester? |
12:10:46 | EXetoC | ya |
12:11:03 | dom96 | yep |
12:20:53 | dom96 | That's indeed another new thing. |
12:22:50 | vegai | what did @ mean again, for instance in setCookie("test", @"value", daysForward(5)) |
12:27:46 | dom96 | It retrieves the value with the key of name "value" from the URL params. |
12:28:30 | dom96 | get "/@value": echo(@"value") |
12:28:51 | vegai | ahh, it's defined by jester |
12:28:53 | dom96 | If you navigate to /foo, it will echo "foo" |
12:28:56 | dom96 | yes |
12:28:56 | vegai | it looked like a language feature |
12:35:47 | * | Associat0r joined #nimrod |
12:45:38 | EXetoC | yeah, the syntax can be extended |
12:46:23 | Araq_ | not really, but it's flexible |
13:04:51 | * | DAddYE joined #nimrod |
13:09:27 | * | DAddYE quit (Ping timeout: 256 seconds) |
13:31:54 | * | Endy joined #nimrod |
13:36:16 | EXetoC | ok modify the AST |
13:43:19 | * | q66_ joined #nimrod |
13:44:00 | * | q66 quit (Disconnected by services) |
13:44:06 | * | q66_ is now known as q66 |
13:49:26 | * | Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 22.0/20130618035212]) |
14:30:40 | * | xilo joined #nimrod |
14:38:16 | * | BitPuffin quit (Ping timeout: 264 seconds) |
14:42:53 | * | [1]Endy joined #nimrod |
14:46:29 | * | Endy quit (Ping timeout: 268 seconds) |
14:46:29 | * | [1]Endy is now known as Endy |
14:55:10 | * | Trix[a]r_za is now known as Trixar_za |
15:08:40 | * | DAddYE joined #nimrod |
15:13:37 | * | DAddYE quit (Ping timeout: 268 seconds) |
15:58:05 | * | Associat0r quit (Quit: Associat0r) |
16:30:56 | * | DAddYE joined #nimrod |
16:30:58 | * | DAddYE quit (Remote host closed the connection) |
16:31:33 | * | DAddYE joined #nimrod |
16:42:42 | * | Trixar_za is now known as Trix[a]r_za |
16:43:10 | * | Sergio965 joined #nimrod |
17:01:38 | * | Sergio965 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
17:08:45 | * | Sergio965 joined #nimrod |
17:13:08 | Araq | hi Sergio965, how's progress on your OS? (it is you who is working on an OS, right?) |
17:13:23 | Sergio965 | It is, yeah. |
17:13:27 | Sergio965 | It's going alright. |
17:13:40 | Sergio965 | I'm working on one in Rust at the moment. |
17:13:46 | Araq | bah :P |
17:14:15 | Sergio965 | After I finish a good amount of it (VM, Interrupts, PIC, Processes), I'll likely write one in Nimrod. |
17:14:28 | Sergio965 | + a shell. |
17:14:59 | Sergio965 | Have you played with Rust much? |
17:15:37 | Araq | no, I only checked out its type system really |
17:18:17 | Sergio965 | What did you think of it? |
17:20:52 | Araq | it looks very nice, I might steal ideas from it ;-) |
17:26:11 | DAddYE | Araq: https://news.ycombinator.com #12 |
17:26:53 | DAddYE | Sergio965: do you like rust? |
17:27:04 | DAddYE | if so, what do you like? |
17:29:40 | Sergio965 | I think, for the most part, I do like Rust. |
17:31:24 | Sergio965 | (One sec) |
17:39:46 | Sergio965 | Alright, back. |
17:40:43 | Sergio965 | I really like Rust's enums, pattern matching, module system, and ownership/lifetime system. |
17:41:17 | Sergio965 | I dislike Rust's verbosity and (at times) needless worry for safety. |
17:42:54 | Sergio965 | Rust's enums are quite different from most languages as they can be n-arity. So you can do something like: enum Shape { Circle(float), Rectangle(float, float) }, or Color { White, Black }. |
17:43:51 | Sergio965 | They can even be structs. So you can do enum Person { Employee { id: uint, name: ~str}, Manager { id: uint, name: ~str, title: ~str }. |
17:43:52 | EXetoC | yes, tagged unions. it's not really the same thing |
17:44:27 | Sergio965 | Yeah, they're like tagged unions. |
17:45:12 | Sergio965 | But with much better syntax and static guarantees . |
17:45:26 | dom96 | Looks like Nimrod's object variants. |
17:48:18 | Sergio965 | Pattern matching is pretty great, too. You can match against enums by doing match thing { Circle(radius) => radius * radius, Rectangle(length, width) => length * width }, against structs similarly: match thing { Employee{ id, _ } => bla, Manager { id, _ } => bla }, and vectors (and others): match thing { [first, ..middle, last] => first + last / middle[0] }. |
17:48:46 | EXetoC | are there *tagged* unions that aren't type safe? that seems like the biggest different compared to regular unions that don't have tags |
17:49:32 | dom96 | Pattern matching is something that I would love to see in Nimrod. May be possible to do pretty well with a macro. |
17:50:29 | Araq | we'll get pattern matching |
17:51:03 | Sergio965 | I think the coolest part of Rust is it's lifetime system. The lifetime system allows the programmer to specify lifetime pointer guarantees that need to be met. The compiler statically checks that all guarantees asserted are met and further ensures that the lifetimes of two objects being used in the same computation have a non-zero intersection. This means that in Rust, there are never dangling pointers. |
17:51:36 | Sergio965 | (If the lifetimes are explicitly specified, then all pointers have different lifetimes that may or may not overlap.) |
17:51:43 | Sergio965 | are not explicitly* |
17:53:23 | Sergio965 | This also allows you to return pointers from a function with full safety. You'd have something like: fn add(a: &'r int, b: &'r int) -> &'r c { return &(*a + *b) }. |
17:54:00 | * | alexandrus joined #nimrod |
17:57:54 | Sergio965 | Eh, that last example isn't quite correct. |
17:57:56 | Sergio965 | But whatever. |
17:58:24 | DAddYE | Sergio965: and why Rust isn't gain a good community traction? |
17:58:39 | Sergio965 | It's cumbersome to learn. |
17:59:03 | DAddYE | also I'm quite disappointed that Mozilla produce some software in go instead to use rust |
17:59:04 | Sergio965 | It took me a while to grasp the lifetime system even though I've worked with C, pointers, and manual memory management for years. |
17:59:30 | Sergio965 | I think the language could be more elegant and yet still be just as powerful. |
18:00:30 | DAddYE | Sergio965: my classic question: what language you'll pick up (if not Rust)? |
18:00:44 | Sergio965 | What do you mean pick up? |
18:00:53 | DAddYE | Sergio965: start to use/study |
18:01:16 | Sergio965 | Well, I'm building an OS in Rust as we speak, so I'll be deep in Rust for at least the next couple of weeks. |
18:01:18 | EXetoC | I mostly disliked the syntax, which I've said before. it too has statements as expressions though, so that's good |
18:01:51 | Sergio965 | I've dealt with quite a number of languages. To date, I can say I'm really comfortable with Python, Go, C, Objective–C, Java, Ruby, JavaScript, RISC/x86 Assembly. |
18:02:27 | DAddYE | mostly my same background except python and risc |
18:02:31 | Sergio965 | EXetoC: Yeah, the syntax is the thing I most dislike. |
18:03:55 | Sergio965 | I've dabbled a bit with Haskell, but I can't say I know it. |
18:04:14 | Sergio965 | That's probably the language I'd really like to learn next. |
18:05:25 | DAddYE | Sergio965: me too but AFAIK seems to far to production needs |
18:05:38 | DAddYE | s/production/business/ |
18:05:45 | Sergio965 | Haskell? |
18:05:51 | DAddYE | yep |
18:06:11 | Sergio965 | Yeah. |
18:06:20 | DAddYE | big learning curve and too pure |
18:06:21 | Sergio965 | I think the biggest issue with a language like Haskell is that it's so different. |
18:06:35 | Sergio965 | And so hiring engineers to write Haskell is difficult. |
18:07:15 | DAddYE | there is a nice article about that from Riak |
18:07:32 | DAddYE | (erlang) |
18:07:53 | DAddYE | language that suffer by the same problem |
18:08:00 | DAddYE | (and I don't like) |
18:08:49 | Sergio965 | Riak is written in Erlang? |
18:10:07 | DAddYE | Sergio965: yup http://basho.com/erlang-at-basho-five-years-later/ |
18:11:54 | EXetoC | isn't the default float formatting nice? :> |
18:12:19 | EXetoC | in nim |
18:13:29 | EXetoC | I have learned how to parse it mentally though |
18:13:50 | dom96 | you can use formatFloat for a prettier version. |
18:15:29 | EXetoC | I am, but I should wrap it |
18:28:08 | Sergio965 | Always wrap it. |
18:28:15 | Sergio965 | For safety. ;) |
18:29:34 | EXetoC | or reduced annoyment :> |
18:30:08 | Araq | or cargo cult |
18:33:54 | EXetoC | orly |
18:36:48 | EXetoC | nah |
19:11:11 | NimBot | Araq/Nimrod master dfe09cb Araq [+0 ±6 -0]: fixes token's column information |
19:11:11 | NimBot | Araq/Nimrod master 292ed0d Araq [+0 ±3 -0]: lfFullExternalName for 'nimrod pretty' |
19:11:11 | NimBot | Araq/Nimrod master 652f6a7 Araq [+0 ±2 -0]: 'nimrod pretty': next steps |
19:11:52 | Araq | this might break idetools, so somebody should test it ;-) |
19:24:07 | Araq | dom96: is HTTP 2.0 finally a binary protocol? |
19:24:23 | dom96 | Araq: No idea. I didn't read much into it. |
19:25:16 | Araq | apparently it is :-) |
19:30:36 | * | BitPuffin joined #nimrod |
19:40:20 | * | Mat2 joined #nimrod |
19:40:22 | Mat2 | hello |
19:41:28 | Araq | hi Mat2 |
19:41:48 | Araq | nice article btw "Talk to the hand that invented APL" XD |
19:42:03 | Mat2 | hi Araq |
19:42:20 | Sergio965 | APL is ridiculous. |
19:42:26 | Araq | sorry it's "talk to the hand that made APL" |
19:43:37 | Mat2 | Sergio965: Can you explain your opinion a bit in more depth please |
19:44:09 | Mat2 | Araq: Well, I enjoyed reading it :D |
19:45:04 | Araq | me too, Mat2 |
19:45:34 | Sergio965 | Mat2: Mostly, it's extremely hard to type. |
19:46:28 | * | Sergio965 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
19:54:27 | Mat2 | hmm that's not true because each symbol can be typed by name with an prefixed dot |
19:56:14 | Mat2 | the language is hard to read for someone who is not in touch with mathematical notations for sure |
19:57:40 | Mat2 | (however, I found chinese people found its notation quite natural, so this seem to be a cultural phaenomen) |
19:59:53 | * | Sergio965 joined #nimrod |
20:00:27 | EXetoC | he might not be checking the logs |
20:01:44 | Sergio965 | Mat2: I didn't know they could be typed by name. |
20:37:32 | Mat2 | what's your motivation coding an OS ? |
20:42:58 | Araq | Mat2: the ones we got suck? |
20:44:44 | EXetoC | yeah, we're waiting patiently for your OS to get usable! |
20:47:10 | Mat2 | Araq: Is that a multix or z/OS clone ? *g* |
20:48:13 | Mat2 | by the way: For os development I found this one interesting: http://www.returninfinity.com/baremetal.html |
20:48:49 | Araq | Mat2: it's a DOS clone ;-) |
20:49:10 | Araq | unix is too bloated to run on a 286 anyway |
20:51:37 | EXetoC | BitPuffin: what's wrong with licenses like MIT and BSD? someone expressed concerns regarding unlicense, and the more well-established ones seems to be good enough |
20:51:46 | EXetoC | do you have to care less about putting stuff in every file? :> |
20:51:58 | BitPuffin | EXetoC: still have to include the license if you redistribute |
20:52:03 | BitPuffin | and you needn't worry |
20:52:42 | BitPuffin | EXetoC: second paragraph works either if a country supports public domain or not |
20:52:54 | Mat2 | well, just grap the sources of concurrent CP/M 86, extend it with an exe loader and you will have a multitasking, multiuser version of DOS |
20:53:02 | EXetoC | ok |
20:53:17 | BitPuffin | EXetoC: ever heard of sqlite? |
20:55:46 | Sergio965 | For my OS to get useable? |
20:55:57 | Mat2 | yes |
20:56:03 | EXetoC | ya. just add some OpenGL support and stuff :> |
20:56:08 | Sergio965 | I'm working on my master's thesis. |
20:56:12 | EXetoC | BitPuffin: yeah. I see that it's in the public domain |
20:56:24 | Mat2 | Sergio965: http://www.cpm.z80.de/source.html |
20:56:29 | BitPuffin | EXetoC: yep |
20:56:29 | Sergio965 | It's on operating system development in high level languages. |
20:56:42 | BitPuffin | EXetoC: what kind of concerns were expressed? |
20:56:45 | Sergio965 | Mat2: What's this? |
20:57:43 | EXetoC | BitPuffin: what you said about countries without copyright laws |
20:57:55 | Mat2 | the sources of all DRI operating-systems (and one main source of "influences" for Microsoft beside the Digital VMS one) |
20:58:01 | EXetoC | probably something else that I missed, but I'm not worried anymore |
20:58:12 | BitPuffin | EXetoC: ah okay, well like I said, pretty much anything that doesn't have anything to do with public domain in the unlicense still holds true |
20:58:42 | Mat2 | mostly C and PL/M, should be easily convertible to Rust or any other HLL with hype this day (as long as not functional) |
20:58:56 | * | Trix[a]r_za is now known as Trixar_za |
20:59:10 | Sergio965 | I've written a couple of operating systems in C. |
20:59:22 | Sergio965 | The goal here is for higher-than-C level languages. |
20:59:27 | EXetoC | I've written hello world in C |
20:59:27 | Sergio965 | Ideally, without ever using a line of C code. |
20:59:48 | EXetoC | yeah, it's unnecessary in this day and age |
21:00:11 | Mat2 | no problem, just inline assembler routines instead :D |
21:00:12 | EXetoC | unless of course you work in the industry or something like that :> |
21:00:25 | * | BitPuffin wouldn't even call asm unnecessary |
21:01:23 | EXetoC | no not asm |
21:02:31 | Sergio965 | ASM is necessary. |
21:02:35 | Sergio965 | Unfortunately. |
21:02:37 | Araq | hmm lets see: easy overflow checking, no undefined behaviour, chance for a real macro preprocessor ... yep ASM >> C |
21:03:14 | EXetoC | :> |
21:03:18 | comex | nope, asm has undefined behavior :) |
21:03:50 | comex | depending on the processor of course |
21:04:33 | Araq | alright alright |
21:04:39 | Araq | but much less so than C |
21:04:39 | Mat2 | Sergio965: no really, this operating-systems where designed for easily porting and pioneered the use of high-level languages (PL/M is an PL/1 descendent). It would be an easy port as the sources are already good factored so it would be easy to use all of this important language features such as hash-tables etc. |
21:08:36 | Mat2 | (in fact better than porting FreeDOS) |
21:08:41 | Araq | comex: there is no room in asm for i++ = ++i; bullshit bingo, no broken type system, no control flow abstraction so co-routines and continuations are easy to implement |
21:08:58 | Mat2 | I agree |
21:09:12 | Araq | etc. etc. C is a very poor substitute for assembler |
21:09:56 | Mat2 | ANsi C is portable, you will only need a PDP11 *lol* |
21:15:05 | * | Endy quit (Ping timeout: 256 seconds) |
21:15:16 | Sergio965 | I'm not porting anything.. |
21:15:22 | Sergio965 | I'm writing my own. |
21:15:24 | Sergio965 | Part of the fun. |
21:15:42 | Araq | heck even ASM's syntax composes better than C's as it has no expr/stmt split |
21:16:17 | Sergio965 | I love C. |
21:16:26 | Sergio965 | Really, one of my favorite languages. |
21:16:31 | Mat2 | and modern macro assemblers tend to be more high-level oriented as C |
21:16:40 | Araq | Mat2: yep |
21:17:26 | Mat2 | Sergio965: What was your first programming-language ? (probably BASIC?) |
21:17:32 | Araq | Sergio965: your love is however not based on any technical merits of the language as there are none :P |
21:18:39 | Araq | what's unique to C is also very problematic: type declaration order and array/pointer conflation |
21:19:07 | Araq | and that's from C's author, not my opinion btw |
21:19:11 | Araq | bbl |
21:26:39 | comex | Araq: and yet none of the replacements do what C does as well as it |
21:26:44 | comex | including nimrod, or my language |
21:26:47 | dom96 | This talk is pretty good: http://vimeo.com/71278954 |
21:27:19 | Mat2 | comex: What does C well ? |
21:30:11 | comex | being low-level yet portable, powerful yet very simple |
21:32:43 | Mat2 | the ANSI C standard includes only a minimal set of libraries and define importent aspects of these language as implementation dependent, only specifying usability ranges |
21:33:41 | Mat2 | this lead to some, really hard to detect incompatibilities, specially for ports between different processor architectures |
21:34:10 | comex | most of them are unavoidable if you don't want to compromise on performance |
21:35:31 | Mat2 | no, these are side-effects of the language specification (which is in fact still incomplete) |
21:35:56 | comex | be specific |
21:36:35 | Mat2 | for example: Defining an union do not garantees compiling endian agnostic code |
21:36:52 | comex | huh? |
21:37:23 | comex | what do you mean? |
21:38:26 | Mat2 | typedef struct {uint8_t bytes[8]; uint64_t word;} uTest; |
21:38:59 | comex | don't do that |
21:39:00 | * | Associat0r joined #nimrod |
21:39:00 | * | Associat0r quit (Changing host) |
21:39:00 | * | Associat0r joined #nimrod |
21:39:04 | Mat2 | accessing bytes[n] is an implementation specific detail |
21:41:45 | Mat2 | sorry, but unions where original intended as platform independent abstraction for accessing memory |
21:41:46 | comex | of course it's implementation specific, the way that 'word' is stored depends on the machine |
21:42:07 | comex | and may not even be big or little endian |
21:42:17 | comex | what would you expect it to do? |
21:42:51 | Mat2 | imlicit conversion dependent of the endianess ? |
21:43:28 | comex | it's intended to be exactly that, an abstraction for accessing memory, not some magic thing that converts for you |
21:43:49 | comex | and what endianness would you expect it to use? |
21:43:56 | Sergio965 | Mat2: PHP, unfortunately. |
21:44:36 | Mat2 | the native one used by the processor architecture of course |
21:45:29 | EXetoC | I guess most people assume that it's going to work like that |
21:45:38 | comex | that's what it does |
21:45:39 | EXetoC | as you do, in many cases |
21:45:39 | Mat2 | my point is: That's because there was introduced by the authors of C originally !!!! |
21:45:48 | EXetoC | ok fine :p |
21:45:49 | comex | it uses the processor architecture's endianness - well, you are supposed to use char instead of uint8_t |
21:46:10 | Mat2 | that don't make a difference |
21:46:21 | comex | since the implementation defines the existence of an architecture that supports endianness at all, it must define the semantics of that operation |
21:46:32 | Mat2 | try compiling such code for an embedded CPU ! |
21:46:51 | comex | oh, you're right, char vs uint8_t doesn't matter in this case |
21:46:58 | comex | Mat2: what kind of CPU? |
21:47:02 | comex | what do you mean? |
21:47:15 | EXetoC | bare metal targets |
21:47:30 | comex | it works as expected... |
21:48:28 | * | Sergio965 quit (Ping timeout: 264 seconds) |
21:48:52 | Mat2 | it don't - it depend on the compiler you are using. GCC takes care of such details for example but most C compilers from the chip vendors do not |
21:49:48 | comex | this is not a problem with the c specification, it's a problem with those compilers |
21:50:49 | Mat2 | no, its a specification problem because the standard do not force endian handling ! |
21:51:27 | Mat2 | (and that's only a minor example, there are much more frustrated embedded developers can tell you) |
21:53:13 | Mat2 | sometimes some C code is not even portable inside the same processor family |
21:53:55 | Mat2 | (like for some PIC MCU lines) |
21:55:33 | Mat2 | take a look at the Linux kernel with all its preprocessor happenings for example ;) |
21:55:49 | Mat2 | or better the much more portable NetBSD one |
21:56:53 | Mat2 | both are only portable (beside platform specific code) using the GCC compiler |
21:57:07 | Mat2 | because of this mess |
21:58:03 | Mat2 | (ok, I hope the BSD folk finishing there effort one day switching to LLVM) |
22:08:54 | * | OrionPK joined #nimrod |
22:13:22 | Mat2 | get some sleep, ciao |
22:13:26 | * | Mat2 quit (Quit: Verlassend) |
22:15:30 | * | gradha joined #nimrod |
22:24:17 | BitPuffin | EXetoC: are there any issues left for your pull request? |
22:24:22 | BitPuffin | Are you having thunder btw? |
22:25:50 | EXetoC | I can't remember. maybe something that doesn't work with the current compiler |
22:25:53 | EXetoC | nope |
22:31:27 | BitPuffin | EXetoC: hmm, I'll have a look, but I have to turn off now because thunder |
22:35:50 | * | BitPuffin quit (Ping timeout: 245 seconds) |
22:39:21 | Araq | comex: C++, Ada, Delphi, Nimrod, D and Rust all do better than C what C "does" |
22:39:52 | Araq | Ada in particular lets you define structs down to the bit level |
22:57:09 | gradha | hmm... if the backslash is not an escape character in a raw string literal, how do I escape a " character? |
22:58:54 | Araq | hi gradha |
22:58:55 | gradha | I can upgrade to r"""foo\"bar""", but I'm interested in writing the equivalent like r"foo\"bar" |
22:58:58 | gradha | hi Araq |
22:59:19 | Araq | """foo"bar""" # should work |
22:59:52 | Araq | no need to escape since only """[^"] is a string ending |
23:00:07 | gradha | so no way to do it without triple quotes? |
23:00:19 | Araq | "foo\"bar" ? |
23:00:26 | gradha | r"foo\"bar" |
23:00:40 | gradha | the raw string literal is the problem |
23:00:41 | Araq | well if you use 'r', you don't want escapes |
23:00:48 | gradha | yeah, I know |
23:00:53 | gradha | I just like asking for the impossible |
23:01:04 | Araq | r"foo" & "\"" & r"bar" |
23:01:14 | gradha | oh, clever |
23:02:02 | gradha | does that happen at compile time too like C string literal concatenation? |
23:03:18 | Araq | sure |
23:03:41 | gradha | btw, congrats on having Nimrod used in a real world project http://forum.nimrod-code.org/t/189 |
23:05:10 | * | alexandrus quit () |
23:05:17 | Araq | for me the compiler is a real world project ... |
23:09:15 | gradha | so, have you heard recently of any new fancy kpop songs? |
23:12:09 | EXetoC | it is, yeah |
23:28:30 | Araq | gradha: I don't think anybody except dom96 shares your kpop weakness :P |
23:30:57 | gradha | that's new, I thought nobody else listened to it (Miku Hatsune is jpop) |
23:33:06 | gradha | would you like me to introduce associative arrays (aka tables module) at the end of the tutorial's 1st part? |
23:33:33 | Araq | is tut 1 still too slim? |
23:33:56 | Araq | what about starting a new tutorial that's a guide through the common parts of stdlib? |
23:34:00 | * | gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=1ZZC82dgJr8 again) |
23:34:06 | Araq | nice ... |
23:34:26 | * | gradha joined #nimrod |
23:35:11 | gradha | I'd first need to know what are the common parts of the stdlib |
23:35:21 | Araq | prelude.nim defines it |
23:35:57 | Araq | include prelude # knowbody knows about this :P |
23:36:02 | gradha | me neither |
23:37:06 | Araq | I guess it should also import re |
23:37:19 | * | Trixar_za is now known as Trix[a]r_za |
23:37:19 | Araq | but hey, that's not pure |
23:37:40 | Araq | oh and nowadays also sequtils I guess |
23:38:24 | gradha | the other day a java programmer was complaining about xcode objc not being able to automatically add #import "file", maybe you should just include the whole stdlib by default and be done? |
23:38:59 | Araq | and unicode, encoding, marshal, math, algorithm, ... |
23:39:12 | Araq | osproc |
23:39:26 | gradha | here's an idea: implement "exclude" to avoid importing what you don't want |
23:39:49 | Araq | and subexes ... ah the great subexes failure |
23:40:05 | gradha | of course, first hello world compilation would triggers a babel trip to download everything just in case |
23:40:22 | Araq | latex-style, I like it |
23:40:49 | Araq | "gah, I dunno, just download everything so my LaTeX file compiles" |
23:41:35 | gradha | you know if you are from the past if you still use latex instead of lout |
23:41:50 | Araq | "and yes, it's really an UTF-8 file and that's really an umlaut here ..." |
23:42:08 | gradha | oi, that reminds be about nimrod source encodings and idetools columns |
23:42:23 | Araq | oh btw |
23:42:26 | gradha | btw, you mentioned recent commits break idetools, more? |
23:42:36 | Araq | the '*' makes colum wrong bug should be gone now |
23:42:59 | Araq | well in theory I improved idetools slightly |
23:43:07 | Araq | in practice I might have broken it |
23:43:57 | gradha | haven't bothered yet to merge idetools into the main test case suite because you would ignore it anyway |
23:44:32 | gradha | maybe I should add some fancy reporting for those ugly tests |
23:44:46 | reactormonk | gradha, fancy is always good :-) |
23:44:51 | Araq | diff reporting in the tester would be sweet |
23:45:15 | Araq | in fact, I refuse to release 0.9.4 without this feature of nimbuild |
23:45:35 | gradha | please ellaborate: does that require a persistent "previous test run" somewhere for comparison? |
23:45:44 | reactormonk | yup |
23:45:48 | Araq | yes |
23:46:15 | Araq | in fact |
23:46:18 | gradha | hmm.. sounds barely more interesting than upgrading nimforum, plus I might be able to implement it before dom96 merges the current PRs |
23:46:23 | Araq | every test should track the commit that broke it |
23:47:04 | Araq | extra points if the commit is a link to github's nice diff pages |
23:47:15 | reactormonk | Araq, so you want to add test info to the git commits? |
23:47:32 | Araq | no I want to add commit info to the tests |
23:49:27 | gradha | so how does a nimrod release depend on a feature present in an external package like nimbuild? |
23:50:09 | Araq | I dunno, ask my brain |
23:50:43 | gradha | ok, I'll see what I can do about nimbuild, then I'll ask your brain about making Aporia compilable under macosx |
23:51:13 | * | Endeg quit (Read error: Connection reset by peer) |
23:51:15 | reactormonk | Araq, and where to store the info? |
23:51:28 | Araq | try to bootstrap with --gc:boehm or --gc:none and see if the resulting compiler can compile Aporia please |
23:51:28 | gradha | sqlite? |
23:51:39 | Araq | some crappy.json file? |
23:51:46 | reactormonk | and how do you ship that one around? |
23:51:49 | Araq | we already generate one anyway for nimbuild |
23:52:19 | Araq | and we already ship tests results to the nexus or whatever dom96 called the center |
23:52:53 | gradha | the nexus? starcraft terminology? |
23:53:18 | Araq | the hive |
23:54:18 | gradha | some class names in one of my past projects: SSOverlord, SSQueen, SSZerg |
23:55:10 | gradha | the android port had Overlord, Lurker and Broodling |
23:55:33 | Araq | ah dom96 called it the "hub" :-) |
23:55:59 | gradha | how boring, my SSOverlord class has a ventral_sacs property |
23:57:44 | gradha | so for nimbuild I would add a storage of commit hashes and their test results |
23:57:56 | gradha | whenever the test suite runs, it stores for that commit the result of each test |
23:57:58 | Araq | "the following code is extremely slow and complicated." lol |
23:58:12 | gradha | with that info, you grow a map of points in time when tests worked |
23:58:25 | gradha | linking those through git commit history you know when stuff presumably broke |
23:58:36 | gradha | and from that info you theorically get those diffs you want |
23:59:03 | gradha | does the current nimbuild always build the current commit or can you tell it to build an arbitrary one? |
23:59:19 | Araq | well it tracks commit hashes |
23:59:30 | gradha | that would be wanted to go back in time before the feature is implemented, to fill previous entries in time |
23:59:31 | Araq | I don't think it can build anything except the latest |
23:59:58 | Araq | no need to go back in time |