RX14 changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.27.0 | Fund Crystal's development: http://is.gd/X7PRtI | GH: https://github.com/crystal-lang/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Gitter: https://gitter.im/crystal-lang/crystal
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
<FromGitter> <Sija> @Willyboar there's sentry
<FromGitter> <Sija> not to confuse with sentry.io
dostoyevsky has quit [Quit: leaving]
dostoyevsky has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
Raimondi has joined #crystal-lang
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5c3008e912db9607e73a668b]
<FromGitter> <Blacksmoke16> thats a new one
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]
laaron has joined #crystal-lang
laaron- has joined #crystal-lang
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
spacemanspam has joined #crystal-lang
laaron- has quit [Remote host closed the connection]
spacemanspam has quit [Read error: Connection reset by peer]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
spacemanspam has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
<FromGitter> <vladfaust> Very nice, thanks
<FromGitter> <Willyboar> lol
<FromGitter> <Willyboar> @vladfaust you are waiting for the answer ?
<FromGitter> <vladfaust> It does not look like a rhetorical question šŸ¤”
<FromGitter> <vladfaust> I tried to understand its readme, but got no luck. And knowledge
<FromGitter> <girng> wow, https://github.com/stefanwille/crystal-redis is amazing
<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> but now, looking at the syntax for subscribing here (https://github.com/stefanwille/crystal-redis-examples/blob/master/src/publish-subscribe/subscribe.cr) it's very simple for me
<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> That's a good plan
<FromGitter> <girng> hbu?
<FromGitter> <malkomalko> @vladfaust were you asking what https://github.com/DanilaFe/pegasus was used for?
<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?
laaron has joined #crystal-lang
jemc has joined #crystal-lang
<FromGitter> <malkomalko> https://www.destroyallsoftware.com/screencasts/catalog/a-compiler-from-scratch is a great intro video explaining that part of the process in a high level.
<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> I want to build something like emmet https://docs.emmet.io/cheat-sheet/ that compiles to http://flutter.io widgets instead of html
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
jemc has joined #crystal-lang
jemc has quit [Ping timeout: 268 seconds]
bmcginty has quit [Ping timeout: 250 seconds]
bmcginty has joined #crystal-lang
laaron has quit [Remote host closed the connection]
<FromGitter> <girng> what happened to Time.now.epoch_ms??
<FromGitter> <girng> nvm found it https://github.com/crystal-lang/crystal/pull/7024
<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)
<FromGitter> <malkomalko> Yah I saw that when looking at the json output but only read up to https://github.com/DanilaFe/pegasus#a-note-on-parse-trees, which I read that as the json creating a tree like structure.
<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
<FromGitter> <malkomalko> I really liked https://www3.nd.edu/~dthain/compilerbook/ as a nice free resource. Also heard great things about http://craftinginterpreters.com/
<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> <Blacksmoke16> https://github.com/Blacksmoke16/athena/tree/v0.1.0 did another doc pass and updates the docs. Added some for renderers, route constraints, and formdata param converter
<FromGitter> <Blacksmoke16> prob release v0.1.0 tonight :)
<FromGitter> <Blacksmoke16> not sure what else to do without some testing/feedback
laaron has joined #crystal-lang
<FromGitter> <Willyboar> @Blacksmoke16 šŸ‘ Congrats
<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> ... This is also true for `TCPSocket` as well, not just Redis. I'm going to stop typing now [https://gitter.im/crystal-lang/crystal?at=5c3126f05ec8fe5a85095ef6]
<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]
laaron has joined #crystal-lang
Raimondi has quit [Ping timeout: 240 seconds]
Raimondi has joined #crystal-lang
jemc has joined #crystal-lang
jemc has quit [Ping timeout: 250 seconds]
Raimondi has quit [Ping timeout: 240 seconds]