🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm Set by lizmat on 8 June 2022. |
|||
00:00
reportable6 left
00:02
reportable6 joined
06:00
reportable6 left
06:01
reportable6 joined
|
|||
Geth | rakudo/main: f25dcacceb | (Elizabeth Mattijsen)++ | lib/NativeCall.rakumod Only ignore last arg in a Method if '%_' Although technically currently all Methods have a *%_ added to their signature, it *is* possible to create a Method artificially that does not have that. So we need to check for the name here, as is being done in similar situations in NativeCall. |
09:40 | |
rakudo/main: 92da00a970 | (Elizabeth Mattijsen)++ | lib/NativeCall/Compiler/GNU.rakumod Streamline NativeCall::Compiler::GNU (part 2/2) Re-imagine mangle_cpp_symbol using mostly nqp ops, hopefully having a good effect on compiling large nativecall libraries |
10:52 | ||
rakudo/main: cb6e5080cc | (Elizabeth Mattijsen)++ | lib/NativeCall/Compiler/MSVC.rakumod Streamline NativeCall::Compiler::MSVC (part 1/N) The :R parameter is always the empty string, so remove all references to it. |
11:11 | ||
patrickb | lizmat: Is the cpp stuff used in pure C bindings? | 11:17 | |
lizmat | I haz no idea | ||
Geth | rakudo/main: 92113fe479 | (Elizabeth Mattijsen)++ | lib/NativeCall/Compiler/MSVC.rakumod Streamline NativeCall::Compiler::MSVC (part 2/N) cpp_param_letter either only takes a single positional, or a single positional and two nameds. Join the nameds together into a single optional positional for performance |
11:28 | |
rakudo/main: 7766fbbd6e | (Elizabeth Mattijsen)++ | lib/NativeCall/Compiler/MSVC.rakumod Streamline NativeCall::Compiler::MSVC (part 3/N) - simplify helper sub cpp_param_letter into (mostly) a hash lookup - use more natives |
11:48 | ||
12:00
reportable6 left
12:03
reportable6 joined
|
|||
Geth | rakudo/main: ca4bd66c53 | (Elizabeth Mattijsen)++ | lib/NativeCall/Compiler/MSVC.rakumod Streamline NativeCall::Compiler::MSVC (part 4/4) Re-imagine mangle_cpp_symbol using mostly nqp ops, hopefully having a good effect on compiling large nativecall libraries |
12:36 | |
lizmat | and this concludes my hacking on NativeCall for now | 12:37 | |
nine | coming | 14:34 | |
ww | 14:35 | ||
15:41
sena_kun joined
15:56
Altai-man joined
15:58
sena_kun left
|
|||
ab5tract | I was disappointed to discover recently that C++ remains more or less "un-bindable" without writing C wrapper functions. This wasn't Raku-specific though and also now I can't find the direct source of this information. | 16:09 | |
It actually seems that Swift has made some headway on this problem: github.com/apple/swift/blob/main/d...yStatus.md | 16:10 | ||
AFAIK its the only language to get so far | |||
coleman | Google's Carbon is experimental but has CPP interop as an explicit goal. | 16:15 | |
ab5tract | ah, nice | 16:20 | |
that's positioned as a sort of C++ superset or replacement, right? | |||
nine | > make && RAKUDO_RAKUAST=1 ./rakudo-m --ll-exception -Ilib -e 'use Test; plan 1; ok 1' | 17:33 | |
make: Nothing to be done for 'all'. | |||
1..1 | |||
Slowly getting there again... | |||
ok 1 - | |||
lizmat | ++nine! | 17:38 | |
17:51
notna joined
18:00
reportable6 left
18:01
reportable6 joined
|
|||
coleman | ab5tract: it is a replacement. There is also another experiment: cpp2. that one is a pure superset iirc. then there is ANOTHER one called the Circle compiler, which is a safer SUBSET. | 18:26 | |
So many CPP things going on | 18:27 | ||
lizmat | it feels to me that if Swift can do C++ interop, NativeCall should be able to do that as well? or am I missing something essential? | ||
coleman | I'd bet on Carbon, because Google will throw 1Billion dollars at it, but cpp2 and Circle work today. they're just more solo dev things. | 18:28 | |
I don't know enough about the details to know why it's hard to do it. I imagine there are all kinds of move/reference semantics that would be hard to map | 18:29 | ||
lizmat | greppable6: Test::output | 18:30 | |
greppable6 | lizmat, 5 lines, 3 modules: gist.github.com/587467f180147d0e9b...7bf005f5e1 | ||
lizmat | meh | 18:31 | |
nine | 72/150 make test passing | 18:55 | |
lizmat | wow, that's a lot from 0 | 18:57 | |
nine | Despite that I can't believe that I'm doing this again :D | 19:03 | |
lizmat | yes, it has a definite GLR feel about it, yes? | ||
nine | But yeah, at least it's not gonna be a matter of years this time | ||
notna | could someone comment, or better, approve, github.com/rakudo/rakudo/pull/5553, please?!? | 19:16 | |
thanks! | |||
nine | notna: at a first glance, the commit messages do not tell me why these changes are needed | 19:20 | |
notna | @nine: well, as I wrote in the commit message.. there is some history i.e. in github.com/rakudo/star/pull/198 | 19:23 | |
nine | notna: links in commit messages are not enough. The rakudo repository is now 18 years old. In this time we have already moved off Perl's RequestTracker and onto GitHub. In time we will move again and those links will stop working. Especially since GitHub is not under our control. | 19:25 | |
notna | nine: so what exactly do you want to finally approve it? | 19:26 | |
nine | notna: apart from that you require the reader to read through a discussion containing some 20 messages for them to hopefully arrive at the right conclusion. I.e. you put all that work on the reader. A commit messages is only written once but likely read many times. E.g. someone will go through these messages and create the ChangeLog. For them to go through dozens of commits, having to open links and | ||
summarizing what they read is a huge drag. | |||
notna: and last but not least, I and probably others as well read commit messages quite often when digging through some code and trying to understand why it is the way it is. This can even happen off-line (which is the most productive time). Links just hide the interesting content. | 19:27 | ||
notna: so first of all I require the commit message to answer the question "Why is this change needed?". I will then look at the change itself and check if the change actually solves this problem as stated. Then I'll look for whether the commit could cause any unrelated problems. | 19:28 | ||
Good advice in general is to make the reviewer's job as easy as possible. That increases your chances of getting a speedy review :) | 19:30 | ||
coleman | nine can you please tell my coworkers to write good commit messages | ||
notna | nine: so, if I should use github.com/rakudo/rakudo/blob/main...EMPLATE.md ... that's what you say? | ||
lizmat | nine: it was actually me who tagged you on that issue | ||
nine | coleman: only way to get those is to push back hard in reviews. Ask me how I know :) | 19:31 | |
coleman | I write beautiful little essays all the time. And they're like "bug fixed now" | ||
WHAT bug? WHAT fix? aahhhh | |||
notna | and "good" is always an own taste and perspective... if now clearly defined, documented..., right? | ||
nine | coleman (and everyone else who wants a laugh): look at my most favourite commit message of all time: github.com/ClickHouse/ClickHouse/c...5351c5c626 | 19:32 | |
coleman | Oh that looks like GitHub's dreaded "autosquash" feature in action | 19:33 | |
I don't like that thing. | |||
It's like a trash compactor | |||
nine | coleman: that template is good for bugfixes. Not bad for features. But really, if your commit message is the answer to the question "Why is this change needed?" you're doing well | ||
err notna ^^^ | 19:34 | ||
coleman: clearly squashed, but even so, the headlines themselves are hilarious. I mean..... Timmy?! | |||
coleman | i mean i dash stuff off while hacking, but clean it up before submitting I hope | 19:35 | |
"please work", "please work pt. 2", "wip", etc. | |||
Geth | rakudo/main: 6e55b118ed | (Anton Oks)++ (committed using GitHub Web editor) | src/Perl6/Compiler.nqp Compiler.nqp: Add $rakudo-flavor references: github.com/rakudo/rakudo/pull/5516 github.com/rakudo/star/pull/198 |
19:38 | |
lizmat | nine: you're off the hook :-) | 19:39 | |
ab5tract | notna++ | 19:40 | |
nine: I thought I was keeping track of the chat, but apparently not since I have no idea how we landed back at 72 in make test :) | 19:41 | ||
notna | lizmat: THANK YOU!!! And I'll try to have better commit messages in the future! | 19:42 | |
lizmat | ab5tract: nine went back to a branch by jnthn from last year's RCS | ||
to fix all compile-time shenanigans once and for all | 19:43 | ||
ab5tract | Oh, nice! | ||
lizmat | the branch had gone a bit stale and was not complete yet | ||
19:43
notna left
|
|||
ab5tract | notna: I’ve also struggled with the commit message moment after doing long discussions across tickets | 19:45 | |
tellable6 | ab5tract, I'll pass your message to notna | ||
ugexe | still needed more review tbh | 20:28 | |
for example it doesn't explicitly close the file handle it opens | 20:29 | ||
lizmat | ugexe: other things? | 20:33 | |
ugexe | im not sure if how it choses path separator is correct on different windows variations, i.e. if it does the same thing as $*SPEC.dir-sep | 20:35 | |
lizmat | this is NQP land, so $*SPEC doesn't exist yet | ||
Geth | rakudo/main: c888a1166d | (Elizabeth Mattijsen)++ | src/Perl6/Compiler.nqp Make sure we close the flavor file |
20:37 | |
ugexe | the env variable also doesn't make sense to me | ||
lizmat | you mean: the name, or the fact that you can set it with a env variable? | 20:38 | |
ugexe | if we have a file, an environment variable isn't also needed. further, the environment variable is able to influence the output in a way that could potentially confuse users | ||
like `\b\b\b\b\b\b\bDonate to Raku <some malicious link>` | 20:39 | ||
lizmat | well, if people are able to affect your environment variables, you might have a bigger issue? | 20:40 | |
and if you're thinking Docker images: adding a flavor file there is also then pretty trivial? | 20:41 | ||
20:41
squashable6 left,
shareable6_ left,
quotable6_ left,
nativecallable6_ left,
benchable6_ left,
bisectable6_ left,
statisfiable6 left,
reportable6 left,
notable6_ left,
bloatable6_ left,
unicodable6_ left,
evalable6_ left,
committable6_ left,
tellable6_ left,
releasable6_ left,
linkable6_ left,
sourceable6_ left,
coverable6_ left,
greppable6_ left
|
|||
ugexe | HLL::SysConfig.path-sep() | 20:43 | |
lizmat | % nqp -e 'say(HLL::SysConfig.path-sep())' | 20:46 | |
Cannot look up attributes in a HLL::SysConfig type object. Did you forget a '.new'? | |||
I guess a "new" needs to be added :-) | 20:47 | ||
ugexe | github.com/Raku/nqp/blob/fe55b7bf8...qp#L16-L24 | 20:49 | |
looking at how all that determine install dir i would ask why that logic isn't emulated in the pr | 20:50 | ||
lizmat | I think the "$!path-sep := nqp::backendconfig<osname> eq 'MSWin32' ?? '\\' !! '/';" code comes from github.com/Raku/nqp/blob/fe55b7bf8...ig.nqp#L14 | 20:51 | |
20:52
sjn left
|
|||
Geth | rakudo/main: c8855956dc | (Elizabeth Mattijsen)++ | src/Perl6/Compiler.nqp Use HLL::SysConfig to obtain path-sep As suggested by ugexe++ |
20:53 | |
ugexe | right | ||
environment variable also has the potential to be confusing for anyone using e.g. rakubrew | 20:54 | ||
lizmat | why? | ||
ugexe | if the environment variable is used to show the flavor for some rakudo install i have, that shouldn't apply to other unrelated rakudo installs | ||
lizmat | ah, gotcha | ||
ok, that clinches the env variable idea for me | |||
ugexe | its too bad there isn't something like BEGIN either, since it feels like it should only ever have to be determined once | 20:58 | |
lizmat | hmmm | 21:00 | |
I wonder if we can tweak tools/build/gen-cat.nqp to get the flavor in the actual code being compiled | 21:05 | ||
ugexe | that'd probably be more ideal | 21:06 | |
lizmat | then we could just use the env variable at compile time | 21:07 | |
no need to have a file on the file system then | |||
I'll sleep on tha | |||
t | |||
21:09
sjn joined
|
|||
ugexe | yeah | 21:11 | |
m: use Perl6::Compiler:from<NQP>; say Perl6::Compiler.lvs.as-perl6(""); | 21:12 | ||
camelia | Don't know how to create Perl6-style language version from Str in block <unit> at <tmp> line 1 |
||
nine | Maybe the whole thing should just go back to the drawing board? | 21:18 | |
Geth | rakudo/main: f253d68b85 | (Elizabeth Mattijsen)++ | 2 files Generate Rakudo Flavor into the actual code Adapt tools/build/gen-cat.nqp so that it will look for the string #RAKUDO_FLAVOR# in the source being processed. If found, it will look in the environment for the RAKUDO_FLAVOR variable. If that is set, then it will replace the #RAKUDO_FLAVOR# target with a "' $flavor'". If it is not found, it will generate an empty string ... (18 more lines) |
21:52 | |
23:28
Altai-man left
23:39
kjp left
23:40
kjp joined
|