Parrot 4.8.0 "Spix's Macaw" | parrot.org/ | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 20 September 2012.
00:20 whiteknight joined
whiteknight good evening, #parrot 00:33
kid51 Yo! 00:34
whiteknight Do you know how to fix the g++ build error?
whiteknight I take that as evidence that there is a build problem with g++?
master? 00:35
kid51 Yes. github.com/parrot/parrot/issues/840
ttbot Parrot 6f3c284e MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/96947 00:40
whiteknight looking now 00:54
this might be a very easy fix 00:57
this code is...weird 00:59
no, wait. It just has an extra statement. Not weird 01:00
dalek rrot: 7c24a69 | Whiteknight++ | src/pmc/bytebuffer.pmc:
In ByteBuffer.set_string_native make sure to use an unsigned char* instead of a regular char* to make g++ happy. Also, remove a superfluous GET_ATTR and const a local variable to make the optimizer slightly happier. Fixes #840. dukeleto++ for reporting the issue, kid51++ for alerting me about it.
01:09
whiteknight kid51: Give that fix a shot. It should work 01:10
01:19 travis-ci joined
travis-ci [travis-ci] parrot/parrot#574 (master - 7c24a69 : Whiteknight): The build was fixed. 01:19
[travis-ci] Change view : github.com/parrot/parrot/compare/6...24a69dd2c4
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/2534452
01:19 travis-ci left
kid51 smolders 01:22
all g++ build complete; running 'make test'
dalek rrot/cpu_type_eliminate_gpp_warning: 3d2a484 | rurban++ | src/dynpmc/ (2 files):
dynpmc/os: actually build this dummy pmc for loadlib "os" backcompat
01:31
rrot/cpu_type_eliminate_gpp_warning: 39f8f91 | jkeenan++ | / (4 files):
Add ASSERT_ARGS() to two files; re-run 'make headerizer.'
rrot/cpu_type_eliminate_gpp_warning: 80b05d7 | jkeenan++ | MANIFEST.generated:
Merge branch 'master' of git@github.com:parrot/parrot
rrot/cpu_type_eliminate_gpp_warning: a2f9ec6 | jkeenan++ | / (8 files):
Merge branch 'master' of git@github.com:parrot/parrot
rrot/cpu_type_eliminate_gpp_warning: 7591343 | jkeenan++ | / (6 files):
Merge branch 'master' of git@github.com:parrot/parrot
rrot/cpu_type_eliminate_gpp_warning: 2e51418 | jkeenan++ | / (12 files):
Merge branch 'master' of git@github.com:parrot/parrot
rrot/cpu_type_eliminate_gpp_warning: a6856ac | jkeenan++ | / (12 files):
Merge branch 'master' of git@github.com:parrot/parrot
rrot/cpu_type_eliminate_gpp_warning: f2d576e | jkeenan++ | src/pmc/bytebuffer.pmc:
Merge branch 'master' of git@github.com:parrot/parrot
rrot/cpu_type_eliminate_gpp_warning: f3ab64e | jkeenan++ | src/platform/generic/cpu_type.c:
Eliminate a warning appearing in g++ builds.

