« first day (1028 days earlier)      last day (748 days later) » 

00:01
The online interpreter PR has been merge
00:13
oh okay that's pretty cool
also I was looking through the commits on the old vyxapedia and I think this commit is a good reflection of the vyxal team dynamic :P
I stand by my statement that I was allowed to change the credits like that :p
I suppose as the organization owner, yes, you are indeed allowed to :P but yeah I have no issues with it, and I kept it like that in the new version
when I first saw the commit I thought you added yourself in and I was like "yes that's fair and you are allowed to do that" and then I realized it was actually you removing it and that made a lot more sense :P
lol
ah frick I think I forgot to add that one suggestion in the website PR that changed the website gen branch from the temp branch to v3
yep
I did
I forgor
nothing a little 14ing can't fix
done
For future reference, vyxal.github.io/Vyxal is the url of the v3 interpreter
3
01:18
nice
I presume it doesn't work yet
It does
It does work
A limited command set but it works
@hyper-neutrino Try it Online!
or Try it Online! if you want the sbcs version
01:49
oh okay
I tried kH and it failed so I just assumed none of it worked yet LOL
anyway, if I want to help with v3, where should I start? are we pretty much just on the implementing built-ins stage?
I'll probably look into fixing the bot first though
@hyper-neutrino so the timeline is to merge the pending PRs, make a v3.0.0b1 release and then start elementing like crazy
ah, alright
we're really just making sure the infrastructure is ready for scaling
@hyper-neutrino to get started, I'd recommend reading all the docs on the v3 branch
right, good idea
they detail how the lexer/parser/interpreter work, as well as how to format everything
also, install sbt (or mill depending on your preferences)
that's a helpful thing to have
and depending on whether you use windows, WSL and Ubuntu
hopefully we'll have the infrastructure PRs merged in the next 12 hours so the next phase can begin
feel free to ask any questions about the v3 branch
it can be a little confusing at first, but it's designed to hopefully be logical enough to understand with a little reading
02:01
cool, thanks!
And of course, if you find anything lacking in our current infrastructure, let us know :p
02:14
I highly doubt I am better at infrastructure than y'all but if I notice anything I will be sure to raise it :P
 
