github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 21 August 2013.
00:21 jnap joined 00:31 FROGGS joined 00:59 Ben_Goldberg joined
dalek arVM: c66a644 | diakopter++ | src/gc/orchestrate.c:
note to self
01:45
segomos note to self 01:47
diakopter ? :) 01:48
segomos: ok..? 02:19
02:20 benabik joined
JimmyZ Good morning 02:26
TimToady o/ 02:27
diakopter TimToady: well.. 02:28
TimToady: I disable closing of stdout
and ..\\moarvm.exe nqp.moarvm -e 1 ... eats 8GB ram in 1 second
probably that's not what was intended, and probably won't work, except in the very long term 02:29
TimToady: at least it's .. fast.... or something 02:31
*sigh* now I have to add some form of tracing
.tell jnthn yes I'm kinda married to outputting the opname and which instruction it is; it can be very helpful; but I'm glad to make it a command-line flag (--verbose-stack-traces or something) 02:37
yoleaux diakopter: I'll pass your message to jnthn.
JimmyZ \\o 02:39
diakopter JimmyZ: g'morning 02:40
JimmyZ morning 02:42
dalek arVM: 83bca4d | diakopter++ | src/ (3 files):
don't close std streams... for now...
02:43
arVM: 2bb0d04 | diakopter++ | src/core/exceptions. (2 files):
make MVM_exception_backtrace_line non-static and free what it returns... :/
arVM: 5bb825e | diakopter++ | / (6 files):
add very naive every-instruction tracing.... <lol>
03:41
diakopter TimToady: lololol gist.github.com/diakopter/b3b85ed4b6c7df7779ac 03:42
JimmyZ: ^
JimmyZ lol
diakopter the twenty null instrunctions in a row are curious 03:43
lolol instr 53857808
.oO( stop instructing me so much.. )
.oO( 53 million instructions in one routine is .. a lot )
03:44
JimmyZ :-)
we need break point :)
could be added into nqp though 03:45
diakopter well the end betrays the infinite loop 03:48
erm. 03:49
actually not.
diakopter lets it run a while longer
HAHAHAHAHA 03:51
JimmyZ: it's looping in the interactive prompt b/c the readline prompt and ensuing eval is commented out :) 03:54
(yay, nqp is "running", fsdo running) 03:55
it has to execute around 250k interpreter runloop instructions to get to that readline prompt 03:56
JimmyZ wat, that's too much instr
TimToady "This file has been truncated" tee hee
perhaps it's really calling into a PRNG
wasn't someone threatening to throw in a Mersenne Twistor?
diakopter no that's including loading the whole nqp setting and compiler code 03:57
and doing all the deserialization required
I'd paste it, but it's a quarter million lines...
well, I'd probably nopaste it instead of pasting it 03:58
JimmyZ FYI, m0 has a break point/step debuger, and this gist.github.com/zhuomingliang/2706999
diakopter "loading" the nqp setting involves running a lot of coe. 04:00
code, even
brb; dinner
actually. 04:02
.ask jnthn how much of *Moar.nqp can we wrap in BEGIN { }.. hopefully lots? also, plz read scrollback in moar
yoleaux diakopter: I'll pass your message to jnthn.
04:04 FROGGS joined
diakopter FROGGS: read the clogs for here... brb 04:04
04:23 FROGGS joined
diakopter JimmyZ: I could fake up a quick and dirty readline 04:23
JimmyZ diakopter: not based lineniose? 04:46
diakopter JimmyZ: well I could but I thought your branch depended on libuv 04:49
04:51 dalek joined
JimmyZ diakopter: I couldn't got it 04:52
diakopter ?
JimmyZ my branch depended on libuv? 04:53
diakopter libuv is not in your branch?
linenoise branch
JimmyZ yeah, linenoise doesn't depend on libuv 04:54
but linenoise doesn't depend on libuv
diakopter okay; could you merge master into your linenoise branch?
JimmyZ diakopter: ok
diakopter JimmyZ: also into libuv?: ) 04:59
:)
libuv5 branch, I mean 05:00
dalek Heuristic branch merge: pushed 102 commits to MoarVM/readlineintfh2 by zhuomingliang 05:01
diakopter it merged cleanly!@?! 05:02
JimmyZ no :) 05:04
diakopter oh; you didn't merge the tracing commit 05:06
dalek Heuristic branch merge: pushed 35 commits to MoarVM/libuv5 by zhuomingliang
05:07 FROGGS joined
diakopter JimmyZ++ 05:11
dalek arVM/readlineintfh2: 2fb237f | jimmy++ | build/ (2 files):
fixed build
05:14
JimmyZ all build now :-) 05:19
JimmyZ would like to merge these branches to master to avoids merge conflict :P
05:35 crab2313 joined 05:52 not_gerd joined
not_gerd o/ 05:52
diakopter: I can probably make the tracing/no-tracing a make-time instead of configure-time decision 05:53
JimmyZ good
not_gerd ie so you can use `nmake tracing` and `nmake no-tracing` without having to re-configure
diakopter: should I go ahead? 05:54
JimmyZ I'd +1
re-configure means almost re-build
not_gerd we really only need to rebuild main.obj and core/interp.obj 05:55
JimmyZ but nmake re-build almost anything after perl configure.pl 05:56
not_gerd getting it work with nmake and gmake both could be a bit tricky though
it'l probably look like `nmake tracing TRACING=0` and `nmake tracing TRACING=1`
JimmyZ how about steal ideas from m0-debug branch :) 05:57
06:21 grondilu joined
not_gerd [x] done 06:25
should I push to master?
(or branch for now?)
JimmyZ nmake tracing? 06:27
dalek arVM: 9298332 | (Gerhard R)++ | / (6 files):
Make tracing a build-time instead of configuration-time decision.