In g++ builds, we were getting this warning:
src/platform/generic/cpu_type.c: In function 'STRING* Parrot_get_cpu_type(parrot_interp_t*)': src/platform/generic/cpu_type.c:48: warning: deprecated conversion from string constant to 'char*'
Not initializing with empty string avoids warning and appears to do no harm.
ttbot Parrot 67dfaf7d MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/96974 01:33
kid51 yuck, that was verbose
whiteknight rather have verbose than not know what he was doing 01:37
kid51 I guess I created my branch from the dangling HEAD I was using to look at the g++ problem. 01:38
Then I rebased branch from master.
ttbot Parrot 7c24a69d MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/96983 02:21
dalek rrot/rurban/bytebuffer-resize-gh835: 724d13c | rurban++ | src/pmc/bytebuffer.pmc:
Fix g++ builds in bytebuffer, wrong cast [GH #835]
03:51
rurban_mobile oh whiteknight++ already fixed my g++ bytebuffer problem. thanks. 03:53
This ttbot seems to be out of diskspace 03:55
06:58 l3l1p joined 07:23 l3l1p joined 07:33 Psyche^ joined 08:07 PacoAir joined 09:58 whiteknight joined
whiteknight good morning, #parrot 10:35
12:47 benabik joined
dalek rrot/840/has_libffi: 0de5107 | jkeenan++ | / (2 files):
When pkg-config not detected, set to 0.

For consistency with other header detectors, set HAS_LIBFFI to 0 rather than undef.
For #840.
13:17
13:33 PacoAir joined
dalek Heuristic branch merge: pushed 28 commits to parrot/threads by Whiteknight 14:13
whiteknight does nqp still not like parallel builds? 14:16
14:21 lucian joined 14:51 JimmyZ joined
rurban_mobile 840/has_libffi looks good. 15:06
nine Hi, #parrot! 15:13
rurban_mobile hi
did you look at my new threads destructor?
I'm not sure about the GC and interp's
nine rurban_mobile: just started doing that
rurban_mobile would be great 15:14
dalek rrot: 2934821 | jkeenan++ | / (2 files):
When pkg-config not detected, set to 0.

For consistency with other header detectors, set HAS_LIBFFI to 0 rather than undef.
For #840.
15:17
15:17 tuxit joined
rurban_mobile merged 840/has_libffi by cherry-picking it. I suppose kid51 merged threads into the branch. 15:17
15:21 whiteknight joined
rurban_mobile hi whiteknight. thanks for fixing my bytebuffers 15:21
whiteknight rurban_mobile: No problem. Easy fix 15:22
rurban_mobile I want to merge a couple more small branches.
e.g. kid51's and some of mine 15:23
nine rurban_mobile: there's a problem with Parrot_thread_kill_all: you set PARROT_TASK(task)->killed = 1, but task is only the local copy. The copy on the other interp, which is actually running will not be killed by this. When the foreign task finally stops, it wants to access its partner, which may already have been GCed at that point because you removed it from the foreign_tasks list 15:28
ttbot Parrot 2934821a MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/97083 15:42
rurban_mobile ttbot still out of discspace 15:46
dalek rrot: 61a4452 | rurban++ | config/gen/config_pm (2 files):
[GH #824] strip install_config.fpmc

install_fpmc and all installables contain unneccessary config hash entries, relevant only while building parrot, but not for running or building languages.
This saves 6360 bytes from install_config.fpmc
15:48
rrot: f690d21 | rurban++ | config/gen/config_pm.pm:
[codingstd] hard tabs
rurban_mobile Does anyone know mj41, Michal Jurosz? ttbot msvc 15:51
machine 8 needs to be looked at. tt.taptinder.org/buildstatus/parrot/master 15:54
ttbot Parrot f690d217 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/97129 16:35
dalek rtcl-nqp/nqp2: f7f90ce | coke++ | src/Partcl/Actions.pm:
Need an :op - use call
17:00
rtcl-nqp/nqp2: cb0c0f8 | coke++ | src/Partcl/Actions.pm:
avoid :pirop
Coke As someone who wants to implement a language on top of parrot, I could REALLY use some docs, folks. 17:22
benabik Not sure about the details of QAST but for PAST, IIRC, calling a sub was a :pasttype<call> Op with the sub as the first child and arguments as the rest. 17:26
Coke last time I tried to build partcl using the latest tools and docs on parrot, everything was out of date. 17:27
given that I know parrot-nqp is out of date, I've moved on to QAST, which has its own set of documentation issues, none of which are parrot's fault. 17:28
(QAST because that's what nqp-current is using)
benabik PCT had mostly correct documentation last I checked, although there wasn't a lot of great holistic documentation. 17:29
Coke goes back to look at ftp://ftp.uni-siegen.de/pub/parrot-docs/html/docs/book/pct/ch03_compiler_tools.pod.html 17:30
... and wonders why we're serving out our primary docs via FTP on that site. weird. 17:31
benabik Never seen that before.
Coke ah. CSS that makes it look like the real link is just a header.
that's off the "weekly documention snapshots" linkl. 17:32
benabik PDD26 describes PAST to some degree of reality: parrot.github.com/html/docs/pdds/pd...t.pod.html
Coke from parrot.org/dev/docs/user
benabik headdesks 17:33
We really need to scrub parrot.org.
Coke so, the docs for "parrot compiler tools" reference the out of date version of nqp, and also PGE, which is also out of date. 17:34
I am suprised PGE hasn't been deprecated yet. 17:35
benabik The PCT book should probably be axed. 17:36
Or gutted and the accurate bits merged up with other accurate bits.
Okay, the weekly site is only months out of date instead of years. Better than I expected. 17:39
I would also love to depreciated PGE, but I also think we need a regex/rule language that's separate from any of the HLLs. 17:45
Coke I don't think we need to rebuild that wheel. nqp already gives us regexes. (as opposed to parrot-nqp) 17:49
benabik And if I want to use them from something other than nqp?
Coke you load nqp. 17:50
19:00 rurban_mobile joined
dalek rrot/rurban/clang-warnings-gh843: 740b218 | rurban++ | config/auto/warnings.pm:
[GH #843] warnings: Improve clang support

clang requires warnings overrides for -Wno-parentheses-equality and adds -Wno-unused-result to src/ops/core_ops.c.
  (used in 29582199aef9ea9462 [GH #828] Optimize print_n/i and say_n/i)
19:15
rrot/rurban/clang-warnings-gh843: cea0a74 | rurban++ | config/gen/makefiles/root.in:
[GH #843] Add ccwarn::src/ops/core_ops.c SUFFIX OVERRIDE

For using (void)Parrot_io_write_b added (but not yet merged) with 29582199aef9ea94622b4202aee129521bc
19:16
rrot/rurban/clang-warnings-gh843: 543fc03 | rurban++ | config/gen/makefiles/root.in:
Add .c.i: suffix rule for convenience

  .i files as in perl5 are preprocessed files.
rrot/rurban/clang-warnings-gh843: c92346d | rurban++ | config/auto/warnings.pm:
[GH #843] Simplify clang warnings

Add support for clang++ C++ with .c source deprecation warning. Add support for multiple override warnings in the same file. We do not need a clang special case now.
19:31 lucian joined 19:58 contingencyplan joined 20:14 MikeFair joined
MikeFair Howdy #parrot! :) 20:15
So who here - if anyone - has seen/heard of JSR292? 20:21
Looks like it's part of Java 7 to add an "invokevirtual" instruction to the JVM designed for dynamic langauges (specifically for the case of using linkage and dispatch semantics defined by non-java languages) 20:23
sorear it's pretty close to useless for perl 6 iirc, if that's what you're asking 20:25
MikeFair sorear: P6 / Parrot - yeah 20:30
sorear: It seems that a PMC could be turned into a method handle
(for invocation of those kinds of methods anyways) 20:31
sorear: I'm currently in the midst of several large comprehension walls and was hopingto somehow simplify my life a bit by not needing to learn the ins and outs of three VMs when the work I actually like to do is three and four layers up the stack. :) 20:33
sorear which three VMs? 20:34
MikeFair Actually four now that I think of it; CLR (probably v4); JVM (probably v6 or 7); Parrot (probably the next one that's using 6model under the hood); and erlang 20:35
sorear MikeFair, the first compiler I wrote was written in C and generated machine code directly with putchar(0xD0) 20:36
you don't have to start five levels up the stack.
MikeFair sorear: No I don't, the first (and only) one I've ever written was in C++ 20:37
sorear: Have you seen/heard of Inform 7?
sorear: I'm not sure if you were there for that conversation on P6 a week or so + ago
20:37 l3l1p joined
sorear MikeFair: i've heard of it (more than a year ago now) and I urge you to start simpler 20:38
MikeFair sorear: hehe - I am, and I'm not :)
sorear: I'm starting really simple, 'Everything is a "thing", and a "thing" has attributes and can contain other things' 20:39
sorear: that's it
sorear: thing roughly equivalent to object or class
sorear: but it's also simultaneously a container
sorear: Once I get that far, then the focus turns to binding/relating the atributes of things to each other and other things 20:40
sorear: for instance, an attribute of a thing can be the result of applying an aggregation function to the things contained by the thing 20:42
sorear: Think of a list or an array as a thing containing other things, 'the count attribute' would be such an attribute 20:43
sorear: Or any result you can think of creating using a SQL group by/having clause 20:44
sorear: Lastly, at least as it relates to thing construction, you can bind attributes to the attributes of other things -- this is a lot like the currencyManager/bindingContext from .Net 20:45
sorear: The best way to describe it is that i'm creating a form of quantum entaglement between things/attributes 20:47
s/I'm creating/the idea is to create/
sorear: The entaglement can be direct, or it can be tied via a function call
So that's the 'nugget' i'm looking at, to create a language/runtime for a distributed set of things. 20:49
Use XMPP as the carrier for the distributed network and make "things" appear as JIDs on the XMPP network so they can be interacted with 20:50
I'd also like to create a communication based on ZeroMQ/CrossRoads I/O to replace the traditional call stack 20:53
This is practically identical to parrot's current concept of forwarding an execution context instead of having a call stack
I'm really hoping to discover a good mapping metaphor between Objects/Classes/Threads (or Things/Kinds/??Actors?? in Inform7) and "Context/Socket/Queue" ine the ZMQ/Crossroads I/O paradigm 20:56
At the moment i've got that a thing in what I'm creating is going to be a type of PMC in Parrot 20:57
A "Kind" is the equivalent of a "Class" 20:58
I believe that every instance of every object is going to have a "socket" and the "Class" is going to have a thread and a queue 20:59
well at least a queue
I'm looking at the 'Class' itself as being a instance factory manager and execution context for the things of that class 21:00
sorear: I'm completing adding "Java Scripting API" support to the OpenXION java compiler for HyperTalk and seeing what I can do to add it into the Open Wonderland virtual world engine 21:06
sorear: Neither of which having anthing directly to do with Parrot at the moment, but these are the small things I'm doing to learn what I need to for 'the main event' :) 21:07
sorear MikeFair: you need focus.
MikeFair sorear: The problem is I know so little about the problem I'm gathering data/info about what exists 21:08
sorear: For instance, if I wasn't just out there doing whatever I doubt I would have discovered Inform7 on my own and that has totally demonstrated how to address many of the challenges I was facing for 'How am I going to express that' 21:09
sorear: "How do people go about doing these things"
is my focus I suppose
I have a very clear focus on how it will be working (or at least the main premises of how it works) and I lack experience on how to make things that work like that 21:11
sorear MikeFair: are you trying to accomplish anything in particular? 21:12
MikeFair sorear: Aside from creating a new Internet based programming paradigm -- little things - first was "Make an interpreter that can execute "say" with Parrot. Then it was "Make Parrot interpreter properly parse (and hopefully execute) a HyperTalk if statement" 21:13
:) 21:14
sorear: Then it became 'add JSR223 to OpenXION and then make JSR223 bindings in OpenXION work in Open Wonderland'
sorear: Each of these projects represents a project that has done/is doing some aspect of what's needed 21:15
sorear: I'm going to very keen on listening to you talk about your work on enhancing Niecza's calling infrastructure :) 21:16
sorear: Because i'm expecting I'm going to learn a lot about what it takes to do that well 21:17
sorear: If anything actually occurs to me as something I can actually take on and succeed at, then I'd like to take it on and contribute it 21:21
sorear: Not so much whether or not it's something I already know how to do, it's more a factor of 'Is it something I can envision in my head how it works (or at least ought to work)' 21:22
21:23 sivoais joined
MikeFair One thing I don't think we, as a community, have satisfactorily addressed yet is being able to make large projects that can be understood by newer developers who are coming in after several releases and maybe even some architectural overhauls. 21:25
sorear MikeFair: niecza needs intelligent .log handling for Rat and FatRat, you could talk to colomon, that's a simple tiny project 21:26
MikeFair Not just making that work for them, but also make it work for those who are doing the development
sorear: That sounds like something I could do, but here's the thing I bump into, stuff like "What's Rat, what's FatRat? how do they fit in the overall architecture of niecza? If I was going to do something like that, then what I'd like to do is use it as an excuse to start playing with ZeroMQ and make the Log facility an internal ZMQ/Crossroads I/O service queue" and then begins a lengthy discussion of just educating me on 21:28
the project
Plus it's then an issue of "Do they even know what ZeroMQ is, and would they want to rearchitect their entire log facility to work that way" :) 21:29
sorear: And it's not like I even know what i'm doing in ZeroMQ yet -- I've done some simple test cases and _a lot_ of reading to understand how it works architecturally so I think I can use it properly. :) 21:32
LOL! And then I'm like "Haven't we actually solved this logging facility problem yet? Why are we reusing some infrastructure that's already been designed to do this kind of thing extremely well?" 21:33
s/are/aren't/
sorear MikeFair: I know what ZeroMQ is, I use it professionally, and if you want to use it to calculate logarithms, I want nothing to do with you. :D
MikeFair So then I'm off to go research logging projects and how to integrate that with niecza before writing something new 21:34
sorear: Well then, it's a good thing that I want nothing to do with using it to calculate logarithms. :D 21:35
sorear MikeFair: logging in niecza takes 2 and gives you back 0.693
MikeFair sorear: I'm happy to hear you've got that experience :) That's awesome
sorear: oops! :)
MikeFair checkouts the git repo for niecza 21:37
sorear: So you are currently using ZeroMQ to calculate logarithms? That's a bit fascinating because while I don't want to calculate logs, there are some distributed calculation algorithms I do want to do -- specifically I have an algorithm I'm working on that can compress arbitrary binary to 10% of its original size but the design is to use a distributed compute engine to reconstruct the original message 21:40
(specifically using the OpenCL/GPU as the hardware for doing the reconstruction) 21:41
sorear: My plan was to make the algorithm work using ZeroMQ and then make ZMQ the programming interface to the GPU engines 21:42
sorear MikeFair: no, I'm not using zmq for logarithms 21:43
MikeFair sorear: But I first have to see how easy it is to make that mapping happen -- What's the 'appropriate mapping' for binding OpenCL/CUDA, to a ZeroMQ queue/socket
sorear: oh hehe
sorear and I will not accept any patch which adds that 21:44
MikeFair sorear: calculating logs via ZeroMQ? Did someone do that already?
sorear I AM NOT GOING TO CALCULATE LOGS USING ZEROMQ. GO AWAY. 21:45
MikeFair isn't asking you to, nor is he trying to.
I'm looking at ZeroMQ as a way to make the interface and communication between the GPU paradigm and the CPU paradigm easier, but that's still a long ways off 21:46
sorry if asking offended you, I really thought you were just kidding about someone else perhaps being really persistent about that topic or something 21:47
Given that there's already a ZeroMQ binding to the Parrot VM, I'm also wondering if it's possible to use it as the basis for communications to bring erlang to the Parrot VM 21:48
I wasn't asking about ZeroMQ in Niecza :) 21:49
benabik MikeFair: Is English your first language?
MikeFair benabik: yes, but I think I misunderstood what sorear meant by "logs" I was thinking the equivalent of "syslog" 21:50
benabik: I'm also not getting a lot of sleep lately
Err .log 21:51
like I tried to say origianlly I have no clue what Rat and FatRat are -- sorry about that sorear 21:54
err had
Which is exactly to my point of new people coming into large projects
sorear Rat isn't a niecza-specific term, though. 21:55
MikeFair There's a whole world of specialized language and knowledge terms to learn, and that's in addition to the nuances of the dynamic state of the problen
err problem
sorear it's the Perl 6 type of rational numbers
MikeFair sorear: Right, and I still don't it because don't know Perl6 21:56
sorear you don't?!
MikeFair I know Perl5, and I've learned of parrot
I read many of Larry's exegesis' back in the day and liked where he was going with his thought trains 21:57
and I wouldn't even say I know Perl5 all that well
at least not to the point of being able to use all the modules
knowing the language is not the same as knowing the full set of CPAN modules
I written decent programs in Java, C#, and Perl and perhaps a couple others that I haven't dealt with in a long time. I've done a lot of work with SQL and speciically integrating a lot of different systems that don't talk much because they are all vertical silos with their own internal paradigms 21:59
Perl6 finally is a language that's beginning to express the semantics I think are the best semantics for writing real world applications that work for people :) 22:02
sorear: But that doesn't mean I yet comprehend how the details are working inside yet... 22:03
or know the language of things inside the system 22:04
sorry about that
sorear: Please excuse the ignorance - I actually thought .log meant something like syslog and Rat and FatRat were the pet names for the systems that sent messages to the log facilities of the language engine. 22:13
22:24 l3l1p joined
sorear ok 22:27
MikeFair thanks :D 22:33
AND now that I know what you're talking about - I'll look :)
sorear: A quick google search says that 0.693 is the Natural Log of 2 22:39
sorear: I assume that .log is meant as log10?
sorear dunno, I like to pretend base 10 logs don't exist, I've never encountered a use for them 22:41
benabik lg and ln are pretty much the useful ones.
dalek rrot/rurban/clang++-gh844: fad1f1e | rurban++ | Configure.pl:
Merge branch 'rurban/preload-config-steps-gh833' into rurban/clang++-gh844
22:44
rrot/rurban/clang++-gh844: 59b678a | rurban++ | / (3 files):
[GH #844] Add clang++ support, new auto::alignof step

clang++ does not allow struct definitions inside a type specifier, offsetof() in datatypes.h Thus probe for clang++ only for all ALIGNOF values in a new auto::alignof step. This is normally skipped. Add the definitions to feature.h.
22:47 l3l1p joined 22:49 rurban_mobile joined 22:50 whiteknight joined
rurban_mobile I gonna merge kid51's cpu_type_eliminate_gpp_warning branch. looks good 22:51
In the meantime I added better clang and clang++ support.
dalek rrot: 0dc1b1c | jkeenan++ | src/platform/generic/cpu_type.c:
Eliminate cpu_type.c warning in g++ builds

In g++ builds, we were getting this warning:
src/platform/generic/cpu_type.c: In function 'STRING* Parrot_get_cpu_type(parrot_interp_t*)': src/platform/generic/cpu_type.c:48: warning: deprecated conversion from string constant to 'char*'
Not initializing with empty string avoids warning and appears to do no harm.
22:56
MikeFair sorear: I'm not quite seeing what the problem with the output is here: 23:08
michael@Winter:~/Projects/Niecza/boot$ mono run/Niecza.exe -e 'say 2.log()'
0.69314718055994529
michael@Winter:~/Projects/Niecza/boot$ mono run/Niecza.exe -e 'say 2.ln()'
0.69314718055994529
michael@Winter:~/Projects/Niecza/boot$
Google says: 0.69314718056 23:09
rurban_mobile MikeFair: wrong channel, try #perl6 23:10
MikeFair rurban_mobile: thanks
23:12 kid51 joined
dalek rrot: 7dedbb7 | rurban++ | src/p (2 files):
[codingstd] linelength, function pod, cpu proc_arch init

Fix various condig std issues. Parrot_get_cpu_type() needs to be properly initialized in case of ifndef PARROT_HAS_HEADER_SYSUTSNAME
23:37
rrot: be71d13 | rurban++ | Configure.pl:
[GH #833] preload configure steps

Term::ReadLine does not work on my mingw, debugging configure steps is a pain. E.g. "b postpone auto::snprintf::runstep" does not set a breakpoint when debugging Configure.pl
I added a preloading of all steps into early Configure.pl so that breakpoints can easily be set. The old handling is not changed.
23:38
rrot: c4de4b4 | rurban++ | Configure.pl:
[GH #833] preload only when debugging perl via -d

As per jkeenans comment github.com/parrot/parrot/issues/83...nt-8634064
rrot: d85def3 | rurban++ | Configure.pl:
Merge branch 'rurban/preload-config-steps-gh833'
23:40 lucian joined
dalek rrot: f2f6feb | rurban++ | ChangeLog:
Add merged branches to ChangeLog, fix tabs
23:44
23:44 rurban_mobile joined