« first day (289 days earlier)      last day (440 days later) » 

00:42
Great job, GitHub
I have a repository that GitHub claims contains SML files (it doesn't, afaik). When I click on the "Standard ML 0.4%" above, I get that first message because GitHub seems to have forgotten how to give itself queries
The url looks like https://github.com/search?q=repo%3A<reponame>++language%3AStandard+ML&type=code
Modifying the URL to use quotes around "Standard ML" makes that error message disappear
lmaooooooooooooooooooooooooooooooooooooooooo
 
2 hours later…
02:43
Gah I forgot just how perpetually hot university is in the summer
I'm in a library right now and I feel like I might as well be outside
Gonna have to find a group of 5 to do an assignment with
5 people
Well, 4 non-lyxal people
 
1 hour later…
04:18
riiiiiiiiiiiiiip
Well this is gonna be a big week
First I'm picking my classes for next year, then donating blood, then taking the SAT
With not one but two principal's- and superintendent's- advisory committee meetings
And that's in the first three days lol
05:03
nice
05:53
I've just started university and coordinating it with high school is pain
06:47
@emanresuA wait how u be in university and high school at same time?
07:26
it happens
i think it's some kind of arrangement between the school and the university for students who have run out of math classes and the like
07:44
Back in my day, there was this thing where 10th grade students could take a uni course along side all their usual high school work
No clue whether it could be used for credit or not because I didn't do it, but once a week some of the big brain kids in my grade would go to the uni and do a little learning
Subjects including some sort of maths, some sort of introduction to programming and some sort of literature study
Also probably history
Pretty much that yeah
I'm only doing one cours
Instead of uni, I decided to go down the rabbit hole of esolangs and now look where I am :p
Back then, I mean
I'm a full time uni student now lol
user image
4
L
 
5 hours later…
13:09
ratio + L + i have 13 more followers + grammarfail + F + scss + not even 100 stars + last commit 2 years ago + wth is that white mode
13:34
@Seggan I got the Gradle configure to succeed but now VSCode is screaming at me about missing script runtimes
seems to be a problem with the language server
looks like 2 versions of kotlin are being used for some reason
I think it's my language server breaking it
the errors look like Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
13:58
I think this can be solved by updating the version of the server the extension uses
wish me luck! :p
 
2 hours later…
16:20
I FIXED IT
:D
that almost never happens!
@Seggan ok, now there's just one error, for this bit:
tasks.generateGrammarSource {
    maxHeapSize = "128m"
    val path = File("$buildDir/generated-src/")
}
it says Unresolved reference: File
oh, I guess it changed to file (all lowercase) at some point
 
2 hours later…
18:16
@RydwolfPrograms I'm working on a project in JavaScript and it's pretty nice to work with, ngl. Once you know where the janky bits are, you can mostly avoid getting tripped up by them. And the ability to just create an object and add properties as needed is really nice for rapid development.
18:29
If I had a magic wand, though, I would change how var, let, and const work (and turn on strict mode so you have to use one of them). Get rid of function scope and hoisting; all variables are block scoped starting at the point where they are declared. let should do what const currently does, except it should also prevent mutating the value. const should either do the same thing as (the new version of) let, or maybe do the same thing but only be allowed at top level.
And maybe function arguments could be immutable by default, and if you wanted them to be mutable you'd prefix var, like so: function popMultiple(var array, count)
@Ginger import java.io.File at the top
@Ginger yeah thatd be the most logical part
@Seggan fixed it by changing File to file
works fine
hrm
interesting
18:58
Well, my house is now in a Tom Scott video
uh, what
In the background
me when Tom Scott goes to Mars
@emanresuA This you? :P
lol no
19:17
Anyway, I assume it's actually this video, and that's cool (both the video and the fact that your house is in the background)!
19:32
@emanresuA wth that's epic
@DLosc Yeah, this is what I've been saying all along. In objective terms it's a really badly designed language, but when it comes to making things quickly, it's amazing
I'm aiming for a mix of the two with Cuprous; well designed and safe against weird pitfalls and runtime bugs, but also quick and simple to write
Ad hoc structs will be one of the features, for example
You can just make a struct and use it, and the compiler will do its best to make sure it's used sanely, and then later on you can add a more formal struct definition and stuff
maybe it's not a good idea to learn Kotlin by making a programming language in it...
eh, it's fine
On the contrary it's the perfect way IMO
Making a programming language requires learning a lot of different parts of a language
And it's really convenient to test
I have enough of Rabbit's syntax made for me to be able to start working on it... and I have absolutely no idea where to start
19:39
I'm just kinda sitting here, paralyzed with existential dread
If in doubt, start tokenizing
@RydwolfPrograms already done *laughs in ANTLR*
If you already have the parser done and it's interpreted, then you're at the fun part
oh boy
You're doing a bytecode sorta thing right?
19:41
yes, rbt files get turned into brf (pronounced "boof") files, which are then interpreted by the interpreter
Will your bytecode be a register/stack/heap sorta architecture?
I'm not sure yet
That's what I would recommend
depends on what's easier for me to implement
Easiest would be no bytecode at all
19:43
why? it's not that much more of an complication
Yeah it is
For it to make any significant difference performance-wise, at least
hm fair enough
but I like the bytecode idea
@RydwolfPrograms how about I don't do bytecode now but I add it later?
That's what I'd recommend
Get it working, don't bikeshed/prematurely optimize with the bytecode
me when premature optimize
@RydwolfPrograms alright so: now what
Now you just...interpret it lol
Run through the AST and do what it says to do
You've done the hard part
19:48
I, uh, don't think it's actually that easy
like, how tf do I do typing? or GC?
Kotlin has GC right?
no clue, lemme check
When you write an interpreter in an interpreted language you get GC for free
noice
what about types?
What about them? You'll need to find a way to represent the data as data Kotlin can understand, I guess
19:52
hm
@emanresuA awesome
@Ginger youd have to rewrite a lot
@Ginger yep. jvm go brrr
@Ginger check the typing classes in rol
@Ginger Most high-level languages have GCs. If you've written anything beyond Hello World in a language and memory management hasn't come up, it probably has a GC
But Cuprous will be a disproof of that :p
oh no
@user yep
20:05
Well, sort of. It will have refcounting (which some people count that as GC) and possibly a fallback GC for situations where borrowing/RC can't work
refcounting is gc
borrowing is not
@mathcat can't see rn, what is it?
chess trainer ad
20:21
mmm
You have to witness it for yourself
It's a masterpiece
@Seggan for some reason gradle(?) is putting the generated ANTLR files in the base package instead of the antlr package
can you run tree?
.
├── build
│   ├── classes
│   │   ├── java
│   │   │   └── main
│   │   │       └── community
│   │   │           └── rto
│   │   │               └── ginger
│   │   │                   └── rabbit
│   │   │                       └── antlr
│   │   │                           ├── RabbitLexer$1.class
│   │   │                           ├── RabbitLexer.class
│   │   │                           ├── RabbitParser$Abstract_function_declarationContext.class
│   │   │                           ├── RabbitParser$Abstract_operator_declarationContext.class
@Seggan ^
20:28
> Aimchess - They put the "Based" in "Turn based strategy".
@Ginger i dont see that
Who is this Tom O'Regan and why has no one heard of him?
it putting all of them in community.rto.ginger.rabbit.antlr
21:00
@Seggan well of course now it starts working :/
if anything, try deleting the build folder first
21:21
@Seggan Yeah, technically, but I'm counting it separately since it's so much simpler
the GC ure talking about is tracing gc
just because its simpler doesnt mean it doesnt collect garbage runtimeingly
Yeah but it has none of the whole-program overhead of non-RC GC
And it doesn't allow for arbitrary data structures without fear of memory leaks, which I associate with GC
And if RC is GC then you could make a good case for borrowing
IMO it's a spectrum
Tracing GC is obviously GC, manual memory management obviously isn't
@RydwolfPrograms huh
it does
you still have to check refs thorought runtime
@RydwolfPrograms huh again
refcounting is the one i have a fear of memory leaks (circular refs)
@Seggan Yeah but only when that specific piece of data is cloned or dropped
@Seggan Exactly
RC doesn't free you from worrying about memleaks, while GC does
yeah i misread the sentence
21:28
(well, good GC, Node.js sometimes doesn't count :p)
@RydwolfPrograms if you dont have a borrowing system, you need to do this throught a programs lifetime. you cant exactly tell when a thing is gonna be dropped
ok, time to figure out how to structure the interpreter
@Seggan how does Rol do it?
I see things referencing "trees" and "nodes"
@Seggan Ah, well I'm thinking about reference counting the Rust way I guess
@Ginger thats the ast
Where the compiler can tell where specific instances of the RC pointer come into existence and are dropped
21:30
antlr produces parse trees, not asts
parse trees are horrible for doing stuff
so you use the RolVisitor class to turn it into ast?
yep
@RydwolfPrograms yeah in that case refcounting wouldnt exactly be truly gc, as you can just insert that into the compiled code
@Ginger RolVisitor also does some desugaring
then you have to resolve types with the ast
Yeah I'm planning for Cuprous to have three types of variables:
1. Borrowed ones, which would be preferred whereever possible
2. Reference counted ones, which would, along with borrowed ones, ideally make up the majority of programs
3. Truly (tracing-based) garbage collected ones, which would be a fallback that ideally would never be needed
@Seggan how???
Certain recursive data structures would be optimized out without GC, like doubly- or circular- linked lists
21:34
hm, looks like the TypeResolver class is what does that
nope
its the TypeChecker
TypeResolver does dependency resolution
then why is it called TypeResolver
because it resolves types in dependencies/local code
uhhh
yeah i meant type checking, not type resolution in this
21:40
ohhhhhhhh
lmao my code looks... very similar to Rol's code
great minds think alike but fools rarely differ
2
@Ginger what part
yes
huh
22:03
@RydwolfPrograms Do note that if some object dies and it was the only referrer to a bunch of other objects, all those objects would be collected at once, possibly impacting your program's performance. That's fine for most things, but some applications need low latency and for that, a tracing GC that won't collect all the dead objects at once might be better
@Ginger You could also try using LLVM
And use the Boehm GC, perhaps?
It'd be tougher to do, but a lot more fun (imo)
22:27
@user Oh that's an interesting thing to consider
Maybe I can have an exception where if there's a truly massive number of things referred to by a single object that gets dropped, it'd use GC
Or you could just have a stack of objects to delete
And if your deleting thingy takes up too much time, it puts all the stuff it needs to delete next on the stack and moves on to the rest of the program
Although one thing to consider is things that run on Drop
You might not want there to be a chance that the file handle or TCP connection you just dropped won't close until some time later
Although I guess typically you don't store enough open file handles or network connections in one object to cause noticeable lag when they're all dropped :p
How do runtimes with tracing GCs deal with that sort of thing?
I know Java no longer makes any guarantees that the finalize method will actually be called when an object is killed
What are you Ewing at?
22:33
The possibility of something being dropped and not taking care of what it needs to
That's usually put inside the close method in Java
When does that run?
There's an AutoCloseable interface, so you can do try (AutoCloseable whatever = ...) { ... } and at the end, whatever gets closed
So like Python's with?
Not really a fan of that personally
It'd be nice for things to clean up when they go out of scope, but most high-level languages don't seem to do that
23:05
@user what if you need it to stay alive out of scope?
@RydwolfPrograms yeah finalize is deprecated and used as a last resort
17
A: Replacing finalize() in Java

the8472Java 9 introduces the Cleaner and Cleanable utility classes which take care of wiring up phantom references to a queue and a cleaning thread draining that queue. While this lets you separate out the witness that will perform a post-mortem cleanup after the owning object has died, all the caveats...

23:35
@Seggan That's a leak
The fact that you can close something and still pass it around is weird
no i mean say you return an open file
23:53
lol it's been so long since I've returned to CGCC
I never realised there was an on-topic TNB
9
@Seggan wdym
Oh, I see what you mean, I phrased that poorly
By "go out of scope", I mean like the end of their lifetime
@BetaDecay It's still more like "off-topic TNB" and "things totally unrelated to code golf" than "TNB" and "off-topic TNB" :p
So if you return an open file, that wouldn't trigger closing it, but if you do let _ = methodReturningOpenFile(), then you're dropping it, so it'd be closed
Oh and wb!
@RydwolfPrograms haha thanks
Is there a decent app for stackexchange chats yet
or just SE in general
23:56
No, progress has been going backwards. They deprecated the only existing app lol
lmao classic
> I know what you did (o_o)
in Vyxal, 2 hours ago, by Vyxal Bot
@user I am doing a check of your search history
Did VyxalBot tell you my secrets? >:(

« first day (289 days earlier)      last day (440 days later) »