Instead of a configuration flag --tracing, there are now build targets 'tracing' and 'no-tracing'.
06:28
not_gerd forgiveness > permission
JimmyZ not_gerd: it's nice 06:29
what's the new api for repalce apr atomic? 06:31
not_gerd none yet 06:34
the MVM_cas() macro isn't implemented yet 06:35
I did do the work to rip out the GPL stuff from libatomic_ops, though
JimmyZ e.
not_gerd see github.com/gerdr/libatomic_ops/commits/moarvm
JimmyZ I did see this branch :-) 06:36
not_gerd I can import that into MoarVM
I don't know how up-to-date the cygwin autotools are, though
might de better if someone on a recent linux does this 06:37
* be
JimmyZ note: four of us are on windows
;) 06:38
but jnthn++ said libatomic_ops should be in github.com/MoarVM/libatomic_ops ?
not_gerd as I understand it, he wants to use packaged versions of 3rdparty libs as much as possible 06:41
and I don't have permission to create forks on MoarVM anyway ;) 06:42
JimmyZ not_gerd: how about creating branch to implement MVM_cas() 06:46
like libuv
not_gerd JimmyZ: doesn't really need a branch - just libatomic_ops to be imported 06:58
JimmyZ oh
so only blocker: sockect \\o/ 06:59
not_gerd JimmyZ: as far as I can see, yes 07:00
07:00 FROGGS joined
JimmyZ the libuv is using callback, so it's hard to me 07:00
*libuv sockect api 07:01
not_gerd async io really wants to be integrated with the scheduler to provide a blocking API on top of it 07:02
that needs some design work
JimmyZ yeah 07:15
and async tty :(
07:19 donaldh joined 07:25 donaldh joined
diakopter JimmyZ: no, jnthn meant to bundle it inside the MoarVM/MoarVM, as I understood it 08:09
so you can't nmake without doing no-tracing?
not_gerd diakopter: you'll only use that information after modifying main.c or core/interp.c 08:10
plain `nmake` doesn't trace
diakopter not_gerd: I don't think any of us uses cygwin
(to build moar anyway) 08:11
JimmyZ diakopter: not_gerd uses :P
diakopter ok well that'll be a problem for libuv
not_gerd diakopter: shouldn't really matter where autog
* gen.sh gets called
diakopter: I only use cagwin for the shell environment and cross-compiler packages 08:12
diakopter I wasn't thinking of that
not_gerd * cygwin
diakopter I wasn't thinking of autogen
I was thinking of the library's code and how it doesn't support cygwin
not_gerd diakopter: sure, but I'm targeting MinGW64, not Cygwin
diakopter oh 08:13
JimmyZ sometimes I think we could implement our atomic for both windows and linux
and others cpu could be patches welcome :-) 08:14
not_gerd diakopter: I laready mentioned this before - what I'm going for is --os=win32 --shell=posix --toolchain=gnu --compiler=clang
our Configure.pl supports it, just not APR
JimmyZ we're removing APR 08:15
diakopter okay; I don't know enough to know what that means
not_gerd diakopter: just that I've got a frankenstein setup going
I tried to keep orthogonal decisions orthogonal whenrefactoring Configure.pl 08:16
JimmyZ not_gerd: you want --shell=rc ? the plan9 shell
;)
not_gerd JimmyZ: well, right now we only need rm and cat 08:17
I believe those are in rc?
JimmyZ hehe
not_gerd diakopter: I believe I can do the libatomic_ops import now
diakopter sounds good 08:18
does the new version support 32-bit cas?
not_gerd diakopter: I don't believe so 08:19
diakopter aww
not_gerd all values we want to access atomically need to be pointer-sized
diakopter oh well
apr claims to do it
08:19 FROGGS joined
not_gerd there's AO_HAVE_int_compare_and_swap(), but that wasn't available on windows last we checked 08:20
* AO_int_compare_and_swap() 08:21
which can be checked via AO_HAVE_int_compare_and_swap
diakopter does it have AO_int_fetch_compare_and_swap
er, wherever the fetch goes 08:22
JimmyZ on windows we can use windows api :)
diakopter right, I'm sure the guy would take a pull request to add it to lao
not_gerd: if you get the new lao in and the atomics all switched over, then maybe get dyncall..? 08:23
JimmyZ well, the apr one doesn't do anything except call windwows api
diakopter see my dyncall branch if you want, or don't. ;)
not_gerd ;)
diakopter another feature request: default --no-noisy-build but option --noisy-build where command echoing is hidden (prefix @ on cmd.exe, no clue on sh) 08:25
much easier to read warnings & errors when the command echoing is off, imho
and also easier on the eyes in normal build
thoughts? 08:26
not_gerd might by able to get it to work as `nmake NOISY=1`
need to test if it works in nmake/gmake both
diakopter I did something like that in the dyncall branch, but probably badly
also the realclean target needs to remove the makefiles of all the 3rdparty things too 08:27
and other config stuff 08:28
imho 08:29
JimmyZ: did jnthn have any specific objections to linenoise? or just he hadn't looked into it yet?
not_gerd diakopter: I think it was a general objection against bundling 3rdparty libs to make packagers life easier 08:30
I thinke linenoise is small enough to make an exception, though
also, JimmyZ added windows support 08:31
diakopter this is strange to me since originally he didn't want any external dependencies
I thought he meant to put our fork of lao directly into MoarVM/MoarVM
not_gerd irclog.perlgeek.de/moarvm/2013-08-21#i_7482708
diakopter oh, the line above, you mean 08:32
that's the one I missed
(read too quickly)
I did read the line you highlighted
it's just that last I checked there wasn't a system package for libatomic_ops 08:33
that was anywhere close to up-to-date, maybe
not_gerd: I can create repos in /MoarVM 08:35
I think you can too
not_gerd I just tried to transfer the repo 08:37
no dice
(You don't have admin rights to MoarVM)
diakopter I think you have to create it first through the web interface
you don't have access to that?
oh, neither do I... nm 08:38
JimmyZ diakopter: he hadn't looked into it 08:45
diakopter not_gerd: any ideas on where I should put .markdown documentation for source code?
in the same dir tree as the source code?
maybe one README.markdown per directory so it shows up in github browser?
ok I sold myself on that idea; I'll start with that 08:46
dalek arVM/atomic: 03ecaa1 | (Gerhard R)++ | / (140 files):
Import modified f38b2904 of ivmai/libatomic_ops
08:47
JimmyZ .md is ok too
not_gerd ^ needs testing, in particular non-windows where the configuratio n actually gets triggered
diakopter shouldn't include the gpl license if we're not redistributing gpl code 08:50
not_gerd diakopter: some of the scripts are GPL 08:51
diakopter what scripts 08:52
not_gerd the testing code that used to be included is as well
decomp, missing
it's a non-issue
diakopter do we need those?
not_gerd we even could have distributed the GPL source files
as long as we don't link libatomic_ops_gpl.a, we're fine
diakopter the problem is that if the license or anything like that is present in the repo, it scares off a huge number of people 08:53
it's viewed as very dangerous
huge stigma
in US companies
not_gerd well, then say goodby to autotools 08:54
diakopter I didn't think we needed it necessairly
not_gerd config.sub and config.guess are GPL as well
JimmyZ so re-imported to make sure GPL is not in the repo history :P 08:55
diakopter well, it's probably okay to include them as long as there's very large notices in LICENSE that even though there's gpl source in the repo, none of it actually goes into what's built 08:56
not_gerd or just not distribute the generated scripts 08:57
would force the user to have autotools available, though
diakopter oh, I think that's definitely okay
it's highly unlikely those aren't there on everything but cmd.exe 08:58
not_gerd errands& 08:59
diakopter not_gerd++ # thanks for importing the lao :) 09:00
JimmyZ not_gerd++ indeed 09:02
diakopter JimmyZ++ not_gerd++ # really taking the bull by the horns! 09:03
JimmyZ :) 09:04
not_gerd should I remove the generated files + COPYING from the branch? 09:19
diakopter no I think let's leave them, but list the GPL files at the bottom of the root LICENSE, and state clearly that they aren't included in any build; they are just there for configure/build/test time 09:21
JimmyZ I'd like +1 to re-import
diakopter JimmyZ: why? 09:22
I think it's fine how it is... but jnthn may disagree, of course, and not want the build-time gpl stuff at all
JimmyZ if removing
because git clone is slow here 09:23
diakopter heh. 09:24
09:24 FROGGS[mobile] joined
dalek arVM: 5fee6da | diakopter++ | / (10 files):
beginnings of source code/repo documentation.. designed to be visible when browsing the source tree in github.
10:05
10:06 crab2313 joined 10:10 donaldh joined
dalek arVM: 5aa78f8 | diakopter++ | src/ (4 files):
stub in serialization
10:29
not_gerd should I merge atomic into master? 10:57
jnthn not_gerd: With the updates to the lib, yes? 11:00
not_gerd jnthn: yes
jnthn +1
not_gerd the only concern was that autotools-generated config scripts are GPL
jnthn huh...
not_gerd it's not an issues as long as you don't link against GPL code 11:01
ie we could have distributed the GPL stuff as well without problem
jnthn Generated code can be under GPL too...teh oddness :)
not_gerd ;)
jnthn Guess it counts as derived work or something...
not_gerd diakopter was just concerned about corporate GPL-aversion 11:02
jnthn *nod*
not_gerd his conclusion was just to clearly note the license in a README.md and move along
diakopter (already pushed)
not_gerd alternatively, we'd have to rely on autotools-availability on used-side
jnthn Yes, I find the GPL's freedom-enforcing approach tends to give me less freedom to build stuff. :) 11:03
not_gerd according to their readme, the libatomic_ops authors don't really are about the freedom-granting part of the GPL, but rather their patent clause 11:04
in that case, Apache2 probably would have been more appropriate 11:05
*care
so, merge away? 11:07
jnthn aye
dalek arVM: 03ecaa1 | (Gerhard R)++ | / (140 files):
Import modified f38b2904 of ivmai/libatomic_ops
11:08
arVM: c6dc357 | (Gerhard R)++ | / (140 files):
Merge branch 'atomic'
not_gerd jnthn: if we want to keep a fork of libatomic_ops, you'll have to do the honours 11:09
jnthn Which honours in particular? :) 11:10
I would overall rather that the MoarVM repo itself just contains MoarVM, not all the things we depend on, and we keep those in separate repos under the MoarVM account.
not_gerd creating a fork of ivmai/libatomic_ops in MoarVM
jnthn ah, ok 11:11
JimmyZ and libuv
and linenoise?
diakopter .. and dyncall 11:14
.. and the bignumber thing 11:15
jnthn When MongoDB adopted linenoise, there were no shortage of complaints. e.g. jira.mongodb.org/browse/SERVER-3914 and many others linked from jira.mongodb.org/browse/SERVER-4312 11:17
JimmyZ can't open it 11:21
so what's real problem? 11:22
jnthn JimmyZ: When they switched to it from readline, they lost lots of features and people were unhappy.
JimmyZ jnthn: I added a lot of feature to linenoise 11:23
and works on windows
jnthn: I added readline aslo, just need configure code . i.e: if on readline, then use linenoise by default 11:25
s/on/no/
diakopter jnthn: *code_sc = Parrot_pmc_getprop(tc, code, Parrot_str_new_constant(tc, "SC")); 11:27
in write_code_ref 11:28
JimmyZ jnthn: I added most ctrl+key features,included ctrl+r, a, e, u l
diakopter jnthn: do we we the SC attribute?
JimmyZ and ctrl+c aslo
jnthn diakopter: Yes, on Parrot not everything is a 6model object so we use that to make Parrot Subs with an SC. In MoarVM, everything is a 6model object so we always have an ->sc :) 11:29
diakopter k
jnthn diakopter: So that code gets simpler :)
JimmyZ and home end:)
jnthn diakopter: You should be able to find the corresponding read code
JimmyZ: OK, so we essentially have our own fork of linenoise by now? :)
diakopter jnthn: haha closure_to_static_code_ref can be vastly simplified 11:31
jnthn oh hell yes :)
JimmyZ jnthn: I'm with this: Larger programs may use this little library or just checking with configure if readline/libedit is available and resorting to linenoise if not. 11:33
:P 11:34
jnthn JimmyZ: Sure, but what you're saying is you've extended linenoise we use to the point that there's not going to be a system version of it that we can use? 11:37
diakopter jnthn: I think I can do all the serialization stuff in serialization.sc.. but I think you're gonna have to do the serialize repr ops 11:39
JimmyZ jnthn: nope ,I'm with :checking with configure if readline/libedit is available and resorting to linenoise if not.
jnthn: my branch contains realdline api actullay 11:40
diakopter jnthn: we don't need to track contexts separately, since they have their own repr
right?
JimmyZ so do we need a fork? or in MoarVM? 11:41
I'd like +1 to fork though 11:42
diakopter jnthn: hm, nm, I see we do
JimmyZ not_gerd: how about adding libreadline configure? 11:55
11:56 JimmyZ_ joined
JimmyZ_ oh, I understand what jnthn++ said 11:58
nwc10 possibly stupid question - does linenoise have a single upstream? and if so, is it happily taking patches? 12:00
JimmyZ_ jnthn: either use system version readline or use our patched linenoise, I think. I'm not mind to use system one linenoise :-)
nwc10: it's not taking patches 12:01
nwc10 why not?
JimmyZ_ they have redis
tadzik how is that related?
nwc10 that's what I thought. Given "Redis is an open source, BSD licensed, advanced key-value store." 12:02
there's a missing step here :-)
JimmyZ_ Maybe then don't want to take much care of linenoise, because they want to keep linenoise under 1000 lines
they don't want it to be another readline :)
tadzik not this shit again :| 12:03
in a year they'll be saying "yeah, we really meant 2000 loc", like dwm
dalek arVM: fe3c159 | (Gerhard R)++ | / (4 files):
Support noiseless building.

