<< 18-03-2014 >>

00:04:25*seubert joined #nimrod
00:18:29*lanior joined #nimrod
00:23:23BitPuffinDemos_: why column major?
00:23:30BitPuffindoesn't make any difference what so ever
00:23:44BitPuffinother than forcing you to write all the equations backwards
00:24:10Demos_I know. But that is how have been keeping everything. And no, if I write ABx I expect A(Bx) not (AB)x
00:24:13BitPuffinbut yeah there is no extra data stored in any thing
00:24:28*skyfex quit (Ping timeout: 246 seconds)
00:24:35BitPuffinDemos_: well row major is more intuitive
00:24:35Demos_col major has nothing to do with multiplication order
00:24:50Demos_not for me.
00:24:53BitPuffinbut yeeah I have considered adding so that majorness is a parameter
00:25:03BitPuffinwell for you it's not about intuition
00:25:06BitPuffinit's about habit
00:25:09Demos_I mean not a big deal, you can transpose when you send it to the GPU
00:25:19BitPuffinwat
00:25:19Demos_true
00:25:24BitPuffinyou don't need to transpose shit
00:25:43Demos_yeah you do, unless you tell your GPU that the stuff coming in is row major
00:25:55BitPuffinwell, unless you write your operations backwards in the shaders
00:25:57BitPuffinthen yeah
00:26:00BitPuffinyou need to transpose
00:26:15BitPuffinwell you need to tell the GPU how they are coming in anyway
00:26:19Demos_if you write A * B * x where A,B are mats and x is a vec what do you expect
00:26:21BitPuffinotherwise it won't know how to store them
00:26:44BitPuffinwell the point is, if you write x * A * B in your shader and on the client you don't need to transpose
00:26:51BitPuffinthe GPU will still need to know how to store them though
00:26:53*skyfex joined #nimrod
00:26:57BitPuffinbecause each GPU stores them different
00:27:10BitPuffingot nothing to do with GL being col major or anything, that's bullshit legacy talk
00:27:13Demos_both opengl and direct3d will assume colmajor storage unless you prod them
00:27:28BitPuffinpretty sure d3d assume row major
00:27:32Demos_nope
00:27:37BitPuffinalthough I haven't used it but so I hear
00:27:55BitPuffineither way, some GPUs store row major and some store col major
00:27:56Demos_d3d9 does, I think 10 (or maybe 11) is colmajor with a pragma like thing if you want row majorness
00:28:10BitPuffinthere is no advantage in terms of performance to picking one
00:28:20BitPuffinbecause the GPU will transpose to its internal storage anyway
00:28:37BitPuffinand unless you know what hardware you are working with exactly on all deices it's gonna run on there is no win in col major
00:28:38Demos_well for me it is just that I want everything following one convention
00:28:43BitPuffinonly harder to write literals
00:29:05BitPuffinwell what's stopping you if you use row major in shaders and in client code
00:29:06BitPuffin?
00:29:11BitPuffinthen it is the same convention
00:30:49BitPuffinlook if you check the PAST of linagl you'll see that it used to be col major
00:30:57Demos_nothing I guess, just habit. I was rewriteing some c++ code that used eigen with colmajor storage, and I did not want to change anything to reduce bugs. Besides linagl failed to compile so I had to write my own anyways
00:31:06xenagiBitPuffin, what's Nimrod's GPU support (OpenCL, CUDA, etc..)
00:31:07BitPuffinbecause I had gotten the wrong idea that it was better
00:31:12xenagi:P
00:31:36BitPuffinbut then I realized that the only thing that changes in reality is the code order
00:31:43BitPuffinand it reads more like the rest of the code with the row major way
00:31:56BitPuffinand I can write vectors in code more easily
00:32:12Demos_Eigen uses some horrable operator,() overloading to make initialization look good...
00:32:48BitPuffinDemos_: I mean when you write a vector literal then it's basically a row vector, so why wouldn't you wanna have it like that, makes it more readable, instead of writing it as a row in code, since nothing else is possible without enormous pain and then pretending it is a column
00:32:55BitPuffinxenagi: we have opengl
00:33:00xenagi:O
00:33:06BitPuffinxenagi: don't think there is CL or CUDA, but if you wanna bind it that would be sweet
00:33:12*xenagi is googling
00:33:32BitPuffinDemos_: yeah again, linagl is just a few bugs away from its next release
00:33:33xenagiBitPuffin, I am very interested in porting CUDA to Nimrod, but I'm lightyears from that :P
00:33:36BitPuffinwhich makes it a lot nicer to use
00:33:40xenagibinding*
00:33:42xenaginot porting lol
00:33:48BitPuffinxenagi: haha was just about to correct you :P
00:33:57BitPuffinit's not that difficult
00:33:57Demos_it /is/ convention, and I choose colmajor. I guess changeing it all would be less pain that sorting out all my hadedness issues was
00:34:11BitPuffinDemos_: it's not convention
00:34:12Demos_BitPuffin: compiler bugs?
00:34:29BitPuffinsome graphics books use col major, some use row
00:34:37Demos_but /that/ is convention
00:34:50BitPuffinI get used for both for literature and then use what looks best in code, ie row
00:34:52Demos_storage order is not quite the same as the representation when you print the vector
00:35:04BitPuffinDemos_: well there is no storage convention either
00:35:07BitPuffinthat's just a lie
00:35:21Demos_if I have a vec3 I really prefer to see a column "printed" even though the storage is the same no matter what
00:35:33BitPuffinyou might say "well legacy GL stored it col major" and then yeah maybe it told you it did but internally it might have been row major
00:35:54Demos_I dont really give a shit about legacy openGL
00:35:55BitPuffinwell it's really when you do matrices it starts to differ
00:35:59BitPuffinme neither
00:36:00Demos_yeah
00:36:04BitPuffinso why are you saying it's convention
00:36:13BitPuffinonly legacy GL brainwashed people think that
00:36:17BitPuffinand they are wrong even then :P
00:36:24BitPuffinbut if it makes you happy
00:36:41BitPuffinwhen you multiply a vector like m*v, v is interpreted as a col
00:36:45BitPuffinjust like glsl
00:37:05BitPuffinjust that the projection matrices etc currently generates with row major convention
00:37:25Demos_I care much more about the way matrix multiplcation works than I do about actual storage order
00:37:35BitPuffinso all you really need to do in order to be stuck in your old grumy ways is to use those matrices transposed, with the vector multiplying into the ass instead
00:38:02BitPuffinso if that's the case
00:38:06Demos_now that I can not deal with. graphics books may use row major but it is much more rare in math
00:38:16Demos_I mean I can transpose em
00:38:24BitPuffinthen I think ABv is vBA in linagl
00:38:34Demos_yeah... no
00:38:38BitPuffinif AB is transposed
00:38:44BitPuffinwhich they are if you do so from the start
00:38:54BitPuffinie when you get the projection blabla and the translate blabla
00:39:10BitPuffinif you just transpose them first and then use them regularly it should probably be the same
00:39:21BitPuffinI can't see why it wouldn't hold up
00:39:26Demos_I think this conversation has shown why I just picked set of conventions and made sure everything was in those
00:39:33BitPuffinalthough it's pretty late so my mind might be playing tricks
00:39:42fowlmatrixes are confusing
00:39:49Demos_it sucks when you use the wrong convention twice and things /almost/ work
00:39:51BitPuffinDemos_: I don't see how but okay
00:40:02BitPuffinthe wrong convention? lol
00:40:12BitPuffinit's like you didn't even listen :( typing wasted
00:40:16Demos_one different from your mental convention
00:40:37Demos_or different from the convention of the rest of your app
00:40:44BitPuffinwell eitherway
00:40:53BitPuffinlike I said you should be able to use it as if it was col major
00:41:06BitPuffinif you transpose the base matrices it provides
00:41:09BitPuffinie translate etc
00:41:29Demos_it should be an option
00:41:42BitPuffinyeah I've considered making it such and it's not off the list
00:41:45BitPuffinjust not high priority
00:41:47Demos_also storage order and the way multiplication works should be seperate options
00:42:03BitPuffinwhat do you meant the way multiplication works
00:42:30Demos_like ABv vs vBA
00:42:31BitPuffinmatrix * matrix multiplicaion is not defined separately for different conventions you goof :P
00:42:35BitPuffinwell no
00:42:43BitPuffinbecause it's already doing exactly what glsl does
00:42:59BitPuffinvA doesn't work if v is a col vector
00:43:10BitPuffinand Av doesn't work if v is a row vector
00:43:16Demos_but BA and AB do
00:43:23Demos_so if they are square...
00:44:10BitPuffinyeah I know, then if you'd be using the column major version you would do BA
00:44:12*Matthias247 quit (Read error: Connection reset by peer)
00:44:12BitPuffininstead of AB
00:44:21BitPuffinand do BAv
00:44:34BitPuffinpoint is, you don't need to add anything extra to the multiplication parts
00:44:52BitPuffinit comes down to the "primitive" matrices
00:45:03BitPuffinlike for transformation and stuff
00:45:06Demos_no but then BAv is the same as vBA for row major right?
00:45:42BitPuffinif you use col major for BAv primitive matrices and use row major primitives for vAB it's the same yes
00:46:10Demos_I guess I care about using col major primitives then
00:46:17BitPuffinexactly
00:46:22BitPuffinwhich is what I've been saying
00:46:24BitPuffinfor like years
00:46:28BitPuffindecades even
00:46:47BitPuffinno but yeah, the way you can do that now is to just transpose the primitives
00:47:07Demos_which is fine... I guess
00:47:10BitPuffinbut eventually I'd want them separate types so that they are not mixed by mistake
00:47:21*DAddYE quit (Remote host closed the connection)
00:47:23Demos_yeah, that would be good
00:47:37BitPuffinsimple enough to add
00:47:52BitPuffindoes generic parameters take default values?
00:47:56*DAddYE joined #nimrod
00:47:59BitPuffinif not I probably wanna wait for that
00:48:21Demos_not sure, but you can just define all the TVecXT stuff to use the default
00:48:26EXetoCBitPuffin: yes. possibly without the ability to constrain
00:48:35fowlhm
00:48:48Demos_could do it with a static[int] bitflag
00:48:50BitPuffinEXetoC: referring to?
00:49:06BitPuffinDemos_: yeah but I want a default value for it
00:49:30fowldid you try it BitPuffin
00:49:44BitPuffinso type TMatrix[T; R, C: static[int], rowmajor: = true]
00:49:46BitPuffinfowl: no not now
00:49:47EXetoCI don't know if you can for actual values. I wouldn't be surprised if it didn't work yet
00:49:49BitPuffingonna sleep soon
00:49:55Demos_dun know. I gotta go, but I think we have established that being explicit about both storage order and actuall primitive convention is important
00:50:43Demos_*actual
00:50:47BitPuffinDemos_: well I had made up my mind about that a long while back, but yes it's good that it is clear to everyone, unfortunately the only way you can do col major style now is "unsafe" because you might mix by mistake, but if you are using a convention already I find that highly unlikely
00:51:31Demos_it makes the library much eaiser to use, and means you can sorta "set and forget"
00:51:58BitPuffinDemos_: exactly
00:52:01*DAddYE quit (Ping timeout: 240 seconds)
00:52:19Demos_I have spent way too much time tracking down bugs that were because of two conventions like this that almost canceled each other out but not quite
00:52:39BitPuffinDemos_: It is pretty stinking rocking already, I believe some of the stuff I had to compile out with when false will work with some of the recent bug fixes
00:52:51BitPuffinie N-dimensional operations that I think are not even found in most libs
00:53:08BitPuffinlike determinant etc
00:53:38BitPuffinif you look at D's library, gl3n, it does have generic types just like linagl, but determinant is hardcoded
00:53:47BitPuffinso it only supports certain sizes
00:53:52BitPuffindon't know about eigen though
00:53:57BitPuffinpretty sure glm doesn't have it
00:54:12VarriountMan, the nimrod forum thread discussing a switch to using google groups is very... heated.
00:54:15BitPuffinmabye some obscure scientific python lib too, but not something meant for opengl :P
00:54:24dom96xenagi: Araq wrapped OpenCL recently
00:54:35xenagiorly? o.0
00:54:46dom96nimrod-code/opencl
00:54:50xenagi:D
00:54:52xenaginice
00:56:06BitPuffinDemos_: soon I'll also add geometric primitives :D
00:56:11BitPuffinlike rays, spheres etc
00:56:13dom96good night
00:56:58BitPuffinAABB
00:57:07BitPuffinyou name it yo
00:57:07*Demos_ quit (Ping timeout: 264 seconds)
00:57:54OrionPKthen opencl wrapper need some more examples
00:59:27BitPuffinxenagi: get on it
00:59:44xenagilol
01:05:17VarriountWhat practical things do people use opencl for?
01:05:45BitPuffinVarriount: computing things
01:06:13BitPuffinsuch as gaussian blur
01:06:56BitPuffinbelieve it's fairly used in image processing at least
01:09:21BitPuffinVarriount: maybe in some non-realtime rendering too probably
01:10:42DemosEigen kinda has the works
01:10:44BitPuffinhttp://www.luxrender.net/wiki/index.php?title=Luxrender_and_OpenCL
01:11:04BitPuffinthe works?
01:11:10Demosall the things
01:11:39Demosdecompositions, determinants, block operations, various solvers
01:12:18BitPuffinfor any size?
01:13:43BitPuffinlol
01:13:51BitPuffinLinagl - size doesn't matter
01:14:20Demosprobably, with specializations for special optimized algorithms when approperate
01:14:45BitPuffinDemos: yeah will probably keep hard coded versions for the usual sizes
01:15:00Demoslike eigen you can say matrix.row<2>() and it will give you the 2nd row, and it manages NOT TO COPY it
01:15:34DemosEigen is awesome
01:16:05EXetoCno copy? sounds innovative
01:16:49BitPuffindoesn't sound safe
01:18:36BitPuffinwhat about the kids
01:19:10Demosthey are good at safety
01:19:28Demosalmost every error is compile time, others are runtime with a good assert message
01:20:39fowlwhat about the kids?!
01:58:59*DAddYE joined #nimrod
02:12:49*yzzyx joined #nimrod
02:14:11*yzzyx left #nimrod ("ERC Version 5.3 (IRC client for Emacs)")
02:14:51*q66 quit (Quit: Leaving)
02:19:13*DAddYE quit ()
02:37:08*brson quit (Ping timeout: 246 seconds)
03:15:21fowli killed the convo. sry.
03:41:25xenagi...
03:41:38xenagiit's just two awkward now
04:00:21DemosI really like Eigen. It showcases how c++'s template system may be ad-hoc and strange and syntax heavy but at the end of the day it can get the job done really well
04:09:57*xenagi quit (Quit: Leaving)
04:13:33*Demos quit (Read error: Connection reset by peer)
04:30:24Skrylarwelp. gimp.org seems to be down
04:46:08*renesac quit (Ping timeout: 265 seconds)
05:00:06*renesac joined #nimrod
05:09:43renesacBitPuffin, numpy stores data in row major order, so in this case it is a plus for interoperability w/o transposing back and forth.
05:11:13*superfunc joined #nimrod
05:12:32renesacoh, it also supports column major (or 'asfortranarray' as they say)
05:13:11renesacbut by default it is row-major
05:13:56renesachttp://stackoverflow.com/questions/17954990/performance-of-row-vs-column-operations-in-numpy
05:20:42*zielmicha joined #nimrod
05:28:43*BitPuffin quit (Ping timeout: 264 seconds)
05:29:06Skrylari should learn matrix math :\
05:33:28fowl"neo, multiply these matrix for me"
05:36:28*superfunc quit (Ping timeout: 245 seconds)
06:04:27*bearg joined #nimrod
06:20:14Skrylarfowl: you think those are opcodes you're beathing?
06:52:53*skyfex_ joined #nimrod
06:52:54*skyfex quit (Read error: Connection reset by peer)
07:18:45*skyfex_ quit (Quit: Computer has gone to sleep.)
07:19:22*skyfex_ joined #nimrod
08:09:44*Matthias247 joined #nimrod
08:10:54*Matthias247 quit (Client Quit)
08:56:09*silven joined #nimrod
09:27:03*Ransel joined #nimrod
09:29:28*BitPuffin joined #nimrod
10:13:38*jbe_ joined #nimrod
10:36:03*Ransel quit (Ping timeout: 245 seconds)
10:50:39BitPuffinrenesac: well ha! :D
10:50:45BitPuffingood decision on their end
10:54:11BitPuffinrenesac: I'm not really sure their row vs col major thing is fair though, since numpy probably introduces extra overhead when converting to col major
10:54:20BitPuffinalthough I might be wrong
10:54:32BitPuffinanyway it really just depends on what the hardware likes I guess
10:54:52Araqhi bearg welcome
10:55:25AraqBitPuffin: hw likes whatever you access in a cache-friendly manner
10:55:32BitPuffinyep
10:56:39BitPuffinI dunno I guess adding a matrix where rows > cols is faster with row major and adding matrices where cols > rows is faster with col major
10:56:55BitPuffinor hrm
10:56:58BitPuffinyeah
10:57:03BitPuffinat least if you traverse them correctly
10:57:17BitPuffinnot sure
10:57:23BitPuffinguess I'd have to bench to know for sure
11:00:27BitPuffinhmm Araq, if I were to optimize some of the procs in nimrod with inline assembly, how would I deal with stuff like some CPUs supporting SIMD and some not?
11:01:41Araqoptimizing with TR macros is likely to give more bang for the bucks
11:02:12Araqthe trivial for loops are SIMD'ed by the C compiler already, check the assembler output
11:02:13BitPuffintrue
11:02:42Araqor rather add __atttribute__((vector)) or whatever
11:02:51Araqit is called
11:03:36Araqthe .codegenDecl pragma perhaps works for that
11:03:43Araqif not, file a feature request
11:09:14BitPuffinwell hopefully it does
11:09:23BitPuffinI guess I'll investigate if linagl performs poorly
11:09:27BitPuffinI doubt it will
11:11:27BitPuffinbtw have you seen this? http://demo.yasp.me/
11:14:57Araqno
11:15:14Araqbtw have you seen my jump optimizer in my vm?
11:18:35*easy_muffin joined #nimrod
11:19:19Araqhi easy_muffin are you BitPuffin ?
11:19:28*Araq has asked this before ...
11:19:29easy_muffinNope
11:19:44Araqprove it!
11:19:51easy_muffinhow?
11:20:28BitPuffinyeah how?
11:20:41BitPuffinAraq: no I haven't, is it sweet?
11:20:54easy_muffinHey BitPuffin are you easy_muffin?
11:21:05Araqhmm, say something BitPuffin never would say
11:21:22easy_muffinI am easy_muffin
11:22:06BitPuffineasy_muffin: I am bitpuffin, but I heard easy_muffin is BitPuffin
11:22:13Araqhmm alright
11:22:24*Araq believes easy_muffin
11:22:27BitPuffinAraq: something BitPuffin would never say, you are a funny guy
11:23:10AraqI also have the "Dr Hippert" syndrome
11:24:23AraqBitPuffin: it's delicious
11:24:57Araqit also mutates state (evil! evil!)
11:26:40BitPuffin:O!
11:26:42BitPuffinHOW DARE YU
11:30:41EXetoCno u
11:30:45BitPuffinyu!
11:38:20EXetoCdid I just perform a module/enumerator comparison in python? interesting
11:55:08*Ransel joined #nimrod
12:01:28*Ransel quit (Ping timeout: 245 seconds)
12:07:40*phI||Ip quit (Read error: Operation timed out)
12:08:58*silven_ joined #nimrod
12:09:14*silven quit (Ping timeout: 252 seconds)
12:09:31*psquid quit (Ping timeout: 264 seconds)
12:11:34*phI||Ip joined #nimrod
12:13:40BitPuffindoes digitalocean.com work for you guys?
12:15:56Araqno
12:16:41BitPuffinweird
12:16:52BitPuffindownforeveryoneorjustme says it's up lol
12:17:22Araqdownforeveryoneorjustme is lying
12:19:04BitPuffingood
12:20:09rixxdigitalocean.com works over here
12:20:21BitPuffinwhere you at?
12:20:26rixxGermany
12:20:31BitPuffinbut so is Araq lol
12:20:40BitPuffinoh
12:20:44BitPuffinit's only because now it is up
12:20:46BitPuffin:P
12:21:22EXetoCdifferent tubes
12:21:25EXetoCprobably
12:21:57EXetoCit connects with mine
12:22:03*psquid joined #nimrod
12:22:30BitPuffinit's a series of toobs
12:54:17*BitPuffin quit (Quit: WeeChat 0.4.3)
12:55:44*BitPuffin joined #nimrod
12:57:05BitPuffinlol
12:57:12BitPuffinI just set the mac display to it's real resolution
12:57:20BitPuffinwhich without third party tools apple doesn't let you do
12:57:22BitPuffinholy shit
12:57:24BitPuffinso much space
12:57:26BitPuffinlove this
13:20:25*Ransel joined #nimrod
13:28:39*zahary quit (Read error: Operation timed out)
13:39:17EXetoCBitPuffin: how stupid. especially if it can't even detect the max res
13:42:35*darkf quit (Quit: Leaving)
13:48:01*easy_muffin quit (Ping timeout: 240 seconds)
14:17:44BitPuffinEXetoC: yeah I know, but now that I have full res it's awesome
14:22:18*lanior quit (Ping timeout: 245 seconds)
14:29:53*clovis joined #nimrod
14:38:33*easy_muffin joined #nimrod
14:38:39*easy_muffin quit (Remote host closed the connection)
14:41:37*awestroke joined #nimrod
14:59:46*bearg quit (Quit: Leaving.)
15:08:44*Endy joined #nimrod
15:09:22BitPuffinis convention for constructors still initFoo and newFoo for stack and heap types respectively?
15:17:29*[1]Endy joined #nimrod
15:20:49*Endy quit (Ping timeout: 240 seconds)
15:20:49*[1]Endy is now known as Endy
15:34:47BitPuffinAraq: is there a way to partially define parts of a type in one place and keep on going later on? The reason I'm asking is because I want to define my public fields of an object once, but the private fields may vary depending on what platform it is running, so I want to add those separately for each target
15:42:30*Demos joined #nimrod
15:53:18*bearg joined #nimrod
16:06:46*dffd joined #nimrod
16:07:04*dffd quit (Client Quit)
16:12:01*Demos quit (Ping timeout: 240 seconds)
16:18:03*Varriount|Mobile joined #nimrod
16:18:20*DAddYE joined #nimrod
16:18:52Varriount|MobileAnyone here know a good way for me to write the equivalent of a blog post, without actually setting up a blog?
16:19:14*clovis quit (Ping timeout: 245 seconds)
16:19:28Varriount|MobileI'm interested in writing up a blog post on using opengl in nimrod
16:21:18Varriount|Mobile(Feel free to respond even if my mobile connection disconnects, Ill read the logs on my desktop connection)
16:26:21OrionPKVarriount|Mobile forum post?
16:26:47OrionPKor a self post here: http://www.reddit.com/r/nimrod
16:27:33*Demos joined #nimrod
16:31:35Varriount|MobileHi Demos.
16:31:53Demoscan not talk, have a day of exams and work
16:32:09Varriount|Mobile:(
16:33:35*zahary joined #nimrod
16:38:58BitPuffinVarriount|Mobile: use dom96's thing?
16:40:07*Demos quit (Ping timeout: 264 seconds)
16:40:19Varriount|MobileBitPuffin: Thing?
16:40:20*brson joined #nimrod
16:41:14*Demos joined #nimrod
16:41:26BitPuffinblog gen
16:42:05dom96Varriount|Mobile: You could also use gist.
16:43:56BitPuffinVarriount|Mobile: you could also borrow dom96's blog
16:44:53dom96BitPuffin: Use a 'when'?
16:45:29dom96BitPuffin: And what do you mean by 'borrow'?
16:46:15EXetoCIs a type in each block no good?
16:47:20BitPuffindom96: a when?
16:47:21EXetoCit shouldn't be necessary of course, and it might be error-prone for complex types
16:47:42EXetoCBitPuffin: when-statement
16:47:48BitPuffinI know
16:48:07BitPuffinthat's not even related
16:48:46EXetoCnot related to your question about fields?
16:49:07*Demos quit (Ping timeout: 264 seconds)
16:50:48BitPuffinexactly
16:50:58BitPuffinwhen would be part of the solution regardless about the portability part
16:51:07BitPuffinbut it's got nothing to do with what I asked how to do
16:51:27BitPuffinI already know that I can conditionally compile stuff with when and I am already doing that
16:51:55BitPuffinjust that I think it's kind of odd to maintain N versions of the same object when they might only differ with like one variable
16:52:33EXetoCI said it shouldn't be necessary, but I think it currently is
16:52:43BitPuffinunfortunately yeah
16:52:55BitPuffinand inheritance etc with like a "base" object feels unnecessary too
16:53:05BitPuffinin this particular case
16:53:15BitPuffinbecause I want them to be one type
16:53:34BitPuffinor hmm
16:53:41BitPuffinmaybe that would simplify things
16:53:44BitPuffinor complicate
16:53:45BitPuffinhm
16:53:47BitPuffin:P
16:58:42dom96type
16:58:45dom96 Foo = object
16:58:49dom96 when defined(windows):
16:58:54dom96 field: string
16:58:57dom96 else:
16:59:06dom96 fuuu: int
16:59:19dom96Is that what you already know?
16:59:26EXetoCI guess not
17:00:04dom96Actually, i'm not sure if that will work :P
17:00:17BitPuffinI don't think it will
17:00:37dom96actually no, it does.
17:00:38dom96I use it
17:00:51EXetoCI did the mistake of trying that in the actual type block. that doesn't work which is inconsistent
17:01:08EXetoCwee trial and error
17:04:29BitPuffinoh I thought when wasn't allowed inside type stuff like that
17:04:36BitPuffinguess that works
17:04:37BitPuffinthen
17:04:59BitPuffinstill though, I'd still like to be able to extend a type's definition further down the file
17:05:08*Varriount|Mobile quit (Ping timeout: 246 seconds)
17:05:27EXetoCI doubt it's necessary, and it does seem like a confusing thing to do
17:05:36BitPuffinno
17:05:53BitPuffinbecause instead of doing when defined(windows) a million times in a bunch of different small places
17:06:05BitPuffinit can be nice to group the platform specific stuff in to one big when
17:06:15BitPuffinif you know what I'm sayin
17:08:04BitPuffinEXetoC: do you hang with?
17:09:27dom96BitPuffin: WHAT DID YOU MEAN BY BORROW?!
17:09:42BitPuffindom96: mr period has come to town?
17:09:45BitPuffindom96: guest post
17:09:47BitPuffineinstein
17:10:01dom96wut?
17:10:33BitPuffindom96: yes, let Varriount post his article as a guest post on your blog
17:10:52dom96No, I was wut-ing at the other two lines.
17:11:15BitPuffinwell I mean you are yelling as if you were on your period
17:11:23dom96Borrow could have had 2 perfectly reasonable meanings.
17:11:23*io2 joined #nimrod
17:11:48BitPuffinand you are einstein for not figuring out that borrowing your blog to write a post on it means that he posts his article on your blog
17:11:49dom96So don't be condenscending, bitch.
17:11:55BitPuffindom96: come at me bro
17:12:05dom96YOU WANNA GO!?
17:12:10BitPuffinhell ye
17:12:13*dom96 polishes the ban hammer
17:12:19BitPuffinI'm not afraid of no hammah
17:12:25dom96YOU SURE ABOUT THAT?!
17:12:42BitPuffinI know that you value our friendship too much to do such a thing
17:12:52dom96Awww
17:12:53BitPuffinBut if that turns out to be false
17:12:57BitPuffinthere is something you need to know
17:12:59BitPuffinI....
17:13:00dom96Well I can't ban you now.
17:13:01BitPuffinAm your father
17:13:12*dom96 jumps off bridge
17:13:22*dom96 dies
17:13:24BitPuffinAnd son, I'm disappoint, where's the dreads
17:14:45dom96Perhaps when I get to uni.
17:15:38dom96anyway bbl
17:27:11*wolfspaw joined #nimrod
17:38:10*wolfspaw left #nimrod (#nimrod)
17:39:47*BitPuffin quit (Ping timeout: 246 seconds)
17:40:38*brson quit (Ping timeout: 255 seconds)
17:41:39*Demos joined #nimrod
17:44:46*brson joined #nimrod
17:50:14*bearg quit (Ping timeout: 252 seconds)
17:52:15*Demos quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
17:52:24*Demos joined #nimrod
17:58:21*q66 joined #nimrod
18:04:32*Demos quit (Ping timeout: 252 seconds)
18:22:37Araqwhen bitpuffing comes around, tell him he can do what he wants with a macro
18:27:24EXetoCI don't think that whatever he's proposing will reduce typing at all
18:28:13EXetoCwell maybe ~10 characters per line or something like that, so it barely matters
18:28:58Araqit's not about typing
18:29:17Araqit's about splitting stuff in a modularity-breaking way
18:31:00Araqlike C#'s partial classes
18:32:54fowlsounds to me like he wants an interface
18:33:41EXetoChe's not being very clear then
18:33:59fowltype platforminterface = generic x x.does(this) .... ; when defined(linux): import private/platform/linux ; assert platformimpl is platforminterface
18:38:13EXetoCsure, if he does indeed want shared fields
18:48:45Araqdom96: may I merge Varriount's nimbuild patch?
18:55:54dom96Araq: What's the point if I can't deploy it anyway?
18:56:24Araqwhy can't you deploy it? o.O
18:56:34dom96Because I'm busy
18:58:25Araqbut it is deploy day!
18:59:35skyfex_Araq: What's does ropecg do vs. ropef?
19:01:49Araqropecg supports #magiccall(foo)
19:04:36reactormonkAraq, partial classes?
19:05:20reactormonkah, found it.
19:05:31reactormonkAraq, how is that modularity-breaking?
19:14:50*Demos joined #nimrod
19:16:09Araqreactormonk: var foo: partialFoo # when does the compiler know foo's size? at link-time, aka modularity breaking
19:16:15flyxhow does one sleep a thread in nimrod?
19:16:22*flyx has his gtk2 patch almost ready
19:16:25reactormonkAraq, aww fuck, size.
19:16:29Araqos.sleep() ?
19:16:52flyxsounds like it, thanks
19:16:59*flyx didn't have a look at the stdlib yet
19:17:05Araqreactormonk: afaict "modularity" is not well defined though
19:17:28fowlflyx, this is the link you need http://build.nimrod-lang.org/docs/theindex.html
19:17:42reactormonkAraq, do you want binary modularity or source modularity?
19:18:18Araqreactormonk: did you make these terms up?
19:18:51reactormonkAraq, yup. binary modularity cares about size, where as source doesn't because you can change the size of an object on compile-time
19:35:01flyxcan I define a symbol in my code, so that a defined(symbol) call in an imported lib evaluates to true?
19:37:19EXetoCconst?
19:38:31*Demos quit (Ping timeout: 264 seconds)
19:38:39flyxI tried, but that doesn't work - probably because it's not in scope of the imported lib
19:40:35EXetoCyou mean module? shouldn't that module import a module that defines the const then? also, make sure that it's being exported (*)
19:41:37Araqdon't use when defined(myconst), use when myconst instead
19:42:06Araq"defined" is fragile, typos are not caught
19:42:31flyxdoes it also work with a -d parameter without defined()?
19:43:15Araqno for -d you need 'defined'
19:44:24flyxokay, then I have to stick with that. I just wondered whether I can add a define in the code using the library
19:44:37EXetoCotherwise it might be evaluated to "when defined(true)" for example
19:44:57VarriountAraq: Before I go to my next class, is there anything that needs to be done regarding the nimbuild "announce still failing tests" PR?
19:50:24AraqVarriount: I don't think so, thank you
19:51:22VarriountAraq: No problem. Thank you for not getting angry at my week-long break.
19:51:56*foodoo joined #nimrod
19:52:01Araqer ... wow
19:52:36Araqnow I look like a jerk ...
19:53:27Araqwhy would I be angry? I'm angry about software, not people
19:56:43VarriountAraq: I never meant to imply that you were a jerk. Unfortunately, I've known people who are not.. nice to work with. I'm glad to say, you aren't one of them.
19:58:40dom96flyx: Can you compile Aporia on Mac OS X?
19:59:12flyxdom96: I'm just about to test it
19:59:20dom96flyx: Great, thanks.
20:02:19Araqping zahary: please fix the command syntax usages that keep the compiler from bootstrapping
20:03:07dom96flyx: Did you want to define gtk_quartz in gtkmacintegration.nim?
20:03:37VarriountAre file handles automatically closed when collected by the GC?
20:04:11skyfex_Ugh, git can be confusing sometimes
20:04:15flyxdom96: no, in the example
20:04:15AraqVarriount: no
20:04:50dom96flyx: I see. I think your comment is good enough.
20:07:33VarriountIn the parameter declaration section of a procedure definition/declaration, is there a way to declare a parameter as either taking a 'var' type *or* a ref type?
20:08:19zaharyAraq: why don't we push new sources instead?
20:08:47zaharyI don't think I'm using the command syntax - istead, it's the inline stmtListExpr (isn't this ancient by now?)
20:09:06zaharyelse: (internalAssert typ.kind == tyCompositeTypeClass; typ.sons[1])
20:10:59renesaczahary, can 'openarray' be expressed via typeclasses now? Or it still needs magic?
20:11:22zaharynot yet
20:11:51renesacthat yet leaves me hopeful :)
20:11:51zaharyat least not in the current form that uses a single implementation
20:12:38fowlzahary, adding parens around the param to internalassert fixes it
20:12:44fowlits the command syntax
20:13:21zaharyerm, ok - I'll include it in the next commit
20:13:38renesachumhum
20:13:40renesac*hum
20:19:58EXetoCVarriount: you don't want to dereference?
20:22:58EXetoCVarriount: http://build.nimrod-lang.org/docs/manual.html#type-classes
20:23:23EXetoCthis seems to imply that it's possible, right?
20:24:29flyxdom96: Aporia does build, but I cannot start it. it doesn't find libiconv.dylib, which is in /usr/lib
20:24:56flyxdo I need to tell nimrod where to look for dynamic libraries?
20:25:33dom96good to hear that it builds
20:26:43flyxah, never mind, fixed it
20:26:48flyxseems like it runs
20:32:53*awestroke quit (Read error: Connection reset by peer)
20:33:03nequitanszahary, i'm assuming you wrote the Atom plugin for nimrod. Thanks!
20:33:17Araqzahary: meh, so push new C sources instead, I don't mind either way
20:35:11nequitans(and for the vim ones)
20:35:52*webclienttest joined #nimrod
20:36:10Araqhi webclienttest welcome
20:36:34*webclienttest left #nimrod ("Leaving")
20:36:38zielmichasorry webclienttest is not real, it's just my bot
20:36:58zielmichaI connected from wrong server.
20:36:58Araqthat's what I thought
20:37:21Araqbut I also greet bots
20:45:07*Demos joined #nimrod
20:45:47*zielmicha_beta joined #nimrod
20:46:07zielmicha_betabetter name than webclienttest :)
20:47:53*BitPuffin joined #nimrod
20:51:31*BitPuffin quit (Client Quit)
20:51:46*BitPuffin joined #nimrod
20:55:02*foodoo quit (Remote host closed the connection)
20:56:23*clovis joined #nimrod
20:58:20*vendethiel quit (Ping timeout: 252 seconds)
20:58:45*vendethiel joined #nimrod
21:04:10NimBotnimrod-code/nimbuild master c6f1c37 Clay Sweetser [+0 ±1 -0]: Added "still failing tests" feature.... 2 more lines
21:04:10NimBotnimrod-code/nimbuild master 1592b6c Clay Sweetser [+0 ±1 -0]: Removed IRC reporting of "still failing" tests
21:04:10NimBotnimrod-code/nimbuild master 7e7fe50 Andreas Rumpf [+0 ±1 -0]: Merge pull request #14 from Varriount/website/report-still-failing... 2 more lines
21:05:05*vendethiel quit (Read error: Connection reset by peer)
21:06:20skyfex_Araq: Is it currently possible to construct a type that can be assigned 0, 1, 'Z' or 'X' ?
21:06:52Araqwith a converter it should be possible
21:07:51*vendethiel joined #nimrod
21:11:16skyfex_hmm.. i could define it as range[0..3] and then have 'Z' and 'X' convert to 2/3.. but then I can't block someone from assigning 2/3
21:13:42skyfex_It's not important right now though.. just preparing a small presentation of Nimrod to some fellow hardware engineers
21:14:10skyfex_Trying to get a feel for which parts of HDLs like Verilog/VHDL could be implemented in Nimrod
21:15:00Araqmymacro:
21:15:06Araq foo = Z
21:15:17*vendethiel quit (Remote host closed the connection)
21:15:36Araq--> you can have more flexibity within a macro invocation
21:17:11*DAddYE quit (Remote host closed the connection)
21:18:07*DAddYE joined #nimrod
21:18:20Araqskyfex_: you should have an enum instead of range[0..3]
21:18:42*Matthias247 joined #nimrod
21:18:49Araqand then a type converter from 0,1, 'Z', 'X' to convert to the enum
21:19:18Araqyou can restrict the type converter via AST based overloading
21:22:21*vendethiel joined #nimrod
21:24:02*jbe_ quit (Quit: Leaving)
21:25:36skyfex_why does converter toWire(a: range[0..1]): Wire = ... not match on 0 and 1 (unless toWire is explicitly called)?
21:27:52Araqdunno, looks like a bug. converters are rarely used ...
21:36:53*Endy quit (Ping timeout: 255 seconds)
21:41:56Araqskyfex_: my bet it's because 1 matches range[0..1] via a subtype relation and 'converter' is strict in its matching
21:42:44*io2 quit ()
21:45:00*renesac quit (Ping timeout: 255 seconds)
21:45:56*flaviu joined #nimrod
21:48:09zaharynequitans: I'm still using mostly vim - the atom plugin is rather primitive
21:49:33*BitPuffin quit (Quit: WeeChat 0.4.3)
21:49:55*BitPuffin joined #nimrod
21:50:09nequitanszahary, i just started playing around with Atom the other day and it was nice to see that something existed. I do like how the Vim one alerts me to potential compiler errors
21:50:32*BitPuffin quit (Client Quit)
21:50:48*BitPuffin joined #nimrod
21:51:31*Demos quit (Ping timeout: 264 seconds)
21:55:39nequitansnot sure how long this foray into atom will last
22:00:23*jbe joined #nimrod
22:01:15*Matthias247 quit (Read error: Connection reset by peer)
22:28:16*clovis quit (Quit: clovis)
22:59:13fowlis {.union.} necessary
23:02:30*jbe quit (Quit: Leaving)
23:28:58*flaviu quit (Remote host closed the connection)
23:33:54*darkf joined #nimrod
23:46:23*lanior joined #nimrod
23:50:05*lanior quit (Client Quit)