non-aristotelian has quit [Quit: non-aristotelian]
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
jemc has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
Raimondi has quit [Ping timeout: 240 seconds]
jemc has quit [Ping timeout: 246 seconds]
Raimondi has joined #crystal-lang
jemc has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron- has joined #crystal-lang
laaron- has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
Raimondi has quit [Ping timeout: 240 seconds]
<FromGitter>
<DanilaFe> I've pushed an update to my parser generator, Pegasus. It now actually reports shift / reduce errors and has support for ignoring tokens (like whitespace): https://github.com/DanilaFe/pegasus
spacemanspam has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
moei has joined #crystal-lang
spacemanspam has quit [Read error: Connection reset by peer]
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
Renich_ has joined #crystal-lang
Renich has quit [Ping timeout: 268 seconds]
Renich_ is now known as Renich
Renich_ has joined #crystal-lang
Renich has quit [Ping timeout: 250 seconds]
Renich_ is now known as Renich
_whitelogger has joined #crystal-lang
Renich has quit [Quit: Renich]
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
_whitelogger has quit [Remote host closed the connection]
_whitelogger has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
Renich has joined #crystal-lang
jemc has quit [Ping timeout: 258 seconds]
laaron- has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron- has quit [Remote host closed the connection]
laaron has joined #crystal-lang
_whitelogger has joined #crystal-lang
DTZUZO has quit [Ping timeout: 240 seconds]
laaron- has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron- has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Ping timeout: 256 seconds]
laaron has joined #crystal-lang
<FromGitter>
<girng> nice
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
<FromGitter>
<girng> starred
ashirase has quit [Ping timeout: 245 seconds]
ashirase has joined #crystal-lang
_whitelogger has joined #crystal-lang
trashhalo[m] has quit [Remote host closed the connection]
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
Renich has quit [Ping timeout: 240 seconds]
trashhalo[m] has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
<FromGitter>
<vladfaust> @DanilaFe what are the use cases?
dannyAAM has quit [Ping timeout: 250 seconds]
dannyAAM has joined #crystal-lang
<FromGitter>
<vladfaust> I mean what this tool an be used for?
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
<FromGitter>
<vladfaust> Why do you think it's amazing, @girng?
<FromGitter>
<girng> basically, i'm gonna be using multiple crystal instances for my master service, and i can communicate between them with pub sub. i remember doing this in 2015 or so with nodejs and it was a PITA because of callback hell
<FromGitter>
<vladfaust> Ah, yes, pubsub is implemented quite well in this driver
<FromGitter>
<girng> @vladfaust what language(s) did you know before coming to crystal?
<FromGitter>
<vladfaust> Um, I did some games on LibGDX (Java) and Unity (C#). Pascal and C++ while being a student. Also cJass (Warcraft 3). Got a PHP project. Javascript. Ruby, of course
<FromGitter>
<girng> nice! i was just looking at libGDX and was watching some tutorials by thechernoproject on youtube. went back to godot though. i was looking for a new game engine because i was a bit worried about decompiling issues. there is a issue on godot repo where your source code is available inside the .pck with a text editor.. ā ā i don't know any c# but i do know php and javascript. i really don't like c#'s
<FromGitter>
... syntax. gives me arthritis
<FromGitter>
<girng> i've never heard of cJass though
<FromGitter>
<girng> i found this (https://cjass.xgm.guru/)? was this an in-house scripting language Blizzard used?
<FromGitter>
<vladfaust> @girng I hate Java. Despite all issues Unity has, it's still the best game engine IMO
<FromGitter>
<vladfaust> Yes, that's a valid link for cJass. Created a couple of custom maps while being a scholar :)
<FromGitter>
<girng> very cool
<FromGitter>
<vladfaust> Thanks. It's been seven years ago when I started this wonderful journey
<FromGitter>
<girng> it is a great adventure. pretty rough for me, but i will get through it
<FromGitter>
<vladfaust> What's in the end?
<FromGitter>
<girng> am not sure yet :D. just keep improving with crystal
<FromGitter>
<vladfaust> @girng, I have some projects which would improve overall peoples' lives. I speak about cosmopolitanism, less or more. Need a sustainable source of income for that though to devote myself into it. Therefore I'm so active here :)
<FromGitter>
<vladfaust> @malkomalko yes
<FromGitter>
<girng> @vladfaust :)
laaron has quit [Remote host closed the connection]
<FromGitter>
<malkomalko> Have you read much about how languages are created from grammars -> lexers -> AST's -> parsers?
<FromGitter>
<malkomalko> from the looks of the README `pegasus` looks like it's creating an AST as `json` that can then be read in to create your own parsers
<FromGitter>
<malkomalko> Do I have that right @DanilaFe ^?
<FromGitter>
<vladfaust> Thanks, @malkomalko
<FromGitter>
<malkomalko> š
jemc has quit [Ping timeout: 272 seconds]
<FromGitter>
<DanilaFe> @malkomalko @vladfaust not quite. Pegasus creates a JSON description of a parser. Then, the JSON description is converted into parser code by a separate program (for the sake of modularity). So it doesn't create an AST in json, but rather a description of how to create one. The use case is indeed for writing programming languages and the like. For class, I used Pegasus to create a parser for basic shell
<FromGitter>
... commands. Pegasus' own grammar files are parsed used s Pegasus-generated parser.
<FromGitter>
<DanilaFe> Parsed using a*
return0e_ has joined #crystal-lang
return0e has quit [Ping timeout: 250 seconds]
<FromGitter>
<DanilaFe> To contribute to the game engine talk: I really dislike Unity. I remember once that I exported an empty game that weighted 250mb and consumed enough CPU for my laptop fans to spin up. Java isn't great either, but Kotlin + LibGDX is pretty fun. I actually really enjoy LibGDX; here's an old game I worked on using it (no kotlin back then) https://github.com/DanilaFe/Duality
<FromGitter>
<DanilaFe> And another Java + LibGDX game https://github.com/DanilaFe/Cave. I have yet to find another engine with high level features for sprites, that still allows access to OpenGL shaders
<FromGitter>
<vladfaust> @DanilaFe thanks for explanation, made it a bit clearer for me.
<FromGitter>
<vladfaust> Regarding to Unity, your words show that you just cannot cook it right :) That's ok, it's not that easy; but once I know its buttons and levers, it works perfectly, outputting 20mb-sized binaries
<FromGitter>
<DanilaFe> @vladfaust sorry to make you wait. Your question arrived at 4:00am my time, and I was asleep.
<FromGitter>
<vladfaust> No problem at all, @DanilaFe
<FromGitter>
<malkomalko> Totally hear you on it not being a classical AST, but the json that you are generating definitely has the same idea as the AST. It is in fact a tree like structure represented with json right? ā ā All that being said, I'm excited you posted that because I was just looking for something similar to help me generate an idea I have.
<FromGitter>
<malkomalko> Great job on Pegasus @DanilaFe. I'm definitely going to use this for my little emmet language. š
laaron has joined #crystal-lang
<FromGitter>
<DanilaFe> Thanks :) the JSON structure actually isn't a tree: largely, it's a bunch of lookup tables. They get directly pasted into the code, and are then used for efficient state transitions (a parser is basically a state machine). If you're curious, I took a lot of the implementation details from Modern Compiler Design by Dick Grune (not sure if I got the author right)
<Yxhuvud>
be glad you don't have to figure out ambigous parse trees.
<FromGitter>
<DanilaFe> LALR handles some ambiguity I think
<FromGitter>
<DanilaFe> More or less. I know for a fact that certain ambiguous grammars (math expressions with no order of operations) parse fine
<FromGitter>
<DanilaFe> @malkomalko the JSON doesn't create trees, yes, but the generated parser does. Hence the note. I'll clarify that when I'm at a keyboard
<FromGitter>
<malkomalko> Yup, makes total sense now. I'll add that book to my queue if you recommend it.
<FromGitter>
<DanilaFe> I used to write parsers by hand, but that's no fun :D
<Yxhuvud>
parse fine as in that you manage to get *one* possible tree yes. But I was talking about getting the whole parse forest. That is not something LALR or any LR based grammar handles
laaron has quit [Remote host closed the connection]
<Yxhuvud>
(though I dunno how sensitive lalr is against reduce/reduce-conflicts and such.
laaron has joined #crystal-lang
<FromGitter>
<kingsleyh> @girng how serious is the godot issue - Iām using it at the moment but was quite close to picking pixi instead
<FromGitter>
<Blacksmoke16> @vladfaust that wouldnt be as helpful as the annotation thing. I dont know what i would include to make that work. Inheritence works out nice since it allows you to define common methods for each route to have access to. Like i had the idea of adding a global callback to parse out the auth token from cookies/request header, then look it up and define it in the parent class. then you would have a
<FromGitter>
... `current_user` method in all your actions
<FromGitter>
<Blacksmoke16> or in future have something like `deny_access_unless_granted("view", "post")`
laaron has quit [Remote host closed the connection]
<FromGitter>
<girng> @kingsleyh it's not game breaking or anything or crazy serious, just your gdscript source is in raw text inside the .pck file. should be in bytecode, but i think they are going to be fixing that they said it's a bug
<FromGitter>
<Blacksmoke16> @Willyboar thanks :)
spacemanspam has quit [Read error: Connection reset by peer]
<FromGitter>
<girng> if anyone has some extra time could you please help me with this redis issue. the problem is, it's only a bug on WSL
<FromGitter>
<Blacksmoke16> prob be easier to just duel boot :p
Raimondi has joined #crystal-lang
<FromGitter>
<girng> i bought an extra ssd because i wanted to install a linux distro on it, but it was m2 lol. huge fail. i only have sata
<FromGitter>
<Blacksmoke16> ouch
<FromGitter>
<Blacksmoke16> thats a bummer :/
<FromGitter>
<girng> anyway you seem interested blacksmoke. let me create the paste link real fast one second
<FromGitter>
<Blacksmoke16> uh oh
<FromGitter>
<bararchy> haha @Blacksmoke16 , he got you
<FromGitter>
<Blacksmoke16> *its a trap*
<FromGitter>
<Blacksmoke16> heres a random question, if you have a class defined but nothing ever actually uses it. When you compile for release, does that class get included? or does LLVM do some tree shaking to remove unused stuff?
<FromGitter>
<girng> Okay, so on WSL (ubuntu), I use the following code to check if there is a connection to Redis ā https://paste.ee/p/s3b6c ā This works just fine on any non-WSL system (tested it on my debian vps). It catches the exception perfectly and normally (https://i.gyazo.com/22d01a69be5877525309adf0de56bce8.png). ā However, on WSL this exception does get raised! The console just hangs for indefinitely (forever).
<FromGitter>
<Blacksmoke16> im not super familiar with redis, but there is prob a better way to do that than trying it and catching an exception
laaron has quit [Remote host closed the connection]
<FromGitter>
<girng> thanks blacksmoke. i'm gonna post on the forum bcz i think it's indexable, might be able to help other people who google something similar
<FromGitter>
<girng> although prob not a lot of people using WSL, but maybethere is lol
<FromGitter>
<straight-shoota> @Blacksmoke16 code that's never used anywhere does not get compiled
<FromGitter>
<Blacksmoke16> š cool, thanks
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]