Pass NOISY=1 to make to see actual commands.
12:04
not_gerd diakopter: ^^
*hopefully* didn't break gmake ;)
nwc10 my (hearsay) understanding of the genesis of linenoise was that "readline is way too large for what it's doing. Pretty much all terminals support VT100, so if we assume that we can write something a lot smaller"
and everything seems to demonstrate that "more than VT100" was *not* the reason for the size. 12:05
it was the features
JimmyZ_ not_gerd: feture request :)
not_gerd ...and there's something wrong with it :(
nwc10 and, here we go, strangely enough, users were using a chunk of the features
JimmyZ_ feature
nwc10 had this at ex-work (sort of) with something completely different
one (very useful) developer (also) had the view that "X" is way too complex
and started on "Y"
did 80%, and then left it to others to finish up 12:06
problem was at the end of finishing, "Y" was about as complex as "X"
becase, what a surprise, the necessary tricky bits add complexity
JimmyZ_ maybe, I just want linenoise works as well as well on linux
nwc10 My frustration here is *not* linenoise, but that everyone has a fork 12:07
JimmyZ_ so I patched it, and add ctrl+r and ctrl+l
works on windows as well as on linux :)
nwc10 cool. Does MongoDB have a fork too? Isn't anyone interested in being the linenoisier upstream? :-/
diakopter not_gerd: thanks!
jnthn Given the last commit was 7 months ago... 12:08
nwc10 if that was CPAN, by now someone would have put a comment on cpanrantings claiming that it was dead :-)
JimmyZ_ jnthn: so how about fork linenoise :)
jnthn JimmyZ_: um, I thought if you'd added extra things to it you basically have already :) 12:09
JimmyZ_ jnthn: no :-) 12:10
dalek arVM: 4dc5c54 | (Gerhard R)++ | build/Makefile.in:
Fix build messages on GNU make
12:11
not_gerd now, does anyone build using BSD make ;)
JimmyZ_ not_gerd: how about adding readline detection: 12:12
nwc10: I guess it's that feel free if someone thinks our patching linenoise one is more awesome? 12:14
diakopter jnthn: see question 36 min ago 12:15
not_gerd if it were up to me, I'd just add a --no-readline option to Configure.pl that's default on win32 (and possibly darwin/bsd?)
diakopter hasn't heard from TPF yet
jnthn diakopter: The "track contexts separately"? 12:16
diakopter: I didn't really understand
JimmyZ_ not_gerd: oh, by defalut moarvm use linenoise... just need detect whether have readline , and then use it if have one 12:17
not_gerd: github.com/MoarVM/MoarVM/blob/read...ops.c#L349 12:18
jnthn: could you fork/create linenoise later? :P 12:22
12:27 BenGoldberg joined
not_gerd JimmyZ_: you never include readline.h? 12:29
JimmyZ_ not_gerd: not yet, I'm on windows
12:37 jnap joined 13:02 benabik joined
not_gerd benabik: ping 13:03
benabik not_gerd: pong
not_gerd benabik: I might have broken darwin again ;)
could you check if it builds?
benabik tisk, tisk
make clean ; and perl Configure.pl ; and make ... Well, it's compiling things so it's not totally broken. 13:05
not_gerd you see the compiling messages instead of actual commands? 13:06
benabik compiling foo.o... 13:07
linking moarvm
not_gerd \\o/
for bonus points, try `make NOISY=1 tracing`
BenGoldberg .tell diakopter in MoarVM, that fake_crash() function isn't exactly a clean, guaranteed, way to force a program to core dump / seg fault. Shurely abort() or raise(SIGABRT) or raise(SIGSEGV) would be better? 13:10
yoleaux BenGoldberg: I'll pass your message to diakopter.
BenGoldberg .tell diakopter nevermind
yoleaux BenGoldberg: I'll pass your message to diakopter.
13:33 FROGGS joined 13:39 colomon_ joined 13:49 jnap joined
not_gerd ok, I just hacked together some basic readline detection 13:50
note that distributing a binary package linked against readline will make it GPL
FROGGS linenoise was under the MIT license, right? 13:51
not_gerd FROGGS: BSD 13:52
2-clause
FROGGS would that be preferable?
did I mention that I hate licensing issues? 13:53
tadzik don't we all 14:01
14:02 Ben_Goldberg joined
nwc10 www.thrysoee.dk/editline/ is BSD licensed, but it's not at all obvious how widespread it is 14:07
not_gerd nwc10: it's fine as-is (link against readline if available or falls back to linenoise) 14:09
nwc10 cool
FROGGS k 14:10
not_gerd it just has to be made clear to people who want to create derivative work that they can't link against readline if they don't want to license their own work under the GPL as well
Artistic2 licensed code can always be relicensed under the GPL 14:11
it's just that linking against readline necessarily does so
14:11 benabik joined
not_gerd (on re-distribution) 14:11
dalek arVM/readline: ea7a0ab | (Gerhard R)++ | build/auto.pm:
Auto-detect readline
14:17
14:23 crab2313 joined
dalek Heuristic branch merge: pushed 23 commits to MoarVM/readline by gerdr 14:25
arVM/readline: 5862284 | (Gerhard R)++ | / (4 files):
Wire up MVM_HAS_READLINE and --no-readline
14:55
JimmyZ_ not_gerd++
not_gerd: Is there a good way to disable compiling linenoise when linked to readline? 15:06
not_gerd JimmyZ_: should already work 15:07
JimmyZ_ oh
dalek arVM/readline: 3d8c656 | (Gerhard R)++ | Configure.pl:
Clarified implications of not using --no-readline
15:11
arVM/readline: c5e1504 | (Gerhard R)++ | build/ (2 files):
Add /nologo to nmake invocation
15:30
arVM: 569b23f | (Gerhard R)++ | build/ (2 files):
Add /nologo to nmake invocation
JimmyZ_ not_gerd: src/gen/config.h:43:6: error: #error "Failed to detect endianness"
not_gerd: I'm on CentOS
not_gerd gcc?
JimmyZ_ gcc version 4.4.7 20120313 (Red Hat 4.4.7-3)
not_gerd could you gist `gcc -dM -E - </dev/null` 15:31
JimmyZ_ not_gerd: gist.github.com/zhuomingliang/6308766 15:33
not_gerd hm...
I don't see any endian-specific macros at all :(
JimmyZ_ :( 15:34
not_gerd could you do `find /usr/include/ | grep endian` or something equivalent? 15:37
15:38 benabik joined
JimmyZ_ /usr/include/linux/byteorder/big_endian.h 15:48
/usr/include/linux/byteorder/little_endian.h
/usr/include/bits/endian.h
/usr/include/endian.h
not_gerd: ^^
not_gerd I've got endian.h and bits/endian.h on cygwin as well 15:50
JimmyZ not_gerd: how about adding libreadline configure?2q
JimmyZ_ what? 15:51
bad connection
not_gerd JimmyZ_: you need libreadline-dev (or whatever your package manager calls it)
JimmyZ_ not_gerd: I'm not asking it 15:52
not_gerd ok
JimmyZ_: could you gist bits/endian.h
JimmyZ_ I have a bad connection to centos
not_gerd: gist.github.com/zhuomingliang/6309101 15:55
not_gerd thanks
JimmyZ_ not_gerd: it said x86_64 is little-endian. 15:56
not_gerd: and gcc -dM -E - </dev/null has x86_64 define
not_gerd JimmyZ_: sure, but than we'd have to keep a whitelist 15:57
JimmyZ_ how about? #define __BYTE_ORDER __LITTLE_ENDIAN
not_gerd can I see endian.h as well ;)
JimmyZ_ ;) 15:58
Good night 15:59
not_gerd o/
benabik has i386/endian.h and machine/endian.h 16:01
not_gerd it's a mess 16:03
on some ancient Redhat system with gcc 3.3 I got access to, _LITTLE_ENDIAN was used to denote the architecture directly, whereas with endian.h, you need to test _BYTE_ORDER == _LITTLE_ENDIAN 16:04
I wanted to avoid compiling test programs for endian detection because that does not work with cross-compilation 16:05
benabik BYTE_ORDER == LITTLE_ENDIAN 16:30
16:33 jnap joined
dalek arVM: 7bd2129 | (Gerhard R)++ | / (3 files):
Take byte order from Perl's %Config.

