»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:00
mcmillhj left
00:02
raschipi joined
00:04
dj_goku left
00:08
Ven joined
00:09
Ven is now known as Guest30373
00:12
mcmillhj joined
00:14
Guest30373 left
00:17
mcmillhj left
00:25
AlexDaniel left
00:34
lookatme joined
|
|||
lookatme | morning .o/ | 00:34 | |
00:40
mcmillhj joined
00:41
raschipi left
|
|||
Herby_ | \o | 00:42 | |
00:45
mcmillhj left
00:54
Actualeyes joined
00:56
mcmillhj joined
01:00
mcmillhj left
01:17
bpmedley joined
01:20
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:25
aborazmeh left
01:27
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
samcv | how do i make sure that i can use one library in another. they are in the same path as each other | 01:32 | |
but it seems i cannot refer to the same directory they are in? | |||
or i guess the solution is to call them from another script instead of running the .pm6 file itself | 01:33 | ||
lookatme | do u mean `use lib <PATH>` ? | ||
samcv | yeah if i run some .pm6 file from an arbitrary directory. it can't find library files in the same folder as it | ||
but if i use the .pm6 file in some perl 6 file i can run the .pl6 file fine | 01:34 | ||
myscript.p6, ./folder/lib/module1.pm6, ./folder/lib/module2.pm6. i can't execute module1.pm6 from ./ | 01:35 | ||
it doesn't find the other module located in the same folder. but if i include module1 in myscript.p6, then it is fine | |||
lookatme | The .p6 file contain a shebang `#!...` | ||
include module ? | 01:36 | ||
samcv | use lib 'folder/lib'; use module1; | ||
lookatme | oh. | 01:37 | |
samcv | so i guess the module1 is using the .p6 script's lib declaration or whatever | ||
just seemed interesting i can't execute the .pm6 script itself and it doesn't recognize the module is in the same folder | |||
it only looks at system/user installed perl 6 modules | |||
lookatme | How you execute module1.pm6 ? | 01:39 | |
samcv | just running it with perl6 | ||
lookatme | I think they can find other module except you include lib path `./folder/lib` | 01:40 | |
s/can/can't/ | 01:42 | ||
Just try `perl6 -I... ` | |||
ugexe | require $?FILE.parent.child("foo.pm6"); ? | 01:44 | |
01:46
cpage_ left
01:47
dj_goku joined,
bpmedley left
|
|||
ugexe | otherwise remember lexical module loading | 01:48 | |
`run $*EXECUTABLE, "-I" <<~<< $*REPO.repo-chain.map(*.path-spec)` this is how the problem is solved when spawning procs | |||
samcv | heh i remember i did some shady IO stuff somewhere.. i finally am working back on certain code and found it | ||
ugexe | otherwise declare them in META6.json and -I. | 01:49 | |
samcv | now to get this working again | ||
hmm very interesting ugexe | |||
ugexe | -I. is different from -Ilib (so `use lib <.>` and `use lib <lib>`) in that it uses the provides of META6.json to map namespaces to paths | 01:51 | |
01:53
dj_goku left,
cdg joined
|
|||
samcv | very cool | 01:54 | |
ugexe | my @parts = $?FILE.parts; repeat { } while pop(@parts) ne 'lib'; require @parts.join('/'); # something dirty like this probably works for finding a modules own lib/ to use | 01:55 | |
use lib @parts.join('/') rather | 01:56 | ||
02:20
geekosaur left
02:21
geekosaur joined
02:41
lookatme left
02:42
pilne left
02:44
aborazmeh left
02:47
khw left
02:50
Cabanossi left
02:52
Cabanossi joined,
kyan joined
02:56
lookatme joined
02:58
noganex joined
03:01
noganex_ left
03:16
lookatme left,
lookatme joined,
mr-foobar joined
03:18
kyan left
03:20
Cabanossi left
03:21
Cabanossi joined
03:29
kyan joined
03:35
mr-foobar left
03:36
dj_goku joined
03:41
dj_goku left
|
|||
samcv | yay my changes to markdown renderer got merged in :) | 03:50 | |
03:56
zapwai left
03:57
wamba joined
04:03
kurahaupo left,
kurahaupo joined
04:17
kurahaupo_ joined
04:20
kurahaupo left,
Cabanossi left,
cdg left
04:21
Cabanossi joined
|
|||
samcv | i need to fix escaping of backticks so you can use backticks in codeblocks | 04:33 | |
04:40
cpage_ joined
04:43
wamba left
04:51
BenGoldberg left
05:18
mcmillhj joined
05:21
raiph left,
raiph joined
05:23
mcmillhj left
05:24
dj_goku joined
05:25
raiph left
|
|||
samcv | would be nice if i can get commit access to that repo :3 heh. since i've been making so many changes. maybe should ask for it | 05:26 | |
05:26
raiph joined
05:29
dj_goku left
|
|||
samcv | wow finally this gets merged into vim syntax highlighting! after. i opened it in October! github.com/vim-perl/vim-perl6/pull...-303756374 | 05:30 | |
Geth | doc: antquinonez++ created pull request #1333: Remove dupe consecutive words |
05:33 | |
05:34
mcmillhj joined
|
|||
Geth | doc: eb8daf9160 | (Antonio Quinonez)++ | 6 files Remove dupe consecutive words |
05:34 | |
doc: 5f7a089168 | (Samantha McVey)++ (committed using GitHub Web editor) | 6 files Merge pull request #1333 from antquinonez/dupes Remove dupe consecutive words |
|||
05:38
mcmillhj left
|
|||
ugexe | ugexe.com/perl-toolchain-summit-201...and-perl6/ | 05:48 | |
05:48
Cabanossi left
05:50
mcmillhj joined
05:51
Cabanossi joined
05:55
wamba joined
05:57
mcmillhj left
06:06
skids left
06:09
xtreak joined
06:24
CacoS joined
06:26
mr-foobar joined
06:28
darutoko joined
06:34
Cabanossi left
06:36
Cabanossi joined
06:43
astj_ joined,
astj left
06:52
robertle joined
06:54
wamba left
07:03
rindolf joined
07:08
mattp_ left
07:12
dj_goku joined,
dj_goku left,
dj_goku joined
07:17
dj_goku left
07:18
espadrine joined
07:19
ufobat joined,
mattp_ joined,
kurahaupo__ joined
07:20
kurahaupo_ left
07:21
dwarring left
07:24
kurahaupo joined,
kurahaupo__ left
07:25
imcsk8 left
07:33
kurahaupo_ joined
07:34
kurahaupo_ left,
imcsk8 joined,
kurahaupo left,
kurahaupo joined,
Cabanossi left
07:35
rurban joined,
rurban left
07:36
Cabanossi joined
07:40
dakkar joined
07:45
zakharyas joined,
mcmillhj joined
07:48
aborazmeh joined,
aborazmeh left,
aborazmeh joined
07:50
mcmillhj left
07:55
domidumont joined
08:01
domidumont left
08:02
domidumont joined
08:04
parv joined
08:05
finanalyst joined
|
|||
finanalyst | feedback on perl6-users told me to talk here. I'm interested to know why Task::Star was thrown out of the Ecosystem without much notice | 08:06 | |
I relied on it to get a minimum set of modules | |||
I've been tracking module popularity (there's a link on the module page), and the set of recursively cited modules is fairly stable. | 08:07 | ||
lizmat | finanalyst: I'm afraid we got a little bit too enthusiastic at the PTS :-( | 08:08 | |
finanalyst | So how about a Task::Popular that basically takes the most popular modules (that pass all tests) | ||
lizmat | sounds like a good idea :-) | 08:09 | |
finanalyst | I can look at all the data and see if there is significant break between the most popular and the less popular | ||
then compile a Task module from the results. Update say once a month | 08:10 | ||
If a module starts breaking on Travis, then it gets eliminated from the list | |||
08:15
domidumont left,
MARTIMM joined
|
|||
lizmat | ++finanalyst :-) | 08:17 | |
nine | I'm not sure that would actually be a useful collection. E.g. BioPerl6 is one of the dists with the most stars, but it has a very clearly separated audience. | ||
I guess more useful would be several meta dists based on certain areas, e.g. a web focused dist, a math dist, whatever. | 08:18 | ||
finanalyst | nine: stars has nothing to do with my proposal! Take a look at finanalyst.github.io/ModuleCitation/ | ||
You will see that the modules with the highest recursive citations are really useful | 08:19 | ||
basically a citation is a module that appears in a depends string in another module's meta.json | 08:20 | ||
nine | So those are our upriver modules. Certainly the ones that we should test the most, yes. | ||
finanalyst | by the way, I'm revising the page a bit. Rather than 'error' it should be non-ecosystem module. | 08:22 | |
08:22
aborazmeh left,
vimal2012 joined
08:25
guest359 joined
|
|||
vimal2012 | Why this error message | 08:29 | |
p6: say split (';' , 'a;b;c') | |||
camelia | Too few positionals passed; expected at least 2 arguments but got only 1 in block <unit> at <tmp> line 1 |
||
vimal2012 | I passed 2 arguments | ||
This example is given in docs.perl6.org/routine/split | 08:32 | ||
geekosaur | because you put a space between 'split' and '(' | 08:33 | |
you therefore passed it *one* argument, which is a parenthesized list | |||
08:39
MARTIMM left
08:46
margeas joined
08:47
margeas left,
margeas joined
08:48
Cabanossi left
08:50
vimal2012 left
08:51
Cabanossi joined
08:55
kurahaupo_ joined
08:57
kurahaupo left
09:00
kurahaupo__ joined,
xtreak left,
dj_goku joined
09:01
xtreak joined,
kurahaupo_ left
09:02
aborazmeh joined,
aborazmeh left,
aborazmeh joined
09:03
xtreak_ joined,
xtreak left
09:04
leont left
09:06
dj_goku left
09:07
xtreak_ left
09:08
xtreak joined,
leont joined
09:11
parv left
|
|||
eater | hm, I'm gonna do a talk about Perl6, are there any topics I should definitely cover? | 09:16 | |
09:18
mcmillhj joined
09:23
mcmillhj left
09:24
raiph left
09:29
xtreak_ joined
09:31
xtreak left
09:34
Cabanossi left
|
|||
tyil | eater: where? | 09:34 | |
pls do domcode | |||
also, certain topics that strike me as a perl noob would be the perl 6 regexes, the Inline:: modules, NativeCall stuff, and that p6 does both OO and functional styles very well | 09:36 | ||
09:36
Cabanossi joined
09:40
lookatme left
09:41
guest359 left
|
|||
mienaikage | Huh. I had a lexically scoped variable in a postfix for, wasn't expecting it to still be in scope outside of the loop! | 09:44 | |
nine | mienaikage: lexicals are scoped to the block. | 09:45 | |
09:47
kyan left
09:52
kurahaupo joined
|
|||
mienaikage | Yeah I know, it just caught me off guard as I don't recall the same happening in 5 | 09:52 | |
09:53
kurahaupo left
|
|||
nine | mienaikage: 6 is much more consistent in that regard. | 09:53 | |
09:54
kurahaupo__ left,
kurahaupo joined,
xtreak_ left,
xtreak joined
09:56
kurahaupo_ joined,
kurahaupo_ left
09:58
kurahaupo left
09:59
xtreak left,
stmuk joined
10:00
Zoffix joined,
xtreak joined
10:02
stmuk_ left
|
|||
Zoffix | finanalyst: it was removed due to being out of date and many people who don't use Rakudo Star thought it was a mandatory module to install, despite it not having a useful collection of modules. | 10:02 | |
nebuchadnezzar | Hello, is it normal to get some .repo-id under ~/perl6/precomp/ even if the module is already precompiled? paste.debian.net/940184/ | 10:04 | |
Zoffix | finanalyst: Task::Popular sounds entirely useless to me. The modules with most citations are the least wanted one to be stuffed into some distro, since by definition you're most likely to get them as a prereq to some other module. | ||
nine | nebuchadnezzar: yes, that cannot be avoided. | 10:05 | |
stmuk | Zoffix: it's useful if only for having a collection to smoke | ||
nine | nebuchadnezzar: it's pretty much just a marker that "I know, the repo-chain changed (~/.perl6 was added since precompilation) but the precomp files are still up to date" | ||
stmuk | I thought it sounded a great idea | ||
nebuchadnezzar | nine: thanks for the explanation | 10:06 | |
Zoffix | finanalyst: looking at your list, there are 7 different JSON modules and a bunch of HTTP modules. Just because something gets referenced a lot doesn't mean all the users are dying to get it. | ||
nebuchadnezzar | nine: I found some references to this in github.com/ugexe/zef/issues/117 but can not understand everything | 10:07 | |
10:08
aborazmeh left
|
|||
Zoffix | stmuk: why not just have a collection to smoke instead of releasing "Task::Popular" | 10:08 | |
nine | nebuchadnezzar: are there still issues? | ||
finanalyst | Zoffix: For someone new to Perl6, some help is needed | 10:09 | |
stmuk | Zoffix: I think using a Task:: to define a collection is sane and I don't particularly care what it's called | ||
finanalyst | Trashing Task::Star was reasonable for gurus, but not for occasional users | ||
nine | stmuk: I think Zoffix doesn't object to the name but to the contents (same as me) | ||
stmuk | I'd say the more collections being regularly tested the better | 10:10 | |
the better the coverage | |||
10:10
Zoffix left
|
|||
finanalyst | A statistical approach is a sane method. What is statistically significant says something about the Ecosystem | 10:10 | |
nebuchadnezzar | nine: with the precomp stuff, no, I just have the .repo-id under ~/.perl6 | 10:11 | |
nine | finanalyst: Zoffix' argument carries some weight. Task::Popular would not contain the modules most likely used for some work, but the modules used by the module that do the user's work. And as that they would get installed anyway by the actually most useful module.s | ||
finanalyst | I think the prevalence of JSON::Tiny for example, instead of JSON::Fast is an artifact of the newness of the Ecosystem | ||
nine: I understand and accept Zoffix's point | |||
nebuchadnezzar | nine: for the packaging of libraries, I tried to resume the options and it's time to think about which one we wants for Debian lists.alioth.debian.org/pipermail/...01138.html | 10:12 | |
finanalyst | nine: problem with a 'useful' by someone's definition is that it is a 'curated' distribution. That means someone needs to curate it | 10:13 | |
then you get old modules | |||
nine | nebuchadnezzar: seems to make difficult to provide packages for multiple versions of | ||
perl6 compilers": I don't see why? | |||
nebuchadnezzar: "optimisation: pre-compilation can not take advantages of CPU features since they are not known." but MoarVM code is not dependent on CPU features anyway? | 10:14 | ||
jnthn | I was just going to comment on that one | ||
stmuk | maybe Task::Popular::Empirically | ||
jnthn | Precompilation is to bytecode | ||
nine | And what does "bin-NMU" mean? | 10:15 | |
jnthn | So any CPU-specific stuff will happen in the JITting of that bytecdoe | ||
nebuchadnezzar | nine: bin-NMU is a binary Non Maintainer Upload, i.e. we force a rebuild for binary reason (no source change) | ||
jnthn: ok, so there is no draw back to use .moarvm files generated by an old perl6 toolchain with a new one? | 10:16 | ||
jnthn | nebuchadnezzar: You can't do that, though, because the precomps are linked against the earlier toolchain | 10:18 | |
nebuchadnezzar | meaning: we don't need to ask for a complete rebuild of packages when we package new MoarVM/NQP/Rakudo? | ||
jnthn | My point was just that precomp doesn't do anything architecture specific | ||
nebuchadnezzar | jnthn: ok, so optimisation is not a point | ||
jnthn | Right. | 10:19 | |
nine | nebuchadnezzar: if there's no precomp file for the exact running rakudo, it will precompile transparently (except for the time required) and store the generated files in ~/.perl6 (most of the time) | ||
nebuchadnezzar: so multiple Perl 6 installations are not an issue for distributing precompiled files. | |||
nebuchadnezzar | nine: ok, I'm not sure about the Debian policy for that point, I think we may want to avoid this step at run time for users, some of them may even not have a $HOME | 10:21 | |
nine | nebuchadnezzar: at some point we may add a fix for when there's just no place to write the precomp files to. Wouldn't be difficult. Just hasn't come up so far. | 10:22 | |
nebuchadnezzar: from my point of view, there's practially 0 reason to precomp on installation. It only has downsides. | 10:23 | ||
nebuchadnezzar: of course, Gentoo users may disagree :) But even there it doesn't make that much sense. | |||
kent\n | the question would be if dynamic-compile needs to write to privileged paths or not | 10:24 | |
and the security implications about where it *does* write to | |||
but yeah, if they all turn up in ~/.perl6, its just ugly, not a technical problem | 10:25 | ||
nine | kent\n: what do you mean by "dynamic-compile"? | ||
10:25
Mithaldu left
|
|||
kent\n | I mean, if you're avoiding pre-comp, but a real-compile-and-store happens, the latter is "on-demand", but they're otherwise equivalent conceptually | 10:26 | |
( I don't know exactly how rakudo works here, I'm just borrowing from my knowledge of python compilation ) | 10:27 | ||
samcv | m: my @array2 = [(1,2,3), (3,2,1)]; say @array2.all ~~ Cool | ||
camelia | True | ||
samcv | i don't wan tthis to happen. i don't want it to decend all levels. i only want it to match against the higest level | ||
is there a way I can do that? | |||
I want it to ~~ Positional = True; and ~~ Cool = False | |||
for an array of arrays | |||
as long as all items in it are positionals | 10:28 | ||
jnthn | m: say List ~~ Cool | ||
camelia | True | ||
jnthn | I don't think it's descending | ||
samcv | oh. | ||
ok then :P | |||
nebuchadnezzar | Thanks a lot for the feed backs, I'll wait for dod and some other Debian folks for their point | ||
nine | nebuchadnezzar: happy to help :) | 10:29 | |
samcv | will just make it more narrow! | ||
kent\n | the obvious downside of no-precomp I think will be if you have >1 user where every user who runs some perl6 app has to have compiled assets turn up in ~/.perl6 on-demand redundantly. ;) | 10:31 | |
10:31
yqt joined
|
|||
kent\n | I'd hope there's some sort of auto-magic though if the source file gets updated in some way so the assets are auto-recompiled though, if not, I'd have additional concerns. | 10:31 | |
samcv | m: my @a = 10, 'string'; say @a.all ~~ any(Str, Int) | 10:32 | |
camelia | False | ||
samcv | maybe can't use junctions on the right hand side with smart matching? | ||
10:32
Mithaldu joined
|
|||
nine | kent\n: of course there is :) That was almost all that made the implementation hard (it is cache-invalidation after all) | 10:32 | |
kent\n | yeah ;) | 10:33 | |
nine is incredbily glad that he hasn't read "delete the .precomp directory" advise in a long time | |||
kent\n | One of our "fun" problems is the "oh, you have a X with a new ABI and all dependents need to recompile". Our package manager handles this now, but its a bit of effort. If we did pre-comp, we'd probably need to use that spice for that problem. | 10:34 | |
nine | kent\n: the rule is simple. If you rebuild rakudo, you'll have to rebuild all Perl 6 packages. The Open Build Service rebuilds downstream always when a dependency gets rebuilt. | 10:35 | |
kent\n | Yeah. So we'll probably do what we do with Perl ( because well, the libdir changes when you get a new version and @INC only sees the newer libdir and so you have to rebuild everything ) | 10:36 | |
samcv | this is kind of crappy but this works: | ||
m: sub thing (@body where { my $var = True; .map({ $var = False if $_ !~~ Str and $_ !~~ Int }); $var }) { }; say thing (1,2,3) | |||
camelia | Nil | ||
samcv | since i can't do .all ~~ any(Str, Int) :\ | 10:37 | |
kent\n | nine: though I'd hope that "rebuild" is only needed when there was some relevant semantic difference, not simply "you ran the compile again but $(date) returned a different value from last time, so start over" | ||
jnthn | m: my @a = 10, 'string'; say all(@a >>~~>> any(Str, Int)) | ||
camelia | all(any([False True], [True False])) | ||
jnthn | m: my @a = 10, 'string'; say so all(@a >>~~>> any(Str, Int)) | ||
camelia | True | ||
jnthn | m: my @a = 10, 4.2; say so all(@a >>~~>> any(Str, Int)) | ||
camelia | True | ||
jnthn | huh | 10:38 | |
m: my @a = 10, 4.2; say all(@a >>~~>> any(Str, Int)) | |||
camelia | all(any([False False], [True False])) | ||
jnthn | oh... | ||
Hmm | |||
m: my @a = 10, 4.2; say so all(@a Z~~ any(Str, Int)) | 10:39 | ||
camelia | True | ||
jnthn | m: my @a = 10, 4.2; say all(@a Z~~ any(Str, Int)) | ||
camelia | all(True) | ||
jnthn | oh, d'oh | ||
m: my @a = 10, 4.2; say all(@a Z~~ any(Str, Int), *) | |||
camelia | all(True, False) | ||
jnthn | m: my @a = 10, 4.2; say so all(@a Z~~ any(Str, Int), *) | ||
camelia | False | ||
jnthn | m: my @a = 10, 'foo'; say so all(@a Z~~ any(Str, Int), *) | ||
camelia | True | ||
jnthn | samcv: Also an option ^^ | ||
nine | kent\n: no, the rule is really simple. If you rebuild rakudo, you'll have to rebuild all Perl 6 modules. | 10:40 | |
samcv | thanks jnthn | 10:41 | |
jnthn++ | |||
nine | m: say $*PERL.compiler.id | ||
camelia | A96DD9EC356462F5EC86542DD7F881B1B9E8CABF.1495663814.80485 | ||
nine | kent\n: notice the time stamp in there ^^^ | ||
kent\n | nine: that's basically going to be a "I guess we can't use precomp at all" then. | 10:42 | |
not unless there's a way to control that timestamp :p | |||
nine | kent\n: oh, you are using precomp. Either you precompile on your build server, or on every single user's machine and there for every single user of that machine. | ||
kent\n | yeah, its the "for every single user of that machine" that I'd be wishing could be avoided, but probably can't. | 10:43 | |
nine | But why? | ||
openSUSE packages ship with precomp files and it just works very well | 10:44 | ||
kent\n | because we can't ship the precompiled files. | ||
nine | why? | ||
kent\n | because that's not a thing our users want. | ||
nine | I don't understand | ||
kent\n | it strips users of choice. | ||
nine | how? | ||
kent\n | are precompiled files not akin to binary packages? | 10:45 | |
nine | The only thing they lose is the waiting time and the wasted disk space. | ||
kent\n | shipping precompiled files for us requires that we have a build chain that produces the assets, archives them, and publishes them somewhere for the install process, for every package | 10:46 | |
nine | It's the same as when you ship SVG icons _and_ pre-generated PNG versions in different sizes to speed up the loading time of apps. | ||
kent\n | that makes sense if you're already a binary distro where you already do that. | 10:47 | |
but we don't do that. | |||
nine | It doesn't keep a user from scaling them to a different size in any way. It only adds. | ||
kent\n | we don't ship pre-generated PNGs, unless upstream provides them as PNGs. | ||
nine | kent\n: so who's "we" anyway? | ||
kent\n | you said "Gentoo" | ||
sorry, if I lost context :D | |||
( I have highlights for people who mention Gentoo here ) | 10:48 | ||
nine | Ooh, that explains a lot. | ||
I thought even Gentoo had some infrastructure to provide some binary packages? | |||
10:48
dj_goku joined,
dj_goku left,
dj_goku joined
|
|||
kent\n | we do, on pain of torture, in edge cases: basically, it requires a dev to sit down and compile a package, and then upload the resulting tar.gz, and then end users install that. | 10:49 | |
But its not really "systemized" | |||
we don't have a build chain optimised for doing that. | 10:50 | ||
It works about the same as if upstream didn't produce source versions, and we shipped the binary files as-is from upstream. | |||
10:50
Cabanossi left
|
|||
kent\n | ( and it induces significant compromises for users because of how dependencies work ) | 10:50 | |
10:51
Cabanossi joined
|
|||
kent\n | as in, even though I *can* install libreoffice from both source, and binary, and binary versions are made available *because* of how long it takes to compile, I opted for a source build, because it introduced less headaches for dependency reasons | 10:51 | |
( because the binary version would have required me to downgrade a whole bunch of packages and solve a bunch of option conflicts due to the binary version forcing certain choices I didn't make myself ) | 10:52 | ||
so even though we /can/ have binary packages in a few specific conditions, they're generally frowned upon, and a source-only alternative is generally preferred wherever possible. | 10:53 | ||
And doing binary packages at *scale* is a significant maintenance headache | |||
nine | Ok, in that case, building on the target machine as part of installation does absolutely make sense. | 10:54 | |
10:54
dj_goku left
|
|||
kent\n | ( we used to maintain an entire compatibility set of packages for legacy support of x86 32bit ABIs, but we abolished that entirely as soon as somebody worked out a way to make our compile toolchain do both 32bit and 64bit abis for the required packages in a single pass ) | 10:54 | |
nine | There is still no _advantage_ for the user though. But as rakudo will be built on the user's machine, there's no way to centralize the build of the modules anyway. | 10:55 | |
kent\n | Right, I'm just saying that given the constraints stated, we probably won't want to use precompilation, because if simply recompiling rakudo without change is enough to need all existing precompiled assets to be recompiled, then that's going to introduce more problems for our package manager than its worth, so we'll just hang our head and let users do it on-demand | 10:56 | |
somebody will surely complain about the space waste, but we'll just have to tell them its out of our control :) | 10:59 | ||
( Well, there *might* be a way to do it, but it would be an independent task a sysadmin would have to explicitly run or something ) | 11:00 | ||
11:00
Ven joined
|
|||
kent\n | => The precompiled assets would be "unmanaged" | 11:00 | |
11:01
Ven is now known as Guest58223
|
|||
nine | kent\n: I still don't get why you can't rebuild the modules after rebuilding rakudo. Surely your package manager has to deal with such situations? | 11:01 | |
kent\n | Because you have to understand *how* it determines they need to be rebuilt: It needs a version identifier that forces a dependency graph constraint. | 11:02 | |
and that version identifier must be defined *before* rakudo compiles | |||
because the dependency manager must know in advance that rakudo /will/ break the system, and has to schedule all the modules for rebuild at the same time | 11:03 | ||
nine | What kind of sources for this identifier can you use? | 11:05 | |
kent\n | for instance, when we upgrade ICU, we don't upgrade ICU and have the package manage realise there's a problem after-the-fact, the ebuild that compiles ICU has to state some identifier describing the version of ICU it /plans/ to build, and then the package manager identifies all packages that needed a *different* value of that identifier, and schedules them all for rebuild. | 11:06 | |
That identifier has to be practically hard-coded. | 11:07 | ||
in the recipie that builds it. | |||
nine | Could it for example generate a sha of rakudo's sources and nqp's compiler id? | ||
kent\n | nope, that would require it to fetch rakudos sources, and unpackage it, and then execute the computation. But the identifier has to be defined before the sources are even fetched. | 11:08 | |
github.com/gentoo/gentoo/blob/mast...ebuild#L14 <-- this is about as dynamic as it gets, and that variable is defined before the file is sourced by bash. | 11:09 | ||
once that file is sourced, the variable "SLOT" is extracted, and then used for dependency calcuations | 11:10 | ||
( and that file is not allowed to do anything that does system IO during the source phase ) | |||
I mean, it can in some weird conditions, but you should basically assume the output of sourcing the file must be 100% invariant | 11:11 | ||
11:11
xtreak left
|
|||
kent\n | topologically, you have metadata, and phase functions. Metadata is acquired, metadata is used to drive dependency calculations, and then the phase functions ( of which, one is "src_fetch" and another is "src_unpack" ) are called at defined steps in the install process | 11:12 | |
nine | kent\n: oooh, we're going at this the wrong way! | 11:13 | |
kent\n: we're looking for a 100 % proof solution when we actually don't need one. We only need something that works for normal use cases which is: you rebuild rakudo when you upgrade to a new version. | 11:14 | ||
And that's all the trigger we need. You rebuild modules when rakudo's version changes. | |||
11:14
xtreak joined
|
|||
kent\n | well, rakudo might get rebuilt in *nonupgrade* conditions. | 11:14 | |
that's the problem I'm concerned about. | |||
bacek | aloha | 11:15 | |
nine | But we don't have to solve that! If it happes so what? Rakudo will precompile the modules on load. I.e. it falls back to the behavior we have if you don't precomp on installation. | ||
kent\n | right, but as I said ... this means "precomp on install is not going to be useful for even us" :D | 11:16 | |
nine | So there's no loss. In most cases you will gain something and in some cases you will not benefit from that gain. | ||
It will be useful almost all the time! | |||
bacek | speaking of "loss". Should be --optimize=3 be faster then --optimize=0? | ||
as in "perl6 --optimize=<n> t.pl" | 11:17 | ||
kent\n | I really should ask one important question: how is the precompile cache structured, is it possible to ascertain the source of a precompiled asset from the asset? | ||
11:17
xtreak left
|
|||
kent\n | because I think it could be possible to cheat | 11:17 | |
nine | kent\n: it is. Though we'd have to commit to the structure of the precomp files if you use the information. | 11:19 | |
kent\n | as long as the precompiled assets aren't "Owned by" the modules themselves, I can handle their recompilation, theoretically, as a post-installation hook, similar to how you might update a texmf index. | ||
11:19
xtreak joined
|
|||
kent\n | I'd just have to worry about the failure modes | 11:19 | |
nine | kent\n: what are the nonupgrade conditions that can trigger a rakudo rebuild? | ||
kent\n | nine: if rakudo has dependencies that are C based, like for example, perl has gdbm bindings, if those bindings get upgraded, even though perl gets no new features, the ABI changes, and so perl needs to be recompiled to not be broken. | 11:20 | |
( but only when the ABI changes, which is infrequent, just used as an example ) | 11:22 | ||
11:22
AlexDaniel joined
|
|||
kent\n | sometimes we need to trigger a reinstall for reasons that don't affect the built code, and its not really avoidable. But if we accidentally omit a runtime dependency in the .ebuild, then we need to ship an new minor revision to simply update the metadata. Anyone who previously installed the package by accident due to having the dependency already present will also get a rebuild triggered. | 11:27 | |
( we try to do this sparingly of course ) | |||
but as I said, I think there is possibly a sensible way to handle the precomp stuff, just it will require a bit of tooling | 11:28 | ||
like, if for instance there's a way to say "hey, rakudo, to an inventory of *everything* installed and blanket precompile it from scratch", that would make the effort less. | 11:29 | ||
do an* | |||
and as you said, you've spent effort in cache validation, so we might be able to cheat and solve this "out-of-package-manager" | |||
( we can kinda trigger that action from the post-install phase of rakudo itself, which will in effect recompile everything when rakudo finishes, and then we can trigger it from the post-install of every module, which will precompile the module itself into the cache ) | 11:30 | ||
11:35
Cabanossi left
11:36
Cabanossi joined
11:37
Guest58223 left
11:39
finanalyst left
11:43
Ven_ joined,
b2gills left
11:44
gregf_ joined
|
|||
Geth | perl6.org: 1b1f205043 | (Zoffix Znet)++ (committed using GitHub Web editor) | source/resources/index.html Update Laurent's book's URL and status Per github.com/LaurentRosenfeld/thinkp...-303986422 |
11:45 | |
11:45
bjz joined
|
|||
Geth | perl6.org: c813a72fd3 | (Zoffix Znet)++ (committed using GitHub Web editor) | source/resources/index.html Improve book status styling |
11:47 | |
perl6.org: 7355344152 | (Zoffix Znet)++ (committed using GitHub Web editor) | source/resources/index.html Update moritz's book |
11:48 | ||
11:50
Ven_ left
|
|||
Geth | perl6.org: 280cc583fb | (Zoffix Znet)++ (committed using GitHub Web editor) | source/style.scss Make <small> a bit lighter |
11:50 | |
perl6.org: a284d17664 | (Zoffix Znet)++ (committed using GitHub Web editor) | source/style.css Make <small> a bit lighter |
|||
11:50
Ven_ joined
11:59
pmurias joined
|
|||
nine | kent\n: those nonupgrade conditions sounds really rare, so I'm back at "rebuilding modules when rakudo's version changes is simply good enough". That said, precompiling all installed modules should be a rather small Perl 6 script thanks to CompUnit::Repository::Installation::installed | 12:01 | |
12:03
ufobat left
12:05
kurahaupo joined
|
|||
AlexDaniel | LaurentRosenfeld++ | 12:08 | |
a book done right :) | |||
12:11
pmurias left
|
|||
AlexDaniel reads | 12:12 | ||
12:13
stmuk_ joined,
pmurias joined
12:15
stmuk left
|
|||
AlexDaniel | m: say hello world’ | 12:15 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Bogus postfix at <tmp>:1 ------> 3say hello world7⏏5’ expecting any of: infix infix stopper postfix statement end statement modifier … |
||
AlexDaniel | m: say hello world' | 12:16 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3say hello world7⏏5' expecting any of: infix infix stopper postfix statement end statement modifier… |
||
12:19
Cabanossi left
12:21
Ven_ left,
Cabanossi joined,
b2gills joined
12:22
rindolf left
|
|||
AlexDaniel | u: -2 | 12:24 | |
unicodable6 | AlexDaniel, U+106A MYANMAR SIGN WESTERN PWO KAREN TONE-2 [Mc] (◌ၪ) | ||
AlexDaniel, U+1087 MYANMAR SIGN SHAN TONE-2 [Mc] (◌ႇ) | |||
AlexDaniel | O_O | ||
unicodable6 | AlexDaniel, 854 characters in total: gist.github.com/f0acd2f97ff8843859...d688839c85 | ||
AlexDaniel | ah, ok… | ||
12:24
Ven joined
12:25
Ven is now known as Guest96562
12:29
lolo78 joined,
raschipi joined
12:31
Guest96562 left
12:32
Ven_ joined
12:36
Ven_ left
12:37
gregf_ left,
dj_goku joined,
dj_goku left,
dj_goku joined
12:38
lolo78_ joined,
yqt left
12:39
Ven_ joined
12:40
lolo78__ joined,
stmuk joined
12:42
dj_goku left
|
|||
lolo78_ | AlexDaniel, thank you for your comment. | 12:42 | |
Laurent R. | |||
12:42
mcmillhj joined
|
|||
Ven_ | m: try { CATCH { default { say "x"; } }; PRE { False } } | 12:42 | |
camelia | Precondition '{ False }' failed in block at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Ven_ | m: try { CATCH { default { say "x"; } }; { PRE { False } } } | ||
camelia | x | ||
Ven_ | obviously... | ||
12:43
stmuk_ left
12:47
lolo78__ left,
Ven_ left
12:49
Ven_ joined
12:50
Cabanossi left
12:51
Cabanossi joined
12:54
Ven_ left,
Ven_ joined,
cdg joined
12:56
Ven joined,
Ven is now known as Guest32458
12:59
Ven_ left
13:03
xtreak left
|
|||
AlexDaniel | oh wow, it is huge… | 13:03 | |
13:05
xtreak joined
|
|||
perlpilot | .oO( my god ... it's full of stars ) |
13:06 | |
13:17
xtreak left
13:18
AlexDaniel left,
Cabanossi left
13:20
brrt joined
13:21
Cabanossi joined
13:22
Guest32458 left
13:24
Ven_ joined
13:28
cyphase left
13:30
pmurias left
13:31
pmurias joined
13:33
cyphase joined
13:39
kurahaupo left,
kurahaupo joined
13:40
kaare__ left
13:43
rindolf joined
13:48
gregf_ joined
13:49
Cabanossi left
13:51
Cabanossi joined
13:58
bjz_ joined
14:00
bjz left,
grondilu joined
14:02
khw joined
14:08
brrt left
14:16
domidumont joined
14:21
brrt joined
14:24
zakharyas left
14:25
dj_goku joined
14:27
zakharyas joined
14:28
robertle left
14:29
CacoS left
14:30
dj_goku left
14:31
cdg left
14:39
bjz_ left
14:46
kaare__ joined
14:48
dudz joined
14:50
Cabanossi left
14:51
Khisanth left,
Cabanossi joined,
Ven_ left
14:55
Ven joined
14:56
Ven is now known as Guest58622,
yqt joined
15:00
Guest58622 left
15:01
Ven_ joined
15:02
bjz joined
15:05
Khisanth joined,
Ven_ left
15:08
Ven joined,
Ven is now known as Guest96298
15:11
nadim joined,
nadim_ left
15:12
Guest96298 left
15:13
AlexDaniel joined
15:15
Ven_ joined
15:16
pmurias left,
zapwai joined
15:17
bjz left
15:19
Ven_ left
15:21
Ven_ joined
15:22
Ven_ left
15:31
Ven_ joined
15:33
brrt left
15:35
Cabanossi left
15:36
Cabanossi joined,
Ven_ left,
robertle joined
15:38
finanalyst joined,
Sound joined
15:39
Ven_ joined
15:44
Ven_ left
15:47
Ven_ joined
15:57
Actualeyes left
16:09
raschipi left
16:10
sufrosti1o left
16:11
sufrostico left
16:13
dj_goku joined,
dj_goku left,
dj_goku joined
16:15
finanalyst left
16:18
Ven_ left,
dakkar left
16:19
Cabanossi left,
dj_goku left
16:20
cdg joined
16:21
Cabanossi joined
16:24
Ven joined,
Ven is now known as Guest4882
16:28
darutoko left
16:37
skids joined
16:39
Guest4882 left
|
|||
nebuchadnezzar | erf, Unicode code may not be a really good idea mastodon.gougere.fr/users/sintzoff...ates/25415 ;-) | 16:41 | |
AlexDaniel | nebuchadnezzar: why not? | 16:42 | |
looks exactly like something you'd show to a kid :) | 16:43 | ||
or maybe not, but it's fun | |||
nebuchadnezzar | unfortunately, it does not works with perl6: paste.debian.net/940902/ | 16:45 | |
16:49
Ven_ joined
17:00
Ven_ left
17:06
espadrine left
17:07
cdg left
17:10
cdg joined
17:11
pilne joined
|
|||
Geth | perl6-examples: 38b8c30801 | (Sterling Hanenkamp)++ | categories/games/hangman.p6 Adding hangman |
17:18 | |
17:20
Cabanossi left,
setty1 joined
17:21
Cabanossi joined
17:31
espadrine joined
17:32
leont left
17:33
bacek left,
nadim left,
bacek joined,
nadim joined
17:34
lolo78__ joined
17:35
lolo78_ left
17:40
leont joined
17:52
pmurias joined
17:55
ufobat joined
18:01
dj_goku joined,
dj_goku left,
dj_goku joined
18:02
brrt joined
18:05
zakharyas left
18:07
dj_goku left
18:12
webart is now known as gtodd
18:19
Cabanossi left
18:21
Cabanossi joined
18:22
circ-user-G0Z2U joined
|
|||
circ-user-G0Z2U | p6: say (5 + 6); | 18:23 | |
camelia | 11 | ||
18:23
circ-user-G0Z2U left
|
|||
AlexDaniel | well, yes, it works :) | 18:26 | |
18:28
circ-user-iQZ3V joined
|
|||
circ-user-iQZ3V | p6: say 'öööööööööö' | 18:28 | |
camelia | öööööööööö | ||
18:28
circ-user-iQZ3V left
18:30
cdg left,
CacoS joined
18:44
lostinfog joined
18:51
lostinfog left
19:07
lolo78 left
19:09
brrt left
19:18
domidumont left
19:43
brrt joined
19:46
Sound left
19:49
drrho_ left
19:50
drrho_ joined,
dj_goku joined
19:51
zakharyas joined
19:55
dj_goku left
20:02
sufrostico joined,
sufrosti1o joined
20:06
nadim left,
simonm joined
20:14
dct joined
20:15
cdg joined
20:17
cdg left,
cdg joined
20:19
lolo78__ left
20:22
curt_ joined
20:25
CacoS left
20:29
dct left
20:35
marcovorg joined
20:38
margeas left,
setty1 left,
sufrostico left
20:39
sufrosti1o left
|
|||
brrt | any idea why p6doc requires openssl | 20:43 | |
that stuff ain't right | |||
ugexe | where is it required at? | 20:45 | |
I dont *think* any of its depends use openssl | 20:46 | ||
20:47
bacek_ joined
|
|||
ugexe | yep one of them does | 20:48 | |
Pod::To::Bigpage | 20:49 | ||
20:49
bacek left
|
|||
ugexe | for github.com/perl6/perl6-pod-to-bigp...e.pm6#L353 | 20:50 | |
20:50
itaipu joined,
sufrostico joined,
sufrosti1o joined
|
|||
ugexe | although it could just as well be optional | 20:50 | |
20:51
sufrosti2o joined
|
|||
brrt | hmm, i see | 20:52 | |
[Coke] | if you're doing doc work locally, you can avoid using that module. | 20:56 | |
brrt | i can't install it with zef at this point since i don't have the requiisite openssl libs installed | 20:58 | |
anyway, i'm going to sleep | |||
20:58
brrt left
21:01
zakharyas left
21:09
Sound joined
21:18
mcmillhj left
21:37
gregf_ left
21:38
dct joined,
dj_goku joined,
dj_goku left,
dj_goku joined
|
|||
Geth | doc: antquinonez++ created pull request #1335: Rewrap lines |
21:40 | |
21:43
dj_goku left
21:47
ufobat left
21:48
dct left,
mcmillhj joined,
Cabanossi left
21:49
pmurias left
21:51
Cabanossi joined,
espadrine left
|
|||
ugexe | you can install it with --force probably | 21:53 | |
21:53
mcmillhj left
|
|||
ugexe | still, shouldnt be in the depends of that module | 21:54 | |
21:55
bjz joined
21:57
dct joined
22:04
mcmillhj joined
22:07
kyan joined
22:09
mcmillhj left,
yqt left
22:14
itaipu left
22:20
mcmillhj joined
22:23
dct left
22:25
mcmillhj left
22:27
pmurias joined
22:32
mr-foobar left,
geekosaur left
22:34
geekosaur joined
22:36
mcmillhj joined
22:39
avuserow left
22:41
avuserow joined,
mcmillhj left
22:42
bjz left
22:48
simonm left
22:50
simonm joined
22:52
mcmillhj joined
22:53
leont left
22:57
mcmillhj left
22:59
BenGoldberg joined
23:04
mr-foobar joined
23:05
Cabanossi left
23:06
Cabanossi joined
23:08
mcmillhj joined
23:17
kurahaupo_ joined
23:18
kurahaupo__ joined,
mcmillhj left,
bwisti joined
23:19
kurahaupo left
|
|||
Geth | doc: d5b434ba52 | (Antonio Quinonez)++ | doc/Language/performance.pod6 Rewrap lines |
23:21 | |
doc: 03373646a9 | (Trey Harris)++ (committed using GitHub Web editor) | doc/Language/performance.pod6 Merge pull request #1335 from antquinonez/performance Rewrap lines — thanks @antquinonez++ ! |
|||
23:21
kurahaupo_ left
|
|||
ingy | can someone point me at a p6 modules that lexically changes the p6 grammar to introduce some new (multiline) syntax? say like writing a method in Python or somesuch... | 23:23 | |
ugexe | github.com/tony-o/perl6-slang-sql but probably bit rotted | 23:24 | |
ingy: ^ | 23:25 | ||
samcv | ugexe, it would be nice if there was some distinction from --force. like if you want it to reinstall but you want it to still fail tests and not install | ||
ugexe | uninstall is pretty fast | 23:26 | |
23:26
dj_goku joined,
dj_goku left,
dj_goku joined
|
|||
samcv | i guess we could have reinstall? | 23:26 | |
ingy | ugexe: thx. I'll take a look | 23:27 | |
samcv | that would be really useful as i sometimes reinstall modules as i'm working on them very often | ||
ingy | tony-o: ^^ know if that thing works, or could be made to? | ||
ugexe: know of any p6 doc explaining how to do that kind of thing | 23:28 | ||
ugexe | yeah... although i really need --force-$phase for --force-build --force-test etc | ||
ingy | that's exactly what I was looking for btw | ||
ugexe | ingy: i do not, but the term you are looking for is `Slang` | 23:29 | |
23:29
mcmillhj joined
|
|||
ugexe | github.com/FROGGS/p6-Slang-Tuxic/b...g/Tuxic.pm <- this is another one but just lets you put whitespace between the name of subroutine and open parens | 23:31 | |
23:31
dj_goku left
23:32
cdg left,
cpage_ left
23:34
mcmillhj left
|
|||
ingy | ugexe: thanks. this should get me going in the right direction. | 23:36 | |
23:45
mcmillhj joined,
pmurias left,
eater left
23:46
marcovorg left
23:50
mcmillhj left,
eater joined
23:57
Sound left
|