« first day (4434 days earlier)      last day (412 days later) » 

6:08 PM
@Seggan does this make any sense to you
 
sorta
 
if I'm doing something wrong I'd like to know how to fix it now before I cause any more problems for myself :p
 
Six-byte trilangle program to print the number of days since last Thursday: D'%7!@
 
ooh
 
6:35 PM
@Ginger End users wouldn't have carrot right?
 
depends
if you want to do a carrotless install you have to use an application bundle, which is a whole other thing
 
I thought the whole point of bundling was so that people could install Rabbit programs without needing the development package manager
 
normal bundles are... kinda useless; application bundles are what make ^ possible
 
I think you're overcomplicating things. I write code. That code, across a few files, is a module, and that module has a config file, which specifies certain metadata, and optionally some dependencies. I get those dependencies as other modules, which are in some sort of tree, or maybe in some user-wide package store. I can bundle this together into bundles, which are how the code gets distributed to end users, who only need to have Rabbit installed, which then runs the bundle.
If I'm a developer, I have carrot, which is how I actually install those dependencies to put in the bundle
It gets those from various repository types, including bundles, which are just big directories of unorganized modules
It defaults to a central repository you, Ginger, run, but you can also install from other sources
 
what you've described is almost correct... except for one thing
the Rabbit interpreter cannot exist independently from carrot, except for within application bundles (okay technically it can but it's going to be a real pain in the ass to use)
 
6:40 PM
...why
That'd be like if NPM was part of Node, or cargo was part of rustc
The language should not depend on the package manager, and you should need to waste disk space and stuff on a package manager you'll never use
 
because of a detail of carrot I may have not elaborated on until now: carrot manages, in addition to modules, installing copies of the Rabbit interpreter and launching Rabbit modules
 
Ew
That should definitely be a separate program
 
well, it's not
 
And you should be able to install a version of Rabbit without that program
E.g., I can still install a specific Node or rustc version without nvm or rustup
Those are tools for developers, not end users
 
you can, but it'll be a real b*tch to use, because one of the things carrot does is pass arguments like library paths and such to the interpreter
the interpreter does not know where to find libraries without being explicitly told
 
6:43 PM
If I install a bundle file from apt or dnf, it should be able to list Rabbit as a dependency, instead of carrot, which then is maintaining Rabbit in parallel to the system package manager
@Ginger ...isn't that how interpreters work?
 
wrong: carrot will be designed so that it can be invoked by the system package manager to do the actual install
 
Like I'd assume you give the interpreter a path to either an individual script, or to a module config which would specify what to run and what dependencies it needs
 
@RydwolfPrograms you tell the interpreter two things: the module name and version to run and paths to the libraries to look for it in
I'm doing this because I am sick and tired of Python libraries being installed from twenty conflicting and often out-of-date sources, so I'm making it so there is one, and ONLY one, correct way to install Rabbit and its modules
 
Wait so it has to traverse through directories and stuff just to find the file to run?
 
@RydwolfPrograms yes
 
6:46 PM
Nasty
 
too bad
 
It should follow a predictable pattern
You're making something worse than Python
 
what the frick are you talking about
it is predictable
for any combination of arguments the same module will be run every single time
 
Then why does it have to search through directories to find the right file to run?
It should always be a specific file in a specific place, not "some file in one of these folders, idk, figure it out"
 
what do you mean "search"? the first library containing the correct module is the one that will be used
 
6:47 PM
What is the point of doing it that way
 
and if a library doesn't have it, on to the next, and so on until all are exhausted
 
it'd probably make more sense for carrot to do that, but it'd still be done
 
That's way unnecessary abstraction
 
this is the same thing Python does
what do you think sys.path is for?
 
6:49 PM
I thought your goal was to do better than Python
 
sys.path is a fine way of doing it; Python's issue was that you could add whatever the hell you wanted to it
 
Oh god
So with Rabbit you can't
Why are you even doing it that way then
 
Wait, is it trying to find these files at runtime?
 
Or when you install the modules?
 
6:50 PM
Rabbit solves that by making sure that only valid and known libraries are being used; in fact, generally only two libraries are searched: the user one and the global one
 
@RydwolfPrograms :|
 
this is why you should use carrot to run Rabbit code: it ensures that all the libraries are valid, among many other checks
 
Ginger, this is a solved problem. There are two valid approaches. Either all the dependencies get stored in one central user-wide store (just a directory full of modules), or you use a tree structure and store all of the dependencies of a module alongside it
 
#1 is what I'm doing
except it also checks a system-wide store
lemme clarify: there should only ever be two libraries used by the interpreter and they are the global one and the user one
 
Calling those "libraries" is really confusing
 
6:53 PM
^
 
if you're adding extras you are doing it wrong (unless it's for developing code, in which case it's fine to have your workspace as an additional library)
okay sure fine whatever
 
Store is a pretty common term. Or simply "folder"
 
sure, stores
 
Why are you giving people the option to do it wrong
 
because setting the paths in stone only causes problems for people with an actual need to modify them
 
6:55 PM
Fair enoiugh I guess
I think calling them libraries is what confused me
 
okay cool
 
You earn one "not as cursed as it could be" point
 
I'll call them stores from now on
@RydwolfPrograms :D
I'm the edge case person; I hate it when people make things like module paths set in stone because it means I often can't use their tools in the conditions I need to use them in
Example: Poetry doesn't handle extra Python module repos well, which is annoying because it means I can't use Piwheels with it
also, side note re. OS package managers: carrot does support installing modules via an OS package manager
also also: because carrot is itself a Rabbit module, it can also be installed through an OS package manager
 
Woah woah woah...carrot is run by Rabbit, which is installed and run by carrot?
 
yes, I'm typing an explanation right now :p
to fix the issue of carrot needing a Rabbit interpreter to run itself, its OS package would probably include a bootstrap script that installs a bundled interpreter for carrot to run on; after that point carrot can install a newer version as needed
the same thing would be done in the "official" install shell script, just with a dash more interactivity
(and I say "official" here because the OS packages will be as official as any other; the script's just in case you don't have a package manager to use)
 
7:09 PM
There's a reason nvm is written in shell and not JS
 
@RydwolfPrograms Isn't Pip kinda done like that?
But yeah, slightly cursed
 
Python is cursed according to Ginger
And if Ginger calls something cursed
 
@user it is (assuming you mean the Python package manager)
 
I believe it
 
@RydwolfPrograms glad to know you put so much faith in me :b
 
7:11 PM
I think it's more that something would have to be really cursed for even you to call it cursed
 
@Bbrk24 I don't take advice from a company whose name could stand for Nude Pasta Manufacturers q:
@user I think that's why he trusts me
 
Do you put sweaters and shoes on your pasta?
 
yeah, who doesn't?
 
All pasta is nude
 
@user Yes, but not pants
 
7:13 PM
fun fact: Rabbit is implemented in Kotlin, so it can hypothetically run on your Blu-Ray player
 
I forgot, are you transpiling Rabbit to something or interpreting it?
 
interpreting; that's why the source is so cursed
 
Oh, I thought it was compiled
I was going to say that the type objects that your compiler uses don't need to be at all connected to the type objects that you use for runtime reflection
But if you're interpreting, then ignore all that
 
@user perhaps you're possibly a prudish pasta producer panicked by pants-less Pennine?
@user cool!
 
I still think you're doing it wrong, but I know even less about interpreters than I do about compilers so I can't really give you unsolicited advice there
 
7:20 PM
@user I'm almost certainly doing it wrong, don't worry d:
 
I technically have more experience writing interpreters than compilers but Trilangle isn't really comparable to Rabbit
 
 
2 hours later…
9:21 PM
Bah, I missed another language design discussion! D:
 
s/discussion/argument/ :p
 
Arguments are just discussions with sides.
 
9:53 PM
@Ginger theres a reason nvm and npm are separate
 
10:13 PM
@DLosc madlad actually did it
It's beautiful
 
10:25 PM
Fun compiler idea: when compiling a program, it tells you if any of the lines are brilliant moves (!!) best moves (!) mistakes (?) and blunders (?!)
int main() {
    println("Hello, World") //!!
    int* p //?
    del p //?!
}
 
delete (new LinkedList()); // ?
 
And if you somehow checkmate the compiler, it halts compiling and just prints a # after the line that checkmated it
 
You say that but I have caused the Swift compiler to segfault before
 
But is that checkmate or was it just stalemate
Like checkmate is when the compiler just resigns because it knows you're going to do something irrevocably stupid
Like it tries to get out of it but it can't
It finishes without throwing an error
Doesn't do any clean up because you've won but at what cost
 
I got my nullability qualifiers wrong and it broke. idk
 
10:40 PM
@lyxal We've got ? and ?! already, they're called warnings and errors
@ATaco Discussions can have sides too. People can push a particular solution to a problem they're discussing. Arguments are just less open, more heated
 
Arguments are often more heated, but not strictly.
 
@user I'm talking about things that aren't compiler errors
 
Anything that isn't an error or warning is a best or brilliant move :P
Brilliant move if all tests pass
 
Memory leaks are Blunders
PHP is a Blunder
 
10:58 PM
...what if there was an esolang where the program is a series of legal chess moves but the execution only depends on an engine's evaluation of them
 
I like that idea. The specification could just have one sides moves be "undefined behavior".
 

« first day (4434 days earlier)      last day (412 days later) »