In case of cross builds, use explicit --big-endian.
Conditional compilation now also consistently checkes for definedness of MVM_BIGENDIAN.
17:08
not_gerd benabik: I took inspiration from Parrot and just queried %Config 17:09
~~ 17:10
17:10 not_gerd left 17:24 jnap joined
jnthn arrgh 17:36
We weren't meant to be making the build system depend on Perl 5 config :/
TimToady Feel the hatred! :) 17:39
so we're going to be linking in a P5, but we can't use P5 to figure out how to do that? :)
and cross-compiling would be really easy just by coping a config back from the other machine 17:43
*copying
it just feels to me more like a remnant of parrot's perl antipathy than a reasoned design decision 17:45
but maybe that's just me :) 17:46
I would agree that 'use Config;' is assuming no cross-compilation, so probably one would want some way to interrogate a config file more directly, so you could slip a different one in there 17:48
Config_heavy.pl contains all the info in one package, so a copy of that would probably work for cross-compile purposes 17:54
though you'd probably want to put stuff into %Cross::Config rather than %Config, so you don't clobber your local configuration 17:56
well, anyway, maybe I should do something productive... 17:57
nwc10 brew coffee; drink coffee; ? :-) 18:02
FROGGS my problem with P5's config was that some modules query it to know what CC an XS module should use, but nobody guarantees that the user really has this CC installed 18:09
in most cases this CC isnt even the default
TimToady well, we're probably not compiling a lot of XS modules to produce moarvm... 18:10
(I hope) 18:11
FROGGS true
*g*
so maybe one an trust P5 about endianess, but definitely about CC 18:12
but I think we already have a proper CC detection
TimToady the nice thing about information is that one can pick and choose what to believe
as I recall, p5 can even tell you about mixed-endian architectures 18:13
byteorder='12345678'
some of the DEC machines turned out mixed-endian, iirc 18:14
jnthn aye, though trusting bits of one thing and bits of another risks weird inconsistency 18:15
FROGGS well, we wont detect CC on our own and take the CFLAGS from P5
TimToady jnthn: you've just characterized cross-compilation in general :)
it's called that because it makes you cross, or at least cross-eyed 18:16
jnthn diakopter: I backlug the bit I think you meant. 18:22
FROGGS baccklug? hehe 18:23
jnthn diakopter: I suspect much work goes on in QASTMoar.nqp building up the instruction processing stuff. That almost certainly can be done at BEGIN time.
diakopter: Not sure if we have all the pieces in place to do it yet, but it should be possible.
diakopter: The stuff that goes on in loading NQPCORE should be comparatively small... 18:24
If anybody fancies applying some patches, Andy Dougherty has sent some MoarVM patches to perl6-compiler for Solaris building :) 18:26
If not I'll get to 'em in a bit 18:27
nwc10 TimToady: I removed a chunk of the mixed endian code about a month ago. I infer that some of it had had to have been broken for a decade or more 18:35
but that part might have been the fallbacks if system routines were missing 18:36
18:36 not_gerd joined
not_gerd o/ 18:36
18:36 benabik joined
not_gerd jnthn: I found querying P5 %Config the least evil way 18:36
compiler defines are inconsistent
keeping whitelists is bad
standard header may be endian.h sys/endian.h or sys/param.h
jnthn not_gerd: I guess those are greater evils... 18:37
:)
Leave it for now. There's almost certainly more worthwhile things to be doing.
not_gerd the only portable way is building a program that determines endianness at runtime
I try to avoid that as much as possible
nwc10 yes, totally. Correct triaging (I feel) is "get things building" for now, and clean it up later. (But not *never*) 18:38
but I'm likely cranky and biased, and this isn't my lawn.
not_gerd ona related note, shoudl feature macros be defined with values 0 or 1 and checked via #if or conditionally defined and checked via #ifdef ? 18:40
FROGGS I like #ifdefs fwiw 18:42
diakopter not_gerd: is there an effective difference? 18:49
yoleaux 13:10Z <BenGoldberg> diakopter: in MoarVM, that fake_crash() function isn't exactly a clean, guaranteed, way to force a program to core dump / seg fault. Shurely abort() or raise(SIGABRT) or raise(SIGSEGV) would be better?
13:11Z <BenGoldberg> diakopter: nevermind
not_gerd diakopter: not really 18:50
mixing conventions can get confusing, though
diakopter not for those of us who don't notice conventions
not_gerd ;)
FROGGS hehe
diakopter++
not_gerd you can get away with quite some sloppyness as an #if will happily accept un defined value 18:51
the preprocessor considers those 0
using #ifdef with a value defined to 0, though...
diakopter I did it with 0/1 because it seemed fastest to implement 18:52
I was having trouble estimating how long it would take to make it conditionally define using the config.h.in
FROGGS so we go with #if no matter what?
not_gerd no, that would break for positive values that are merely defined and not defined to non-zero 18:53
diakopter if with random magic values, yes
:)
not_gerd think -DFOO vs -DFOO=1
dalek arVM: 4e0ed79 | (Gerhard R)++ | build/config.h.in:
Make MVMint8 a signed char - signedness of plain char is implementation-defined
18:54
diakopter not_gerd: should short be signed short? 19:03
and int.. and longong
not_gerd diakopter: no
benabik I think short/int/long are signed by standard, but char is 'whatever' 19:04
diakopter k
not_gerd for hysterical raisons, that's only true for char
diakopter TimToady: is it cargo culting to talk about cargo culting? 19:05
benabik C89 3.1.2.5: There are four signed integer types, designated as signed char, short int, int, and long int
diakopter cries at the hundreds of gcc warnings 19:06
FROGGS diakopter: np, somebody will care :o) 19:07
diakopter well last time I reconciled them all (more than ayear ago) I found genuine bugs
not_gerd clang -Weverything -Werror 19:08
add stuff like -Wno-padded to remove false positives and keep fixing errors until your code compiles
FROGGS diakopter: true
clang is really cool for these kind of things
diakopter not_gerd: another configure/build request :) 19:09
not_gerd GNU make is nice in that regard as you can add -Wno-* options on a per-file basis
diakopter need dynamic libraries of every .o/.obj, so we can build a dynamic libmoarvm 19:10
(and also a static one)
need to make a custom .c inference rule (or 5) 19:11
(I presume)
arnsholt Mmmm. Implicit rules 19:13
diakopter TimToady: but we won't actually be linking to libperl all the time - it'll fallback to not do it if it doesn't find a libperl (unless someone makes a magic perlbrew thing that reproduces the build environment of the non-libperl perl installation)
or if someone does --no-embedp5 19:14
arnsholt I've written quite a few of those for gmake, but I've no idea how nmake works for those
diakopter arnsholt: I know how to do it
see the dyncall branch Makefile.in
er, the Makefile it generates rather
not_gerd arnsholt: old-style syntax .c.o
works in GNU, BSD and MS
arnsholt Yeah, it's not hard. But they have bitten me on the ass repeatedly =)
Right, old-style is usually good for portability I guess 19:15
not_gerd conditionals use different syntax, though - !if, .if, ifeq
also, portable special variables are rare 19:16
among those are $@ and $* though, which was enough to get the inference rules going
diakopter not_gerd: do you want to tackle the building of the libraries? 19:17
not_gerd anyone knows which architectures need -fPIC off-hand? 19:18
diakopter all windows I thought 19:19
not_gerd: I'll take that as a yes... :)
not_gerd diakopter: at least gcc/mingw can build DLLs from ordinary object files 19:21
moritz "man gcc" says about -fPIC: This option makes a difference on the m68k, PowerPC and SPARC.
19:24 jnap joined
diakopter reads www.symantec.com/connect/articles/d...s-part-one 19:27
jnthn: I fuzzed a segfault out of moarvm nqp.moarvm :D 19:34
mwilson@host07:~/src/MoarVM/nqp-cc$ ../moarvm nqp.moarvm -s -- foo.nqp
Unknown compilation stage 'classname'
frame_name_949Segmentation fault
.oO( what do you mean by 'classname'? )
19:35
jnthn Copied from JVM and not needed for MoarVM 19:36
...what is -s? :) 19:37
diakopter yeah but what in the world called it
just me figuring out that it's ignoring that arg
mwilson@host07:~/src/MoarVM/nqp-cc$ ../moarvm nqp.moarvm '' -e '1'
Illegal option --.
This compiler is based on HLL::Compiler.
...
Segmentation fault
jnthn It means you ade it into compile
*made 19:38
and it's iterating thorugh the compilation stages
diakopter \\o/
19:39 donaldh joined
diakopter mwilson@host07:~/src/MoarVM/nqp-cc$ ../moarvm nqp.moarvm '' -e '' 19:39
Error encoding UTF-8 string near grapheme position 17 with codepoint 920684456
line 1224 in nqp-src/NQPHLL.nqp (op <unknown>, instr 0<unknown>, frame frame_name_896, compunit ./NQPHLLMoar.moarvm)
(*sigh*)
position 17 ?!? 19:40
not_gerd: I think something's still wonky with the clargs stuff
^ should not be happening
jnthn diakopter: That's happening quite a way in, fwiw.
May be clargs related, but maybe not too... 19:41
diakopter oh
mwilson@host07:~/src/MoarVM/nqp-cc$ ../moarvm nqp.moarvm 'foo.nqp' 19:42
Failed to tell position of filehandle: Illegal seek
*sigh*
masak: when I find brokenness with *every* attempt... what does that say about the fuzziness vs. readiness? 19:43
(note: I think it's far more likely that it's my code that's causing most of these problems than otherwise) 19:45
TimToady well, it's either somebody's code, or lack thereof... 19:52
19:57 jnap joined
masak diakopter: just note it all down, so that it can all be trawled through in due time. 20:02
diakopter: journeys consisting of small steps, etc.
diakopter masak: I think these issues are the pebbles at the top of the dam that are threatening to fall over 20:14
hopefully the rest of the dam surrenders to the flow quickly 20:15
jnthn suspects nobody but him was really hacking on NQP JVM selfhost and so has been through this before :)
masak pebbles, dams. they all need to be packaged and submitted. :) 20:16
20:16 jnap joined
jnthn Anyway, this is all at least a bit familiar. At first, it falls in a big heap before really doing anything. :) 20:16
diakopter I'm very sure the string impl are algorithmically sound.. if anything there are tiny errors in implementation 20:17
the things at the top of ops.c need tackled soon-ish
not_gerd ~~ 21:38
21:38 not_gerd left 21:59 jnap joined
masak hehe, "need tackled". :) 22:04
diakopter need tackled? 22:10
[to be] 22:11
22:13 yoleaux joined 22:14 yoleaux joined 22:29 benabik joined 22:32 yoleaux joined
dalek MoarVM: c512e1b | doughera++ | build/Makefile.in: 22:40
MoarVM: Remove nonportable conditional commands from Makefile.in
MoarVM:
MoarVM: Not all makes support conditional IF/ELSE/ENDIF statements.
MoarVM: Specifically, the /usr/bin/make supplied with Solaris 11 does not.
22:41 dalek joined
jnthn 4 patches from doughera++ 22:41