2 hours later…
04:02
@lyxal (if you use Mill, you don't actually have to install anything, the script to run mill is included in the repo)
isn't that only if you use windows?
I will likely be on both WSL and debian lol
last I checked, bats only ran on windows
04:33
@user have you had a chance to look at my pr replies?
04:47
@lyxal no, on it
@lyxal No
You can run .bats on macs/Linux?
Oh, I see what you mean
There's a shell script for linuz
the file is named mill
Probably should include that in the repo
oh
good
04:51
@lyxal both lgtm me
i actually forgot to review the web one
there are some changes, give me sec
@hyper-neutrino Ginger is doing that
So about the l flag here, if it's not going to modify the Settings object, it should either not be passed in at all, or it should modify the Settings object and the interpreter should use that to decide whether to sbcsify
Okay but then that means adding argparser to the online execute function
It does?
that's the only reason I added it to Settings
offline mode doesn't pass it to Settings
online mode does
04:57
And for vyPrint, I would prefer us to use printFn so that vyPrintln doesn't have to be aware of what's going on and so we can customize printing for tests (although printFn really should be inside Globals, not Settings, that's my bad). If you do want to go ahead with the current way, then onlineOutput should be inside Globals, so that you don't have to get the top context
Also, over here, when popping off an empty stack in online mode, why turn the default value into a string? Why not just use a normal 0 as a number?
if temp.nonEmpty then Parser.parseInput(temp)
that's why
@user are there other ideas on how to make online output return as a string?
    if settings.online then settings.defaultValue
    else
      val temp = StdIn.readLine()
      if temp.nonEmpty then Parser.parseInput(temp)
      else settings.defaultValue
We could do ^
Because if the default value is a string, then doing toString and parseInput again would ruin it
@lyxal The JS code passes in a function that does the outputting, the Scala.js code doesn't need to know about the DOM
@user no but I want the execute function to return a string
Why?
Because otherwise making it async is going to be hard
And forget about web workers if it's not a string
Web workers can't interact with the DOM at all
05:03
Ah, that makes sense
Then execute could make a StringBuffer, make printFn append to that, and still return a String
@user that looks like it'll work
@user oh yeah string buffers exist
(also, I think the scala js file still has some references to document in it which is a no-no for web workers)
Yup, getSBCSified should definitely return a string
Should I make a branch?
Yeah
👍
05:37
@lyxal oh okay
05:55
@lyxal I mean the file it generates. I think it has references to document in other functions
06:47
@user I've been doing some work on the branch you made and I think I can get web workers working on it
Give me some time to experiment a bit more and I'll push anything I have
06:59
So what i've got almost allows for stopping programs
Just need to make a scala method that allows for getting the contents of the string builder outside of execute
And call that in the stop section of the web worker
At least, that's what I think needs to happen
I don't know for sure
it's been pushed to the repo
07:12
I'll add a bit more later because right now imma be away from computer
hope it's not too late to suggest this but is it possible to have a step-by-step debugger
You'd have to ask @user about that
Because it's something we've kinda been thinking about and kinda been forgetting to incorporate
Do you mean v2 or v3?
Jan 28 at 0:23, by user
I think we may have to make a separate Debugger class with an entirely different implementation from Interpreter (for v3)
We have a nasty habit of not remembering that the debugger is something we want lol
07:35
Also I need to figure out how to make a continue/return statement work in loops and functions
I'm gonna wait until pldi is launched to ask that :p
BTW is the newest version still transpiled or is it interpreted in v3
07:54
i think its interpreted
Interpreted
 
3 hours later…
10:51
Okay so i've been doing some work with webworkers and there's one tiny problem
only a tiny one nothing too major
it's that if you get one caught in an infinite loop you can't force quit it without losing the data it was processing
which is only like a tiny inconvenience
definitely won't lead to having to brainstorm a workaround
You'd need to be just constantly sending over data, which you'd probably want anyway for live I/O
send it to where from where?
and sending it how?
11:07
postMessage
well you see the thing is that currently, that won't work
sounds like the postMessage would have to shudders lie in the Scala and not just a worker file
Why not?
Well, how are you printing stuff to the output box?
once the program is finished
because Vyxal.execute returns a string
Is it feasible to have a submethod that takes an output device (i.e. print or whatever the equivalent is)?
output to where? A string or directly to the output box?
11:24
2
Q: Scala.js: How to access self in a Webworker

Rich OliverSo I have a webworker: package pWorker import scala.scalajs.js._ import org.scalajs.dom._ object WorkScript extends scala.scalajs.js.JSApp { def main(): Unit = { val x = 4 val y = 8 val z = x + y println("Worker x + y =" -- z.toString) } } When launched from...

that seems to maybe be an option
on second thought, no
ooh you mean pass a js function that calls postmessage each time vyprint is called
12:02
scoping
scoping is the issue with that
because evaling the js in scala makes it forget the worker that's calling it
12:17
@lyxal … there were keyboard mappings for v2
TIL
so if you type A. it gives A with a dot above
o.0
Can you add that to the v3 docs lol
that's only when you press tab on the online interpreter
nice
and what is the mapping for super/sub script numbers?
12:34
there's only subscript
and _<number>
13:00
@emanresuA the scary thing is that this works
hey so remember how copilot knows the vyxal website?
it also knows that the B flag is timeout after 30 seconds and that T is timeout after 60 seconds
 } else if (flags.value.includes("B")) {
            timeout = 30000;
        } else if (flags.value.includes("T")) {
            timeout = 60000;
        }
it made that
it really has been trained on our repo
yesterday, by lyxal
but seriously though, I don't know whether to be proud that it knows about us or concerned that it knows about us
In other news, programs can now be stopped
@user you'll noticed I changed the title and description of #1598
and that I marked it ready for review
that's because I think I've managed to do everything you would have otherwise done
+ I added a few more features to the PR
13:15
@lyxal ty
13:28
Actually @user I'll make #1598 a draft again because I think you wanted to change how the l flag is passed around
 
2 hours later…
15:17
@lyxal i wonder if it knows flax lol
 
1 hour later…
16:43
Hi! I wonder how to avoid exact numbers in this (and similar) examples?
Input: [1,1] ∆/
Output: 14142135623731/10000000000000
iirc theres a flag for that
No i try, maybe not 'a'
@lesobrod there's the flag to output in decimal
yeah was just gonna post that
Ahah not 'a' flag, but "a flag". Sorry!
Where i can read about flags?
16:49
you cant really
use the h flag for a list of flags
@AndrovT Wow its great thanks!
 
1 hour later…
17:58
@lyxal Nice :) I'm surprised that JS functions and scala functions are incompatible...
18:45
Why ⟨ 2.8| 8 | 1.4 | 6.7 ⟩ 3.6 Þ<
return 2.8, not ⟨ 2.8 | 1.4 ⟩ as i expected from description??
It's more like "takewhile less than 3.6"
Also, we don't have a takewhile currently
Hmmm
Find all numbers less than a certain value in a (potentially infinite) list assumed to be (non-strictly) increasing
Aha, works with sort, OK
 
1 hour later…
20:16
@lyxal Permission to use the API for Vyxplainer?
I haven't started yet, because of storage space and stuff like that.
But I have plenty time on the weekend.
21:12
@hyper-neutrino Yes. We'll have to modify the context thingy to keep track of frames or whatever, and the Interpreter.execute method and anything that involves executing function objects will need a bit of special handling, but it's definitely doable
@lyxal Nice work!
That was really quick
@emanresuA They just work differently. You have to convert a js.FunctionX to a FunctionX
This page shows corresponding Scala types for JS types
Oh, i see what you mean
@lyxal Why can't printFunc be taken as a js.Function1[String, Unit] directly?
@lyxal So that's why you've been promoting PLDI so hard :P
@lyxal Thanks, I'll try to do it as soon as possible but if I can't get around to it by Saturday you can just go ahead and merge it
PR looks good to me overall, I just feel like printFunc would be better as a js.Function1 instead of a string
Man, I wish I could try GitHub pages on branches other than version-3 so that I could try out the program stopping
Might be able to set that up later
21:41
@mathcat sure
@user it could be, I didn't want to cause myself too many headaches lol
Understandable lol
I have a boring 2-hour lecture now but I'll see if a js.function can be passed directly when I have time
This is really cool btw
Were you able to stop cookie?
@user I didn't try lol
@user I did all sorts of things like even try to overwrite console.log at one point
Cookie doesn't work yet
It's an extremely important feature lol
@user I used node + http-server to host it on localhost
Because Firefox was like "hmph I don't like workers opening up local files"
https server is an npm package

« first day (1028 days earlier)      last day (748 days later) »