<< 25-06-2013 >>

00:00:08BitPuffinsounds worth to be a core feature though
00:00:13BitPuffinmuch better than case :D
00:00:54dom96I think you will be able to get same functionality with macros :P
00:01:26BitPuffinwell yeah probably
00:02:58EXetoCMaxLineLength* = 80. oh come on, that's ancient :-P
00:04:08reactormonkEXetoC, it just complains
00:04:13dom96BitPuffin: You should try it if you haven't already. I am planning to, but there is always something else to do... :)
00:04:13reactormonkand I gotta say, it's useful
00:04:58dom96EXetoC: You can switch off the warnings
00:05:45BitPuffindom96: well I still haven't tried nimrod even, it looks very interesting though. I've been playing with functional programming though lately (in haskell) and is very impressed with pattern matching's expressiveness (and rust has it too!), but yeah, it could be good enough to write a macro. Maybe such a macro could be added to the stdlib?
00:06:28BitPuffinwhat kind of GC does nimrod use? it's non tracing, but then what is it? ref counting?
00:06:29dom96BitPuffin: Yeah, i'm sure Araq would happily allow it into the stdlib :)
00:08:25BitPuffinwhat opengl version is the one in the stdlib?
00:08:36dom96BitPuffin: http://build.nimrod-code.org/docs/gc.html
00:09:28EXetoC"opengl New wrapper for OpenGL supporting up to version 4.2."
00:09:42BitPuffinhmm, too bad it's not 4.3 :P
00:09:59EXetoCya, we all need that :>
00:14:02dom96BitPuffin: You are welcome to update it and create a pull request :P
00:14:18BitPuffinwell I don't even know the language :D
00:14:24BitPuffinand I can't test it
00:14:43dom96learn it!
00:15:56BitPuffinI might!
00:16:05BitPuffinIt's definitely interesting
00:16:09BitPuffinI like the syntax
00:16:19dom96great! :D
00:16:44EXetoCyeah, bracket overload sucks
00:16:55BitPuffinalthough it seems like it's less "safe" than rust from the looks of it
00:17:19BitPuffinalthough I can't back that up
00:18:53dom96I can't say I can comment on that, I haven't given Rust a fair try.
00:19:19dom96EXetoC: hrm?
00:19:45EXetoCdom96: {}()
00:19:54EXetoCtoo much of that in some languages
00:20:29dom96oh, that's what you mean. Yeah, whitespace ftw.
00:21:10EXetoCdom96: the safe subset of Rust requires you to specify the lifetime of objects, which means no accidental accesses to invalidated memory etc
00:25:37*BitPuffin quit (Ping timeout: 248 seconds)
00:26:54dom96ahh, I suppose Rust and Nimrod really differ in that regard, for Nimrod the GC provides safety whereas Rust doesn't use a GC so it needs some other type of safety I guess.
00:26:58*BitPuffin joined #nimrod
00:28:06EXetoCdom96: it does actually
00:28:17dom96However we have an effect system which will provide similar safety to Rust soon AFAIK.
00:28:43BitPuffineffect system?
00:29:18dom96http://build.nimrod-code.org/docs/manual.html#effect-system
00:30:31EXetoCI don't know if the read/write thing is relevant
00:31:10dom96It allows for any type of effect, for example "FUnsafe"
00:31:56dom96(or will allow)
00:31:56BitPuffinhmm
00:31:58BitPuffininteresting
00:32:09BitPuffinso everything will be safe by default?
00:32:14BitPuffinunless you say it's unsafe
00:32:22BitPuffin(desirable)
00:32:54dom96I'm not sure, you would have to ask Araq for the details when he's around.
00:36:59BitPuffinhmm, jsgen?
00:37:07BitPuffin(just watching the compilation)
00:37:20dom96yeah, there is a JS backend.
00:37:36dom96You can make the compiler generate JS code out of your Nimrod code.
00:37:40BitPuffinso you can compile to js?
00:37:41BitPuffinooooh
00:38:30BitPuffinwouldn't these things get easier by using llvm? :D
00:39:04dom96I think the JS backend predates emscripten :P
00:40:11BitPuffinI see :D
00:44:00EXetoCMy high-level glfw3 wrapper should be usable soon
00:44:27EXetoCthere's a glfw2 wrapper, but glfw3 was officially released not long ago
00:44:35BitPuffinis there a regular binding for 3?
00:45:34BitPuffinnimrod should get a package manager
00:45:37EXetoCnah, but I'll add most of the original API tomorrow
00:45:41EXetoCBitPuffin: babel
00:45:42dom96it has one :P
00:45:55BitPuffinit does?
00:46:00dom96what EXetoC said
00:46:19BitPuffinbabel?
00:46:21EXetoC13 packages \o/
00:46:22BitPuffinis it an official one
00:46:24EXetoCya
00:48:52dom96BitPuffin: How did you find out about nimrod? :)
00:49:35EXetoC<
00:49:44*Associat0r quit (Quit: Associat0r)
00:50:01EXetoCI told him that Rust was so may 2013
00:50:05EXetoCdom96: isn't that right?
00:50:13dom96EXetoC: damn right
00:50:20dom96EXetoC: Good job.
00:52:56BitPuffin:D
00:54:20*Associat0r joined #nimrod
00:54:20*Associat0r quit (Changing host)
00:54:20*Associat0r joined #nimrod
00:55:31BitPuffindoes the js backend use asm.js?
00:55:41dom96not yet
00:56:29BitPuffinEXetoC: why not just use the c2nim thing for glfw?
00:57:27EXetoCit didn't work. or maybe I had to expand the macros
00:57:34BitPuffinhm
00:57:36EXetoCafter removing the GL includes anyway
00:59:02*DAddYE quit (Remote host closed the connection)
00:59:03EXetoCoh well, it's a simple api
01:01:19BitPuffinwould be cool to have an allegro binding
01:01:52BitPuffinnimrod can infer types right?
01:02:03EXetoCyes
01:07:02BitPuffingood
01:07:10EXetoCdom96: what does 'del' do, and what does 'delete' do?
01:07:12EXetoCno cheating
01:07:23dom96hehe
01:07:57dom96er. 'del' is faster I believe and does not keep order of the sequence.
01:08:11dom96'delete' is slower and does keep the order
01:08:17EXetoChence the short name, yeah? :>
01:08:45dom96yep, shorter = faster :P
01:09:19EXetoCan even faster version would be called d
01:09:19BitPuffinthe sequence?
01:10:12dom96dynamic array
01:11:16BitPuffinaha
01:11:24BitPuffinwell I don't know what delete does so hehe
01:11:32BitPuffincan nimrod slice arrays?
01:12:33EXetoCproc `..`*[T](a, b: T): TSlice[T] {.noSideEffect, inline.} =
01:12:54EXetoCproc `..`*[T](b: T): TSlice[T] {.noSideEffect, inline.} =
01:13:14BitPuffinerr
01:13:19dom96I know you can slice strings, not sure if you can slice arrays.
01:13:36dom96But if you can't, it's probably a procedure away.
01:13:40BitPuffinawh, no if expressions, only statements
01:13:41EXetoCnvm that creates an interval
01:13:52EXetoCBitPuffin: false
01:14:13BitPuffinwell why does the tutorial say statement then?
01:15:05*XAMPP joined #nimrod
01:15:35EXetoCI don't know, but I realized yesterday that they were expressions
01:15:54dom96because the statement/expression unification happened recently
01:16:14EXetoCvar a = if true: 0 else: 1
01:16:26EXetoCthough with the correct indentation and what have you
01:16:41EXetoCor maybe that works
01:16:52dom96that would work, yes.
01:17:31EXetoC"proc `[]`*[Idx, T](a: array[Idx, T], x: TSlice[int]): seq[T] ="
01:17:49dom96there you go
01:17:54BitPuffinEXetoC: dude are you trying to scare me away with those devil lines :D
01:18:10BitPuffinI've only reached the case statement
01:18:36dom96Those lines are holy, they are a work of angels :P
01:19:03BitPuffinwell not for a nub
01:19:56EXetoC:-P
01:23:52EXetoCcoding while tired is such a waste of time
01:23:57EXetoClater
01:24:07dom96yeah, I should sleep too.
01:24:09dom96Bye
01:24:28EXetoCgood luck!
01:25:38*EXetoC quit (Quit: WeeChat 0.4.1)
01:28:44BitPuffingnight!
01:33:17*BitPuffin quit (Ping timeout: 268 seconds)
04:22:24*OrionPK quit (Quit: Leaving)
05:21:16*q66 joined #nimrod
06:47:55*XAMPP quit (Ping timeout: 264 seconds)
07:32:45*Associat0r quit (Quit: Associat0r)
07:41:43*Araq_ joined #nimrod
07:48:33*Araq_ quit (Quit: ChatZilla 0.9.90 [Firefox 21.0/20130511120803])
09:12:20*EXetoC joined #nimrod
09:20:37*BitPuffin joined #nimrod
09:24:27*Araq_ joined #nimrod
09:26:58Araq_EXetoC: c2nim's #def expands macros for you
09:27:21Araq_I keep telling people about it, people keep ignoring it ... I wonder why
09:33:01EXetoCI didn't really look into it, but I'll see if that helps
09:38:03BitPuffinblock cock: # har har
09:39:36EXetoChuehue
09:41:03BitPuffinoh hey Araq_! Nice language you got here, we were discussing yesterday about having haskell and rust like pattern matching implemented with macros and then added to some std thing. What do you think? Also we were talking about safety, with the effect system, will it be safe by default so that if you want unsafe stuff you have to mark it as such?
09:46:04EXetoCAraq_: ok that was easy
09:47:31Araq_BitPuffin: I read it by now
09:47:50BitPuffinAraq_: oh, in the logs?
09:48:06BitPuffindidn't realize there were logs :P
09:48:20Araq_I'm still working on a better concurrency system that's safe; it's too early to tell how it will compare to Rust's
09:48:30*Araq_ quit (Read error: Connection timed out)
09:48:46EXetoCquick timeout
09:49:27*Araq_ joined #nimrod
09:49:33BitPuffinwelcome back
09:49:44BitPuffinwhat's the plans for the system?
09:51:21Araq_plan: no crappy message passing, but deadlock and race freedom
09:51:44BitPuffinwoot!
09:51:50Araq_well ... we already have message passing, so it's boring
09:52:30BitPuffinbut deadlocks and races are also boring! :D
09:53:53Araq_btw Nimrod's case objects are more flexible than traditional sum types ... hence pattern matching doesn't work as well for them
09:54:25BitPuffinhow are they more flexible?
09:55:19Araq_you can share branches like so:
09:56:15Araq_ case d: someenum
09:56:51Araq_of valA..valZ: value: int
09:57:01Araq_else: f: float
09:58:50Araq_though it's easy to get very close with a traditional sum type
09:59:49Araq_ (intValue int | floatValue float) * someenum
10:11:57BitPuffinhmm
10:12:00BitPuffinso it's algebraic?
10:20:09Araq_dunno what you mean; sum types are often called algebraic
10:20:57BitPuffinwell that you can pass more than one type
10:22:55EXetoCat runtime that is
10:23:12Araq_you sound confused :P
10:23:24Araq_my example is an object declaration, so it's 1 type
10:23:30Araq_*is in an
10:23:50BitPuffinwell I'm still just learning the basics of the language
10:24:28BitPuffinis enum like rust's enum or is it like say Java enum?
10:24:52BitPuffinis rust they are like structs that have more than one representation
10:24:58BitPuffinin*
10:25:11BitPuffinand in other languages it's just constants
10:26:44EXetoCthey're not always tagged in Rust, but yes they can be
10:26:47Araq_just constants but strongly typed
10:26:54Araq_bbl
10:26:57*Araq_ quit (Quit: ChatZilla 0.9.90 [Firefox 21.0/20130511120803])
10:27:22EXetoCthey can be homogenous as well, but it's currently very limited because the type must be int
10:32:16BitPuffinwhy's that?
10:33:12EXetoCI think it's just an arbitrary limitation. I think it might be replaced by a library alternative though
10:33:26dom96hello
10:34:34EXetoChi
10:34:42*Endeg quit (Read error: Connection reset by peer)
10:34:54BitPuffinbrb walk dogs
11:16:53EXetoCwas it safe out there?
11:19:32EXetoCwhat will be your primary language? I won't use D anymore for various reasons
11:37:22*Endeg joined #nimrod
12:56:48BitPuffinEXetoC: haven't decided yet
12:56:57BitPuffinI was thinking it was gonna be rust
12:57:03BitPuffinbut nimrod is interesting
12:57:47BitPuffinone thing that makes nimrod very suitable for games is that it compiles to C
12:58:02BitPuffinwhich means that you could make console ports of your games
12:59:22BitPuffinand you could make webgl ports since it compiles to javascript
12:59:43BitPuffinEXetoC: why won't you use D?
13:07:27EXetoCthe syntax is verbose, and some bad language decisions have been made
13:08:08BitPuffinlike what?
13:08:11EXetoCI don't think Walter has used it for anything other than trivial utility applications
13:09:05EXetoCso that would partly explain why
13:09:28BitPuffinthat's where rust shines through, the browser engine they are building to test the language
13:10:11BitPuffinbut what language decisions do you mean?
13:10:42dom96is the D compiler not written in D?
13:12:33BitPuffinno
13:12:34BitPuffinC++
13:12:36BitPuffin:/
13:13:02BitPuffincompiler would be way less buggy if it was written in D
13:15:38EXetoCBitPuffin: because of lack of built-in tuples, bad invariant semantics, silly default constructor limitations for structs, the need for Rebindable etc
13:17:50BitPuffinEXetoC: there is built-in tuples aren't there? or is it in the stdlib?
13:17:57EXetoCit would be an improvement over C++ had the implementation not sucked, but I'm too much of a language enthusiast to not use these more interesting languages instead
13:18:21EXetoCBitPuffin: yes, you need to use std.typecons.{T,t}uple
13:20:31EXetoCand then you have these version statement issues that are supposed to keep conditional compilation simple (at least compared to C macros that are "too complex")
13:21:13EXetoCbut you often end up defining enums inside those blocks instead, just as a way to avoid 'version' as much as possible :>
13:21:35EXetoCok enough hating. I don't think I need to say more
13:24:32BitPuffinEXetoC: hrm yeah, nimrod seems kind of programmable
13:25:46EXetoCyep https://github.com/dom96/jester
13:28:38dom96Today is the day, the day of the framework benchmarks :D
13:28:55EXetoCI'm working on a library implementation of an invariant construct. I shouldn't need more than 40-50 lines of code for my first impl
13:29:35EXetoCdom96: do you think you'll win? :>
13:29:50dom96I doubt it hah
13:30:27BitPuffinEXetoC: how's the glfw stuff coming around?
13:30:51dom96but hopefully it will bring some fame to Nimrod.
13:31:51EXetoCBitPuffin: it should be usable at the end up the day
13:32:08EXetoCthe high-level wrapper that is. the 1:1 wrapper has already been generated
13:32:10BitPuffinit better be, or else! ;D
13:32:29BitPuffinyou mean a nimrodized wrapper?
13:32:59EXetoCyes
13:34:12BitPuffinhmm, cool!
13:36:00EXetoCjust enums instead of separate constants and then type-safe arrays basically
13:37:00EXetoCoh, and automated error handling by default (exceptions)
13:37:01BitPuffinarrays?
13:37:06BitPuffinoh cool
13:37:14BitPuffinhave you also adapted the parameters?
13:37:20EXetoCI say that, because many errors are fatal anyway, so you might as well not handle them :>
13:37:21BitPuffinso that it's a C string etc
13:37:28BitPuffinif that's even a problem with nimrod
13:37:48EXetoCnimrod strings are implicitly convertible to 'cstring'
13:38:18EXetoCthe interface will still use nimrod strings though
13:38:45BitPuffincool
13:39:09BitPuffincan any two parameter proc be called infix using `` like in haskell?
13:42:05EXetoCproc `?`(x:int): bool = x == 42
13:42:18EXetoCoops, misread
13:42:33EXetoCI haven't encountered anything like that yet
13:42:59EXetoCbbs!
13:43:00BitPuffinwell say you have a proc called in
13:43:17BitPuffinproc in(a, b) = blabla
13:43:23BitPuffina `in` b
13:50:24dom96In that case 'in' is a keyword so you would overload the 'contains' function.
13:51:10BitPuffinwell yeah
13:51:13BitPuffinbut you know
13:51:17BitPuffinif it wasn't a keyword
13:51:34BitPuffincan I call any arbitrary two parameter proc infix?
13:52:39dom96I think it has to be an operator
14:01:19BitPuffinhmm
14:01:47BitPuffincan an operator contain regular function letters?
14:01:53BitPuffinlike proc `hey`
14:05:01dom96I don't think so. (Just checked)
14:05:14dom96As soon as I introduce a letter it fails to compile.
14:05:36*comex` joined #nimrod
14:06:51BitPuffin:/
14:06:55BitPuffinshame
14:09:25*XAMPP joined #nimrod
14:11:47*comex quit (*.net *.split)
14:22:47EXetoCit's mostly useful for operators I think, since including the period would be ugly
14:23:34BitPuffinwhy would you use the period?
14:25:09EXetoCwouldn't you had there been no syntax for infix?
14:26:16EXetoC"template `in` * (x, y: expr): expr {.immediate.} = contains(y, x)" this is why you need to overload contains rather than 'in' in case you wondered
14:27:16BitPuffinwell no you'd just call it as y `contains` x
14:30:16EXetoCbut then you have syntax for it
14:36:08EXetoCnevermind, that's not actually how it works. infix and prefix are both supported for operators, so a period wouldn't be needed either way
14:37:36EXetoChow come he didn't go for polish notation? :>
14:40:30*zahary__ joined #nimrod
14:41:34EXetoCor something like 1+3 * 4 = 16, 1 + 3 * 4 = 13
14:43:57dom96I recall Araq considering implementing that ^
14:44:03EXetoCmaybe a macro could do that
14:44:16EXetoCoh
14:44:29BitPuffindoes an enum declaration have to be surrounded by type?
14:44:32dom96I don't think the AST includes that info.
14:45:12EXetoCBitPuffin: I think all type declarations do
14:45:33EXetoCthough you might be able to omit the newline and indentation
14:47:01dom96I don't think you can declare anonymous enums if that's what you mean.
14:48:07*zahary__ left #nimrod (#nimrod)
14:48:20*zahary__ joined #nimrod
14:48:20BitPuffinno I mean if I can do MyEnum = enum a b c
14:49:20*zahary_ quit (*.net *.split)
14:49:24EXetoCdom96: maybe if there was a whitespace node, that'd be omitted for stmt and expr, but not for stmt_ws and expr_ws or something like that
14:50:08EXetoCif stmt is even here to stay. are there statements that are supposed to be expressions, but aren't yet?
14:52:42dom96BitPuffin: oh you mean omitting the 'type' keyword? Yeah, you can't.
14:52:49*comex` quit (Ping timeout: 244 seconds)
14:53:00*comex joined #nimrod
14:54:50dom96EXetoC: I would guess that it's not that easy to add something like that. But I haven't dabbled much with the compiler internals.
14:59:50EXetoCI wonder if one needs to do more than just add a node rather than just ignoring the token
15:06:40EXetoCtype parameters can take values if I'm not mistaken, but is it possible to have them take only values?
15:07:07EXetoCit might be possible to add restrictions using 'when', but that's not part of the public interface, so it wouldn't be self-documenting
15:08:20dom96hrm, this? http://build.nimrod-code.org/docs/manual.html#parameter-constraints
15:11:30EXetoCdom96: I think so. It should just be a matter of specializing based on what enumerator is passed in
15:12:24EXetoCawsum
15:27:25EXetoCI don't even need any of that; I just need a template
15:46:27*JStoker quit (*.net *.split)
15:46:28*Araq quit (*.net *.split)
15:59:33*Endy joined #nimrod
16:12:50*JStoker joined #nimrod
16:12:50*Araq joined #nimrod
16:15:45fowli want to use try: except: as an expression but not in one line
16:15:48fowlis it possible
16:17:07*q66_ joined #nimrod
16:19:53*q66 quit (Ping timeout: 264 seconds)
16:19:54*reactormonk quit (Ping timeout: 264 seconds)
16:19:55*Amrykid quit (Ping timeout: 264 seconds)
16:20:35*Amrykid joined #nimrod
16:21:12*reactormonk joined #nimrod
16:24:49dom96fowl: Perhaps if you indent it properly, I don't know.
16:26:59EXetoCworks with if
16:27:38fowlEXetoC, how
16:28:48fowlthese fail: https://gist.github.com/fowlmouth/5859948
16:29:30EXetoCwell, I know that the parens should be there
16:29:32EXetoClet me check
16:29:36EXetoC*shouldn't
16:30:04fowlhuh you're right
16:30:13fowlthe if works without the parens but the try:except: doesnt
16:33:29*DAddYE joined #nimrod
16:34:07dom96fowl: this works: https://gist.github.com/dom96/c76ae58cbec753b8a187
16:34:33fowldom96, not the same thing
16:34:40dom96yeah, I know.
16:35:39dom96Can't get it to work when assigning to a var.
16:38:43BitPuffinnot sure I understand this notation
16:38:53BitPuffinTIntArray = array[0..5, int]
16:39:06dom96An int array of size 6.
16:39:07BitPuffinit says it's indexed with 0..5
16:39:07fowl0 .. 5 is the range of indexes
16:39:23fowlBitPuffin, in HEAD you can do array[6, int] for the same thing
16:39:50BitPuffinin head?
16:39:54BitPuffinoh git head
16:40:28BitPuffinso you can specify that you index from 89..232?
16:40:57fowlyea
16:41:01dom96You can also specify an enum
16:42:21BitPuffinyep just saw that in tutorial
16:42:25BitPuffinfunky
16:50:24*Associat0r joined #nimrod
16:50:24*Associat0r quit (Changing host)
16:50:24*Associat0r joined #nimrod
16:50:37BitPuffinso there is no built in syntax for slicing a sequence?
16:51:50fowlslicing (copying into a new sequence) is expensive, you are better off to iterate over the range you want to work with
16:52:15dom96yeah, but syntax for it exists.
16:52:25BitPuffinno not copying
16:52:32BitPuffinyou get a pointer to the range
16:52:40BitPuffinat least that's how it works in D
16:53:04fowlthen if you modify the slice you modify the original
16:53:27BitPuffinyes
16:53:31BitPuffinofc
16:54:20BitPuffinit's the point
16:54:35fowlis it? in most languages when you slice a string and modify it, it does not modify the original
16:55:31BitPuffinwell we're not talking strings
16:55:47BitPuffinyou have the choice to dup it ofc!
16:58:49fowlyou have the choice to use `for` and just work on the range you want, without slicing, so..
16:59:23fowlid rather the behavior be consistent between seq/string/other collections
17:02:32BitPuffinhrm
17:02:41BitPuffinwell is there a way to slice and get a pointer explicitly?
17:05:31fowlwell if you take the address of the first and last items you want, you have c++ style "iterators"
17:10:09BitPuffinhmm
17:10:15BitPuffinwell I ment with the slicing syntax
17:10:24BitPuffincan you make it so that you get a reference
17:10:36BitPuffinwithout doing it manually like that
17:10:54fowlprobably
17:11:32fowlcreate some SubSeq[T] type with a pointer to the seq and indexes then cover all of seq's functions for it
17:12:00fowlhttps://gist.github.com/fowlmouth/5860323
17:12:04fowli call it the shiterator
17:12:53*XAMPP_ joined #nimrod
17:13:29*zahary___ joined #nimrod
17:15:24*BitPuffin_ joined #nimrod
17:21:50*zahary__ quit (*.net *.split)
17:21:50*XAMPP quit (*.net *.split)
17:21:50*Endeg quit (*.net *.split)
17:21:50*BitPuffin quit (*.net *.split)
17:21:50*EXetoC quit (*.net *.split)
17:25:57BitPuffin_should I read the manual or the tutorial? I'm confused by the opening words in tutorial pt 2
17:26:30dom96Read the tutorial but do skim over the manual at least.
17:26:47fowl<- still learns things from the manual
17:26:53dom96The manual is pretty easy to understand.
17:27:10*dom96 does too
17:44:36dom96hrm, getTempDir seems to return a path with / as separators when executed in git bash, but in cmd.exe it returns it with \
17:44:55dom96lovely.
17:45:29*EXetoC joined #nimrod
17:48:54Araqfowl: it's not possible for now
17:49:51dom96Araq: I'm just going to replace '/' with DirSep on Windows for those functions, is that fine?
17:50:13AraqBitPuffin_: you can implement D-like slices very easily with the shallow pragma
17:50:51dom96hrm, actually. Maybe Windows doesn't mind path separators mixing, must just be git being silly.
17:51:40Araqthe builtin slice operators return a copy, but it's often easy to optimize away with a TR macro
17:52:11Araqthe stdlib doesn't make use of TR macros at all for now
17:53:51Araqdom96: look at the implementation of getTempDir, it's getEnv"TEMP"
17:54:12dom96Araq: Yeah?
17:55:11Araqmaybe we should call some winapi stuff instead
17:55:41Araqbut %TEMP% should contain \ not /
17:55:57dom96As I said, it doesn't when it's executed in git bash.
17:56:17Araqinteresting
17:56:45dom96The winapi function does mostly the same thing we do.
17:56:58dom96But it does do more.
18:02:25Araqit's also not thread safe
18:02:43Araqwell at least the .NET version claims to be but isn't
18:06:44dom96Araq: Framework benchmarks today!
18:12:56Araqdom96: well? how are the results?
18:13:05dom96They're not out yet :P
18:14:09Araqwell today is almost over
18:14:25dom96timezones, duh.
18:16:47dom96so babel works :D
18:17:01Araqon windows?
18:17:15EXetoCBitPuffin_: are you planning on using glfw for anything?
18:18:00dom96Araq: yep
18:18:45Araqdoes it require git even for packages which don't use git?
18:18:59dom96it now generates .bat file in ~/.babel/bin, I tried generating a script with the .exe extension but as you might imagine it doesn't like that
18:19:18dom96Araq: There are no packages which don't require git.
18:19:41Araqyou can generate an executable with the .exe extension
18:19:53Araqand that's what adrianv proposed
18:20:19dom96oh, I see what he means now.
18:20:55dom96Isn't .bat good enough?
18:21:14Araqin fact, I like it better as it uses less space
18:21:31dom96i'm not sure if file associations will work with .bat though
18:21:56AraqI don't know, I think it does
18:22:02Araqtry it
18:24:57dom96cool, just needed to adjust the bat script a bit so that it passes the cmd line args and it works :D
18:37:20NimBotnimrod-code/babel master 5b45d6b Dominik Picheta [+0 ±1 -0]: Fixes many issues on Windows.... 3 more lines
18:42:08*Endy quit (Ping timeout: 260 seconds)
19:02:25*Sergio965 joined #nimrod
19:11:19EXetoCmeep meep *vroooom*
19:14:16NimBotAraq/Nimrod master 586461a Dominik Picheta [+0 ±5 -0]: Deprecated OSError, and modified it to require an explicit OS error code.... 2 more lines
19:35:41*Associat0r quit (Quit: Associat0r)
19:43:53AraqEXetoC: what do you mean enums are int based? of course they are, that's their point, it's not a sum type
19:50:26EXetoCAraq: in Rust that is
19:50:34EXetoCit can *only* be int of all the primitives that the language has
19:51:11Araqdunno what you mean
19:51:42EXetoCAraq: the enumerators can't be unsigned for example
19:52:03EXetoCanyway, D allows structs to be used for enumerators as long as they're comparable, which is nice
19:52:36Araqnimrod has a concept of an "ordinal" type
19:53:04EXetoCright
19:55:56AraqI still don't get it; traditionally in a sum type the tags/constructors are just symbols, it doesn't make sense to say they are "int based"
19:56:10*Sergio965 quit (Ping timeout: 270 seconds)
19:58:59EXetoCI wasn't referring to sum types just then, but rather just a collection of values
20:00:48EXetoCand Rust's enums can be both tagged and not, in case that wasn't clear
20:04:18dom96argh, they've delayed the benchmarks again ugh.
20:04:27EXetoC:p
20:05:07Araqdom96: that's because your program is still running ... :P
20:06:33dom96Araq: Maybe it never got to run, it's probably still compiling... :P
20:07:15Araqwell played
20:10:27BitPuffin_EXetoC: yes I am
20:18:00NimBotAraq/Nimrod master d112aa9 onionhammer [+0 ±1 -0]: Fix: OpenSSL on Windows... 6 more lines
20:18:00NimBotAraq/Nimrod master 342d57f Dominik Picheta [+0 ±1 -0]: Merge pull request #489 from onionhammer/patch-1... 2 more lines
20:37:32BitPuffin_EXetoC: a game!
20:37:39BitPuffin_might actually use nimrod for it
20:37:45BitPuffin_as an experiment :)
20:38:37BitPuffin_is there any bindings to, say portaudio?
20:46:25EXetoCI haven't seen such a lib. I'm using libao
21:00:15dom96we should tell gradha to play this on his oculus rift: https://developer.oculusvr.com/forums/viewtopic.php?f=42&t=1539
21:09:37BitPuffin_EXetoC: libao?
21:10:02EXetoCBitPuffin_: http://www.xiph.org/ao/doc/
21:10:16BitPuffin_ooh
21:10:25BitPuffin_didn't know xiph had an audio api
21:10:25BitPuffin_cooool
21:10:30BitPuffin_is it any good?
21:10:59EXetoCit makes noise when I feed it stuff. good enough for me :>
21:11:23BitPuffin_hehe
21:12:41BitPuffin_I wonder how they compare
21:12:48BitPuffin_EXetoC: can you use it to make 3d audio?
21:14:57EXetoCBitPuffin_: you'd have to implement that yourself
21:15:15EXetoCwhich you can if you select anything other than mono, and then do a little vector math, I guess
21:16:50BitPuffin_yeah same with portaudio afaik
21:16:58BitPuffin_but I just wanted to know if it is possible
21:17:07BitPuffin_EXetoC: so there are nimrod bindings to libao?
21:18:34BitPuffin_can you use it to play procedurally generated sound?
21:20:31EXetoCyes. you give it data, and then it blocks for however many seconds the length corresponds to
21:21:12EXetoCBitPuffin_: only my own lib, which I haven't made available through github yet
21:23:50BitPuffin_I see
21:23:58BitPuffin_can it play multiple sounds?
21:25:42EXetoCyep
21:26:15EXetoCI use a single device for that, but the easiest way is to just create multiple devices
21:30:34EXetoCso yeah, pretty much no bells and whistles
21:36:33EXetoCI'll gist it in a minute
21:44:03EXetoChttps://gist.github.com/EXetoC/5862718
21:44:19*q66_ quit (Remote host closed the connection)
21:46:46EXetoCthe destructor pragma doesn't always work though, but that shouldn't be an issue; and line 108 needs error handling, but that's a minor issue
23:00:40NimBotAraq/Nimrod master ad9e3ff Dominik Picheta [+0 ±3 -0]: Fixed OSError deprecation warnings.
23:14:06dom96http://forum.nimrod-code.org/t/163/2#841
23:15:08dom96Everyone, start creating babel packages now!
23:15:45fowldom96, if i make nake a binary can i still import it as a lib
23:17:31dom96Not currently.
23:17:42dom96But I suspected someone will want that.
23:18:09dom96I guess it's not hard to support.
23:19:20dom96Feels dirty though.
23:20:06dom96I think other package managers allow it.
23:22:32fowlnake has use as both
23:24:20dom96yeah, sure. I can't think of any scenario where it would cause bother.
23:24:25*dom96 will implement it
23:30:26NimBotnimrod-code/babel master 30d3177 Dominik Picheta [+0 ±1 -0]: Binary packages can now be used as libraries by other binary packages.
23:30:38dom96fowl: There you go, I haven't tested it much though.
23:42:28EXetoChow should C buffers be indexed? I'm sure there's a way that doesn't involve two casts
23:42:31EXetoCnot directly anyway
23:47:25fowldom96, cool, ill do so later
23:47:28fowlthanks
23:48:19dom96ugh, execProcess should really return the exit code too I think.
23:49:04fowlEXetoC, instead of sometype* (ptr sometype) use ptr array[50000, sometype]
23:55:58fowlif i understood you right