🦋 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