« first day (4419 days earlier)      last day (722 days later) » 
00:00 - 20:0020:00 - 00:00

20:00
I don't think Stream offers an associate method
oh thats a Stream?
well then ure using the wrong api
kotlin does not like java streams
should I not be using java.io.File?
nah thats fine
.lines() returns a Stream of Strings
20:03
oh
so smth like return file.useLines { it.filter(String::isNotEmpty).associate { it.trim().split(whatever).let { it.first() to it.drop(1).joinToString(whatever) } } }
fixed it
thanks!
I have figured out the structure of Rabbit modules
it's a tree of Rabbit files, except with some extra metadata:
- GENERATOR contains information about the program that generated the module (and is what that Kotlin code parses)
- module.rmm contains data about the module itself (name, version, dependencies)
- INSTALLMETA is a reserved file that can contain arbitrary data put there by the installer
also, a critical point: Rabbit modules don't have to be installed by carrot
this is to fix another one of Python's issues: Modules can be installed from any number of sources
in Rabbit, that's still possible, but heavily constrained
My biggest problem with python's module system is that ime, people usually just say to run pip install <some_dependency> rather than providing a lockfile, meaning new versions of that dependency can completely break their code
20:12
When a piece of software installs a Rabbit module into a library, it has to edit the module index so the interpreter knows about the module, which involves adding a 2-byte "installation source"
these sources are checked by carrot when doing things such as uninstalling a package, so that it doesn't try to remove a module installed by apt or whatever
but the registry of these sources is maintained by me, and it's an exclusive club to join
that way, carrot knows exactly who installed a module and how, so it doesn't do anything that could quietly break or desync something
@Ginger can i join
@Bbrk24 Rabbit fixes that problem by allowing multiple versions of a library to be installed at once
@Seggan no
oh, also: By default, and I do not advise changing it, Rabbit's data (interpreter JARs, libraries, etc) will go in /opt/rabbit on Linux and C:/Program Files/Rabbit on Windows
@Ginger You still need to know which one to load, which doesn't help if they don't specify beyond an import statement and the install command in their README
@Bbrk24 oh but see that's the clever bit
the interpreter does that for you, by processing a metadata file included with every module
so each module only has available to it the correct versions of its dependencies
Let me clarify the kind of situation I'm talking about: it's the equivalent to, in NodeJS, not having a package.json and just listing dependencies -- just names, not versions -- in the README. For some reason this is the overwhelming majority of what I've seen in Python and it's awful
20:19
@Bbrk24 that's stupid, but I guess Rabbit fixes it by requiring all code to be inside a properly formatted module
You can't make arbitrary scripts in Rabbit
TIL when you edit a reply, the edit causes the person you're replying to to get notified a second time
Chat is jank™
I have an unrelated question about naming/abbreviation for my lang
So far, every operation in Trilangle has a three-letter abbreviation (e.g. - = "SUB"). I recently added three new operations, which I've tentatively called "threadspawn", "threadjoin", and "threadkill". How should I abbreviate those?
20:53
tsp, tjn, tkl
makes sense
21:10
TIL that you can have any character except for a forward slash (/) in Unix filenames, including newlines and control characters
thanks Unix, very cool
Windows lets you have invalid UTF-16
surely linux too, as it sees names as byte seqs.
Also I seem to remember there being a way to craft a malicious tar file that expands differently on Windows vs Linux, because of backslashes in filenames
17
Q: Zip files expand with backslashes on Linux, no subdirectories

violet_whiteSo, weirdly, I can unzip a file a friend made on windows. What it gives out is strange, and incorrect in a way I've not seen before. <base directory stuff> assets\Changes.txt assets\DefaultConfig,txt And so on. It's clearly meant to be a subdirectory, but they come out as files with a backslas...

thanks, clipboard
I'm thinking of something considered a vulnerability and not just a bug
Hm, I can't find it again
Found it! CVE-2021-37713
It works differently than I remember, but it does have to do with Windows-specific path issues
21:52
LDQ: Does a dependency specification need anything besides a name and a version?
Depends. NPM doesn't need any more because the libraries are all stored in a centralized location. SPM (Swift package manager) needs the repo URL, too, because it doesn't have that
22:57
Deno uses URL too (and it takes only URL, no name or version)
@Ginger Possible thing to include: optional hash
In the future you might decide to allow pulling libraries from, e.g., HTTP mirrors
Name+version works well if and only if a centralized package repository exists
Even with a central repository, maybe you're paranoid
No reason not to allow it that I can see
but e.g. pip (python's) allows installing packages from other sources by specifying custom URL
23:14
@RydwolfPrograms So by default it'll generate some sort of lockfile and put in hashes automatically, but if you specify your own hash, it'll use that?
@Ginger Depending on your language, perhaps allow enabling optional features (like Cargo)?
npm and SPM both let you use a git hash
@user Oh no I'm not even talking about lockfiles
IIRC Ginger's thing didn't have them
Holy h-e-double-hockey-sticks that ping is loud
you can adjust the volume
Yeah, but it doesn't save it to my user for some reason
23:17
Just like, if you're fetching a library from a specific source, or a specific version of it from the central repo, and you want to ensure it hasn't been tampered with it (e.g., you can do that in HTML nowadays)
Every time I'm on a new laptop, I need to set it again
Wait where can you change the volume?
Oh wait yeah
top-right, next to the "all rooms" button
I can adjust notifications but not the volume itself
23:18
@Bbrk24 That's not a volume adjust
oh it's not?
@RydwolfPrograms Well, technically, you can choose between 0% and 100% :P
I see speaker, I assume it's volume control :P
23:57
> Kotlin is arguably one of the world’s most underrated programming languages
thank you
00:00 - 20:0020:00 - 00:00

« first day (4419 days earlier)      last day (722 days later) »