« first day (1341 days earlier)      last day (434 days later) » 

07:09
lyxal approved #2022 (Fix apply to head) in Vyxal/Vyxal
lyxal merged pull request #2022 (Fix apply to head) in Vyxal/Vyxal
lyxal pushed 8 commits (s e) to Vyxal/version-3 in Vyxal/Vyxal: Merge pull request #2022 from Vyxal/fix-apply-to-head
lyxal deleted branch fix-apply-to-head in Vyxal/Vyxal
lyxal closed issue #2017 (Fuzzed Issues) as completed in Vyxal/Vyxal
lyxal pushed a commit to Vyxal/version-3 in Vyxal/Vyxal: Update v3.3.0.md
 
5 hours later…
okay so the redefine thing is going to have to be a structure
making it a "modifier" itself still leads to cart before the horse behaviour, even when it's postfix
tomorrow
!!/status
@Ginger I am convincing the snowmen to wear scarves. Some are skeptical, thinking it's a snow-snake invasion.
wonderful!
guess that "retry until it goes through" strat worked out
bad news: I spent most of tonight playing undertale yellow (I'm still yet to finish even the neutral route this game keeps going)
good news: I can look at the enbf now tho
what seems to be missing/incomplete?
12:37
literate mode, for one
you mean the ebnf for it?
yes
I'm basing my entire highlighter design off of those files, so whatever they say is how the highlighter behaves
literate is always going to be less ebnf-heavy than sbcs
12:39
example: the SBCS one defines λ as both a lambda and a structure, so it wasn't highlighted correctly until a little while ago
well a lambda is a structure
I defined the lambda rule because the parameters bit is unique to lambdas
:thonk:
lambda_args ::= "!" | {number_part | variable_name | "*"}
okay, if you say it's complete then I suppose I'll take you at your word :p
I had something else I was going to mention but i forgor 💀
I mean, literate mode's ebnf needs to account for token moving and n't suffixes
but those are relatively minor
12:41
whar token moving
nothing the highlighter needs to worry about
ah, good
for all intents and purposes, it's just a ' at the start of keywords
for your intents and purposes that is
lyxal pushed a commit to Vyxal/version-3 in Vyxal/Vyxal: Update Literate Syntax.txt
currently trying to figure out if I can load the modifier list from the data file instead of hardcoding it
12:43
there, accounted for
keyword ::= {'} (keywordChar - "0-9") {keywordChar} ["n't"]
simple stuff
cool
ah that should be {"n't"}
ugh, what was that other thing...
lyxal pushed a commit to Vyxal/version-3 in Vyxal/Vyxal: Update Literate Syntax.txt
@Bridget undertale/UT yellow reference?!?!
12:45
well, one of the things I had on my todo list was fixing the header buttons on mobile
(def gonna do all 3 routes of UT yellow btw, neutral [currently doing]/TruePas [should be next if I've done things right]/genocide)
currently the Run button wraps around to a new line, which looks ugly
@lyxal I like your funny words, magic man
shame it's called theseus and not thesus
@Ginger you should give Undertale Yellow a go
@lyxal I owe myself $10
knew you'd bring that up eventually
@lyxal I've never played Undertale tho
that's fine
it's intended as a prequel
before UT
12:47
riiiiiiight
well I'm currently quite busy with Portal Reloaded
when you're ready for it ofc
it's quite good
I will add it to my TODO list
so far, no real need to have played UT as a pre-requsite
helps though to fill in some context things, but it's suitable to play before
it's not canon ofc
@Ginger considering collapsing the header buttons into a dropdown so the Run button can fit
npx webpack run --process, right?
13:01
ginger you did a silly
unclosed strings break highlighting
oh
the uh table
it's big
horizontally big
to the point where it overflows on mover
*mober
@lyxal [Ginger] --progress
@lyxal [Ginger] what table
That table
Tested on a real mober
[Ginger] uh oh
[Ginger] that doesn't happen on my mober, which is interesting
oh and why can I scroll all the way to the right?
[Ginger] I suspect it's the search bar forcing the offcanvas to be wide
[Ginger] which is on my "fix this" list
13:05
that scrollbar is nowhere near the end
[Ginger] xterm likes to misbehave when things overflow
is link copying implemented yet?
rather, the link generation thing
[Ginger] yes, the share button
is it 100% working?
or is it still WIP?
I think it's still WIP
that's from clicking the "copy button"
[Ginger] NO HYPERTEXT TRANSFER PROTOCOL (SECURE)?
[Ginger] clipboard only works if you're on HTTPS
[Ginger] sorry, in a "sEcUrE cOnTeXt"
13:12
Well, that's good to know when I'm running it on local host :p
Also, imagine needing a secure context
Made by old site can do it without one
[Ginger] old site uses deprecated APIs
deprecated is just another warning
And everyone ignores warnings :p
[Ginger] :notlikethis:
[Ginger] :vyxal_bot:
13:50
today I will try to get literate highlighting working
14:25
@lyxal what are the group things in literate mode
like what functionality do they have
I want to know how I should highlight them
@Ginger they group the next n elements to a mondic/dyadic lambda
not sure about the highlighting part
how would you want them to be highlighted
oh, lambda?
I'll just highlight them like I do lambdas then
we will literate highlighter
can strings be highlighted btw? or are you working on it
ooh love the double click tooltip feature
14:45
@mathscat the what
@mathscat wdym?
how do structures work in literate
@mathscat hover *
very useful
👍
it's still missing modifiers and a few other things I want to add tho
literate structures are the main thing I don't get rn
uh, strings are highlighted
make sure you have the latest version, I fixed some bugs with them yesterday
hmm, I did do git pull
well they're highlighted blue but I thought blue is the default colour
14:49
probably service worker acting up
shut it off in your devtools or do a hard refresh
eh dunno might be a me issue then
@Ginger what structures don't you understand?
@mathscat the syntax
it's not in the EBNF
is this the EBNF?
yes
that's because they're keywords iirc
14:55
so I can just handle them like keywords?
cool
apparently strings don't exist in literate mode
@mathscat does literate use the same string/number literal syntax as sbcs
since strings aren't anywhere in the EBNF
analysis of the examples seems to indicate that is the case
15:51
me when lyxal forgot to define element
going to assume that means a literate keyword
16:22
not a keyword, a placeholder I believe
@Ginger pretty sure, yes
16:40
@mathscat I think element refers to any valid syntax element
like, can you put numbers in a literate group thingy
wait you can
oh right that makes sense
time to change how I parse those then ;-;
since that means you can nest them too and ick
17:09
@lyxal problem: updating the bytecount in literate mode causes immense lag because of the delay from sbcsification
I'm honestly unsure how to fix this
maybe a worker
currently throwing another worker at the problem
17:53
going to try and bump react to the Canary channel, since there's a feature there that would be neat to use
actually no that's a bad idea
18:16
workers fixed it :D
18:43
Can someone help me golfing my answer to this challenge
19:10
@Fmbalbuena once you add the explanation, sure :p
unfortunately, the element offcanvas is super laggy
I have a way to fix this, but it requires a feature that isn't available in react stable yet
to wit:
Ginger has stopped a feed from being posted into this room
Ginger has made a change to the feeds posted into this room
we will now be notified when React makes a release
ono facebook made react??
yup
the one good thing they've done
my bot request-spam patch appears to have fixed things, which is nice
also, literate mode highlighting is now functional!
19:20
GingerIndustries pushed a commit to vyxal.github.io/theseus in Vyxal/vyxal.github.io: Add literate mode highlighting
🎉
19:32
[that mac] lul
oopsies
5 messages moved to ­Trash
19:51
@mathscat added explanation
20:09
[Ginger] todo: handle feed embeds
 
2 hours later…
21:41
@Ginger [lyxal ♦️] (., (:, (:. and (:: should be highlighted as modifiers
[lyxal ♦️] Same with comma equivalents
[lyxal ♦️] Groups without those though need no highlighting
@Ginger [lyxal ♦️] Make live literate byte count a setting then
[lyxal ♦️] Disabling it updates the byte count upon clicking run
@Ginger [lyxal ♦️] It refers to anything that would be converted to an sbcs element
[lyxal ♦️] Which makes sense given literate is just a wrapped over sbcs
@Bridget [lyxal ♦️] idea: the byte count is sent via the print worker message thing during execution
[lyxal ♦️] The interpreter has to delit anyway
[lyxal ♦️] Might as well piggyback off that
@Bridget [lyxal ♦️] The brackets should be coloured that is
holy pings
@Bridget I just stuffed it in a worker and that solved it
there's a bit of latency, but it's not too bad
@Bridget take a look at the current scheme, tell me if that works
configuring highlighting classes is more art than science, since CM was not designed with a golflang in mind :p
21:58
GingerIndustries pushed a commit to vyxal.github.io/theseus in Vyxal/vyxal.github.io: Properly highlight non-modifier groups
GingerIndustries pushed a commit to vyxal.github.io/theseus in Vyxal/vyxal.github.io: totally didn't forget to escape that period
ah, I rembered what I was going to ask you about earlier!
specifically: permalinks and versioning
when I generate a permalink, what interpreter version should it link to
Whatever version is defined as the current version
so latest should always link to latest? won't that cause issues
There's a get version method in the exported js
Generate a link to that
And redirect if a version permalink is incompatible with latest
but like 3.3.0 doesn't have a version page
22:10
GingerIndustries pushed a commit to vyxal.github.io/theseus in Vyxal/vyxal.github.io: Minor change to lambda highlighting
@Ginger doesn't need one
it'll 404 then, right?
It'll redirect to latest
When loading a link, it should first try going to latest.
I am confused
how do you do that with Pages
If it's found the embedded version is incompatible with latest it redirects
@Ginger if (hyperlink.getEmbeddedVersion in incompatibleVersionList) {redirect to version page}
22:13
ah
(spamtog referenec?!)
currently I'm not embedding versions in hyperlinks, I should probably do that
@Ginger you should
Because it's how the whole backwards compatibility system works
Without it, I'd have to be careful with breaking changes :p
fhgbhjfdkjgfd getting the version requires loading the entire 10 megabyte JS file >:(
@Ginger current links are being generated with 3.3.0 as their version so that when it's released, and 3.3.0 eventually becomes incompatible, they redirect to 3.3.0 not 3.2.0
@Ginger what?
Just use the exported js method
yes but I need to import the JS to do that
and the JS is 10-ish MB total
I've already been doing some trickery™ to load it without blocking everything
So you load the execute part but not the other parts?
22:18
whar
You somehow manage to load executeVyxal from vyxal.js but not the other helper functions?
the entire file has to be downloaded at some point, but since it's the single largest chunk of data the program loads I use various tricks to load it in the background along with the UI and deps
and every extra place I need to use it adds more complexity to keep that working
It doesn't get cached?
not in latest, since latest can change whenever
it will be cached in archives tho
what would be nice would be having the version accessible as a separate file, since then I would only need to load it in the workers
which will probably decrease load times by a few hundred milliseconds
currently the only place it's loaded in non-worker code is to print the greeting message in the terminal
maybe it can go in helpText.js
22:21
quite possibly
actually no it couldn't
that reminds me...how are you handling the h flag?
the big contributors to load time are the internal-<hash>.js files, which are like 7 megs each and contain the Scala runtime
@lyxal that's the best part, I'm not :b
it's TODO
ah well you'll need to handle it separately to execution
what I want to do is have the terminal be a REPL when no code is running, and then I can have a /help command in that
because it can't be handled in the worker
22:22
anything which requires Scala.JS creates a bottleneck
ideally the only time any Scala.JS code would be loaded at all is when you click Run and the worker downloads it
help text do require scala.js
whar for
generating the text :p
:thonk:
object HelpText:
  @JSExport
  def getHelpText(): String = CLI.helpText
22:24
and there's zero way at all we could generate it at build-time?
because that would be Super Cool
@Ginger not without hard coding
oh wait no util.ts also loads the Vyxal file to get the codepage
but that'd be easy to move into the data json
@Ginger it's auto generated by the Oparser library
def helpText = OParser.usage(parser)
@lyxal what if we rig things (hypothetically) so that during build the output of vyxal -h is written to a text file that then gets saved somewhere
also fwiw the flags are already hardcoded
(since flags dialog)
so adding help text wouldn't be too much of a stretch
bleugh
artifact duplication :skull:
that goes against my Software Engineering nature :p
22:27
but consider the tradeoff
considered, and no
also, you know how you didn't want to scrap the website because it's 2 weeks of work?
getting that auto-gen help text to work with js is like that
we're sacrificing a bit of development convenience for improved load times for the user
@lyxal ah, I see
fair's fair, I suppose
it was pain
the worker had to be turned into a module worker, an import map had to be included, a second module had to be exported, and sbt can't be used for creating js because of it
it's suffering and it took us a while to figure out
also, it's half the reason vue was ditched
if it didn't need a module, i could have gotten away with using importScripts in the worker and used dynamic importing in the js
why do we need the help text again???
so you can see the flag list
22:30
there must be a good reason if you did all that
@lyxal don't we now have a dialog box with every flag right there in it? d:
not every flag :p
mfw
which ones did I miss
  -2, --arity-2            Make the default arity of lambdas 2
  -3, --arity-3            Make the default arity of lambdas 3
  -…, --limit-output       Limit list output to the first 100 items of that list
  -¬, --logical-not        Logically negate the top of the stack on end of execution
they were added a few days ago
easy enough to add them to the GUI
which brings up the reason why I'm against hardcoding the flag dialogue box
22:32
and in the meantime I can make an "extra flags" dialog box that dynamically loads the help text file
it may be easy to update the GUI, but it's remembering to update the GUI that's the problem
@lyxal I don't intend to die any time soon, and it's only a major issue when a release is imminent since we're the main ones who're using the bleeding-edge one
all those still don't imply not forgetting to update it
if I can accidentally forget to bump a version attribute in a single file when making a pypi release, I can very easily forget to update the website
however, typing h into the interpreter and pressing run is awful UX
so I'd like to find a compromise
it's how it's always been done
22:35
both of us know that's not a good reason d:
it's consistency with TIO/ATO
which is what everyone is used to
they run tens of languages
and thus have a reason for doing it like that: it's language-agnostic
> consistency
squishy
like jello
(now I want jello)
auto-generated is better in the long run because it means there's less chance of discrepancy
if you can figure out how to extract it at build time, then go for it
22:37
I think I might just do that
I'm off to go play some more UT yellow
later™, tho
skibidi-ping me if you need something explained :p
as a compromise, I'm going to add a "manually add flags" UI
which will also happen later™
priority 1 is literate mode
after that, adding those new flags
and then... well idk what then
that can be up to yall q:
also, quick reminder that you too can contribute to Theseus!
@lyxal hey uh how does one skibidi-ping
@lyxal skibidi skibidi: <message>
22:42
👍
 
1 hour later…
23:58
@lyxal but then the problem with this is that it gets nasty in terms of actually parsing it as a structure
and on top of that, there's now the issue of setting the arity of the implementation
as a modifier, the arity of the implementation could be delegated to whatever the implementation was
you wanted it to operate on the stack? no problem, just make the implementation a ! lambda
but as a structure, that becomes less possible
multiple branches could be a solution, but I don't know if I'm happy with that

« first day (1341 days earlier)      last day (434 days later) »