🦋 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: ... | log inspection situation still under development | For MoarVM see #moarvm
Set by lizmat on 22 May 2021.
00:07 reportable6 left 00:09 reportable6 joined 01:09 evalable6 left, linkable6 left 01:11 evalable6 joined 02:09 linkable6 joined 02:14 frost joined 02:18 frost left 02:28 vrurg left 03:57 frost joined 05:05 childlikempress joined 05:06 moon-child left 05:19 childlikempress is now known as moon-child 05:48 squashable6 left 06:07 reportable6 left 06:09 reportable6 joined 06:22 squashable6 joined 06:55 discord-raku-bot left, discord-raku-bot joined
nine Xliff: now I'm confused. The fix somehow broke your parallel toolchain? 07:09
07:32 nebuchadnezzar joined
Xliff nine: No. Bitrot did. It's been over 15 weeks since it was last used. 09:32
Today was the first successful parallel run since *Nov*
p6-GLib Suite compile times for v2022.02-108-gcd02552c9: 8941.6s (non-parallel) / 1409.57343595s (parallel) 09:34
Timings taken across 31 raku Projects 09:35
Note change of benchmark vehicle. Current stats are now: AMD Ryzon 9 5950x (16 processors, 32 threads, 3.4Ghz) 09:36
lizmat Files=1351, Tests=117115, 299 wallclock secs (35.88 usr 9.89 sys + 4158.16 cusr 335.24 csys = 4539.17 CPU) 09:37
nine Xliff: are you still using those long lists of -I? 09:40
Xliff Previous was Intel i9 10900 (10 core, 20 thread, 2.8Ghz) 09:43
nine: Yes 09:44
nine That's really costing you a lot of performance
Xliff nine: Irrelevant. There's no way to install them, so how else will it work?
nine Why is there no way to install them?
Xliff Until my issues with CURI are addressed, there's no way to handle the significant number of files without proper user feedback. 09:45
nine What issues?
Xliff CURI / zef is insufficient. Please see the dialog on 4655
nine: No proper user feedback during install.
I have work designed to address the issue, but it is still in progress. 09:46
I've investigated ALL of the options currently offered. They all fall short of where I'd expect Raku to be, at this point. 09:47
Question: How would you leverage existing CURI to handle a GUI based module installer?
If you can answer that one, I might reconsider. Please describe said mechanism in detail. 09:48
nine What are the unique requirements of a GUI based installer as opposed to a CLI based one?
And how does that relate to the build script we were talking about? 09:51
Xliff nine: Name a top 10 language without a GUI installer. 09:53
That is my point.
If Raku is going to grow, it will need to consider t he end user. End users use GUI installers. 09:54
One of the staples of a GUI installer is the bar graph.
How will you be able to leverrage current CURI to handle a bar graph?
Second question: Why does the list of -I directives affect performance? It sounds to me like a problem that needs to be resolved. 09:55
If it is not on your priority list, then please describe the issues involved and maybe I will add that to my list of things to investigate. 09:56
nine: Would 10:01
nine As to name a top 10 language without GUI installer: C
Xliff HAH! Installshield was originally written in C.
MSVC, but still C. It' s the largest installer in the worl! 10:02
s/worl/world/
nine But if that counts, then Raku has GUI installers, too. E.g. yast which you can use to install prepackaged Raku modules on openSUSE
Xliff Hmmm.... fair point. I'll then have to conceed C. 10:03
But there is a large difference between C and Raku.
C deals with unmanaged code. Raku is managed.
I would then say that comparing C to Raku is akin to comparing different fruit.
Just because C doesn't have one is no reason to conclude that Rakudo doesn't need one. 10:04
nine Well I certainly gave a valid answer to your original question ;) Anyway that's an unproductive tangent
Xliff I did say I conceded that point. :p 10:05
nine: My simple answer for CURI - Supply-based events.
I'll need to polish up what I have and submit it to problem solving, but that's probably not going to happen before the middle of spring. 10:06
I have a full dance card atm.
nine But what does all of this have to do with the long list of -I in your build script?
Xliff You brought that up. Not me!
Again, the long list of -i directives is due to the fact that I cannot install any of my projects due to the lack of user feedback in CURI! 10:07
nine No, I didn't? All I did was ask why you can't use installation instead of those -I
Xliff And I just said why I could not!
nine But -I doesn't give you any more feedback?
It just takes longer which makes the problem worse 10:08
Xliff Actually, there is no hard reason not to. More like a prerence.
nine: That's why the build scripts were written. To give me the proper feedback.
nine If it takes twice as long to compile and doesn't give you any more feedback than installation, then I just don't understand why you use it
But you can have the same level of feedback with installation 10:09
Xliff I have practically spelled out the reason for -I. You are still trying to find a reason for it. Almost as if your eyes are sliding over the reason I've just given.
nine: If you are about to speak on the RAKUDO_ variables, I've already touched upon that. NONE of them do what I would like. 10:10
I do have to complement lizmat for at least trying.
nine: What would be the problem for building a non-installed module repository at $*HOME/.rakudo/.precomp where all modules compiled via -I live? 10:11
That directory is then checked before all given -I directives for precompiled files.
This way you are not having to check all over the place.
nine I've just taken another look at build.sh (AFAIK the script we're talking about) 10:12
Xliff The way -I is currently implemented (as you've described) seems like you are bending over backwards to make it DELIBERATELY slow.
That's the way you've described it in #4655, at least.
And what did you find out about build.sh?
nine It does give you more feedback, that's true, because it has per-module output. Installation could give you per-distribution output, so quite a bit less. However I still wonder, if that isn't enough if compilation is a lot faster. Less wait time would mean less need for getting feedback, wouldn't it? 10:13
Xliff That particular script was built primarily for statistics. Its use as a project-build script is secondary. 10:14
nine With -I you _do_ have to check all over the place, regardless of where the precomp files are stored, because all the time you have to check if the sources have changed.
Xliff nine: Then why doesn't that apply to all Raku modules. Oh, you are keeping the sources with the .precomp, aren't you? 10:15
nine: Helpful hint. I think we are barking down two mutually exclusive tangents. 10:17
nine CURI uses an optimized storage format that avoids parsing JSON at all cost.
Xliff The -I build script is there for statistics.
For project installation, I'm not tied to it. It was the path of least resistance for compiling my code.
I would prefer to have CURI properly inform the user as to what is currently being installed. Something that it does not do. 10:18
I couldn't give a rats ass as to install speed. Speed does not mean that the user need not be informed as to what is happening to her system
Therefore t he current CURI implementation is incomplete, from where I stand. 10:19
I have something in the works that may address the issue, but it will be weeks to a couple of months before I have the time to complete it.
I suspect we can have a more productive discussion, then. 10:20
nine For the sake of the argument, lets assume that compilation is practically instantaneous. Since the installation call is per distribution, the installer knows that CURI is e.g. currently installing Glib. Since that is done faster than the user could even read the string "Glib", what more would they need? 10:21
Xliff Information as to what the "GLib" installation consisted of and or the time it took to install 10:22
You can't remove installation time from consideration. It should be reported or tracked. 10:23
nine The installer already knows what the Glib installation consisted of. The information is contained in the META6.json and is what the installer actually gives to CURI 10:24
And of course the installer can easily measure how long it took to install Glib
Xliff I'm Joe end user who just started with Raku. I neither know or care about a META6.json because I am just starting. I do care about how long it takes to install this project that got me interested in the language. And possibly the install time of its dependents. 10:25
I need to know this because I might want to consider installing this software on a wide variety of machines
With a wide variety of resources.
It would be nice to have that information so I am better informed on things THE RAKU PROGRAMMERS DON'T NEED TO KNOW OR CARE ABOUT! 10:26
Empasis mine because you have been ignoring that salient point this entire time.
nine I'm not sure we mean the same thing with the word "installer". Do you mean the user installing something (e.g. Joe) or the application that the user uses to install something (e.g. zef). 10:27
Xliff Does it matter? 10:28
A raku user, who has no need to become a raku developer, will not give a shit about META6.json. Why make them?
Currently the only way to install Raku software is via CURI (ala zef) 10:29
So there is only -one- installer ATM.
And it is flawed at the CURI core.
nine It does matter a lot. Because while you're right, that the user doesn't have to care about META6.json, an installer application does have to care. And since the installer application does have to process META6.json, it already knows what modules are contained in the distribution and can already display this information to Joe user 10:30
Xliff nine: Wait until I have a chance to write this up. Your arguments do not even begin to show me that you have an idea as to what my problem is.
nine So there's nothing CURI has to do to have the user know which modules were installed
Xliff nine: And that's where we disagree.
nine: And you can't see it. You are arguing on a tangent that I am not dealing with at the moment.
nine On which point exactly? Does the installer app not know the modules?
Xliff nine: On just about every point that I've raised THAT YOU'VE IGNORED! 10:31
So just stop. You aren't even close to addressing my issues. None of your questions matter to me.
nine Have you considered that you may not have actually tried to understand my points either? 10:32
Xliff I have. I have illustrated them to you over and over in this conversation. 10:33
You keep retreading backwards like you have not read them.
Look at my use case above. Pay CLOSE ATTENTION to what I am asking there.
Not a single WHIT of it is addr esseed by your questions.
10:36 Xliff left
nine What does WHIT stand for? Can't find it in the glossary 10:39
Oh, I guess it isn't an acronym 10:41
lizmat "a very small part or amount"
I hope Xliff will correct me if I'm wrong 10:42
the problem their facing is: installing a GUI based-app written in Raku taking very long
nine Know what? Just forget it. As I will any issues you may report. Getting shouted at by people one is trying to help is decidedly not -Ofun 10:43
lizmat indeed, it is not
2. Xliff wants to be able to report progress on the installation process
3. there is currently no way to do that 10:44
fwiw, I also find this annoying with e.g. installing modules with zef
case in point: try installing DateTime::Timezone :-)
*TimeZone
nine lizmat: sure. But I bet you wouldn't care anymore about progress reports if installation was just faster. 10:46
lizmat that would reduce the need for sure, but it will be a while before it is less than a few seconds for large module bases and their dependencies
I mean, even with modules installed, a re-compile of the core causes modules needing to be re-pre-compiled for some of my workflows 10:47
and that takes long enough to make a cup of tea in some cases :-(
releasable6 Next release in ≈3 days and ≈7 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 11:00
11:33 dogbert17 joined 11:38 TempIRCLogger left, TempIRCLogger joined 11:42 TempIRCLogger left 11:43 TempIRCLogger joined 11:48 Geth left 11:49 Geth joined 11:52 TempIRCLogger left, TempIRCLogger joined, TempIRCLogger left 11:53 TempIRCLogger joined 12:07 reportable6 left 12:09 reportable6 joined 13:03 vrurg joined 13:06 vrurg left 13:08 vrurg joined
Geth DBIish: eeb91eeb30 | (Vadim Belman)++ | lib/DBDish/Oracle/Native.pm6
Use OCI_THREADED for when creating environment

This simple fix allows to use individual connections per-thread whereas with `OCI_DEFAULT` 2+ connections per application are likely to cause crashes.
13:20
DBIish: 041eb77d73 | (Vadim Belman)++ (committed using GitHub Web editor) | lib/DBDish/Oracle/Native.pm6
Merge pull request #218 from vrurg/threaded-oracle

Use OCI_THREADED for when creating environment
ugexe so leets add progress reports to everything 13:21
sometimes Joe wants to know why their map is so slow and just wants it to sent events telling them when it iterated 13:22
also each time a coercion occurs
we can make the entire language an event store even. maybe even the first one 13:24
vrurg ugexe: Sorry, I missed the previous discussion, it seems. But let me point at a difference: things like map and coercion are under user control. Module loading is not.
lizmat I agree we need to be able to provide some kind of event stream
ugexe we could easily find a more appropriate coparison that is equally absurd 13:25
lizmat but I think a prerequisite for this would be in-process pre-compilation
13:42 frost left 14:20 dogbert17 left 14:21 dogbert17 joined 14:54 discord-raku-bot left 14:55 discord-raku-bot joined
Geth DBIish: vrurg++ created pull request #219:
Prepare for zef ecosystem
15:05
16:47 linkable6 left, evalable6 left 16:48 evalable6 joined 16:49 discord-raku-bot left, discord-raku-bot joined
nine The irony is that all the progress reporting infrastructure will make stuff even slower. I have sometimes pondered removing RAKUDO_MODULE_DEBUG, but its still useful too often. 16:56
17:48 linkable6 joined
lizmat true, but the seeing some progress will give people a better idea on how long it is still going to take 17:49
and that's also pretty important
18:07 reportable6 left 18:10 reportable6 joined
ugexe RAKUDO_LOG_PRECOMP is exactly for seeing "some" progress 18:21
the argument can't be the end user is left in the dark, it has to be that there isnt a complex event emitting system in place to... do almost the same thing 18:25
lizmat true: but you still have no idea how long it is going to take, as it only shows the one that is being pre-comped 18:39
ugexe how would an event telling you the same thing give you any more of an idea how long it will take? 18:40
i guess thats what my confusion mostly boils down to
lizmat because it doesn't tell you how many things it still needs to do
ugexe so if rakudo log precomp prefaced its output with how many modules it is about to precompile it would be fine? 18:41
lizmat I mean, it was just bolted onto the RAKUDO_MODULE_DEBUG machinery
that would be a start, yes
you could even envision driving off a progress bar off of that 18:42
ugexe you could do the same thing presumably with IO.watch or some such and no additional CUR machinery
lizmat hmmm.... 18:43
nine Sure you can. Already right now. Parsing the installation process' STDERR isn't that hard
lizmat do we know all of the precomp files that are going to be created beforehand ?
nine Sure. It's in the META6.sjon
lizmat recursively? 18:45
I mean, does the outer outer process know? 18:46
nine An installer only installs one dist at a time anyway.
lizmat ok, but what about re-pre-comping?
nine That's a completely different use case. 18:48
In just about any way
lizmat I guess :-) 18:55
BTW, if I install something with "zef install ." from a dist directory 18:56
should it re-precompile that module on first use without using any -I parameter ?
nine no 19:00
It will need to re-check dependencies, but that's much faster than full compilation. 19:01
lizmat well, then there's something wrong, because it *will* re-precompile in that case 19:02
meh, of course when I try to reproduce, it works :-( 19:04
I guess I'll get back to this when I can reproduce :-) 19:06
Geth DBIish/main: 4 commits pushed by (Rod Taylor)++, (Vadim Belman)++ 19:52
DBIish/main: ba45fbc2f2 | (Vadim Belman)++ | 4 files
Prepare for zef ecosystem

  - start using mi6 for release
  - keep auth/ver/api of the module in sync with META6.json
  - add Changes file
  - change auth to `zef:raku-community-modules`
19:53
DBIish/main: c5b311c89d | (Vadim Belman)++ (committed using GitHub Web editor) | 4 files
Merge pull request #219 from vrurg/zef-ecosystem

Prepare for zef ecosystem
vrurg I have meet this note in NativeCall::TypeDiag with regard to &diag-functions: "REMOVED. It's now part of NativeCall" But it's not there. Any ideas? 20:18
Can't release DBIish because mi6 fails on xt/ where that is used. 20:19
Geth DBIish/main: c0e5c636dd | (Vadim Belman)++ | 4 files
Quickfix for xt/ tests

Relied upon diag-functions routine used to be provided by NativeCall::TypeDiag but which is long not there.
Needed for `mi6 release` which tries to run tests in xt/ too.
NOTE. It looks like nobody did xt/ testing in years since the last commit to NativeCall::TypeDiag is dated back to 2016! Perhaps it makes more sense to remove them altogether?
20:59
DBIish/main: 6b01a57174 | (Vadim Belman)++ | 7 files
0.6.4
21:01
23:45 benchable6 left, squashable6 left, unicodable6 left, committable6 left, bloatable6 left, tellable6 left, sourceable6 left, bisectable6 left, linkable6 left, reportable6 left, evalable6 left, coverable6 left, nativecallable6 left, statisfiable6 left, greppable6 left, notable6 left, quotable6 left, shareable6 left, releasable6 left 23:47 benchable6 joined, unicodable6 joined, evalable6 joined, notable6 joined, bloatable6 joined 23:48 reportable6 joined, squashable6 joined, tellable6 joined, quotable6 joined 23:49 linkable6 joined