<gkatsev>
the parser is pluggable but it isn't currently meant for extensibility by "outsiders"
<alexgordon>
they should tell the rest of the internet
<krainboltgreene>
Interesting.
<gkatsev>
they just didj
<gkatsev>
s/j//
<alexgordon>
cause everybody is going crazy about babel ATM
<krainboltgreene>
Well, to be fair, they're mostly going "crazy" over the transformers.
<krainboltgreene>
language-features-as-a-dependency is a really cool concept.
<alexgordon>
they'll probably get forked
<gkatsev>
they do want to support it. But they want to consciously make the API decision.
<krainboltgreene>
> Since Babylon is built with a plugin-based architecture, there is also a plugins option which will enable the internal plugins. Note that Babylon has not yet opened this API to external plugins, although may do so in the future.
<krainboltgreene>
gkatsev: Thanks for the correction!
<gkatsev>
np
<gkatsev>
they just don't want to support the terrible API decisions monkey patching would lead to.
<alexgordon>
yeah but I'm not entirely convinced they have enough power to stop it happening
<alexgordon>
anybody can add a "preset" to babel
<alexgordon>
just clone the repo right?
<krainboltgreene>
I think you're making the mistake I made alexgordon. presets are collections of plugins, plugins are transformers and syntaxes, but syntaxes are JUST a function that enables a parser option.
<krainboltgreene>
They don't actually do *anything* but flip a prewritten switch.
<krainboltgreene>
There's a JSX switch, async switch, decorator switch...
<alexgordon>
is the parser not modularized?
<krainboltgreene>
Privately.
<krainboltgreene>
Those switches ar ethe only public way to change the behavior of the parser.
<alexgordon>
yes privately, but in open source that does not mean much :P
<gkatsev>
alexgordon: well, previously it could be monkey patched but they closed that off by including a pre-built version of babylon.
<gkatsev>
they don't want to support whatever monkey patching abuse comes their way.
<gkatsev>
but don't have the time immediately to make a *good* API for this
<alexgordon>
but someone can still clone babel and add in the code
<krainboltgreene>
Yes.
<gkatsev>
yes, someone could still close babel and babylon and relase a "cs-babel" or something
<krainboltgreene>
You'd have to: clone babel, clone bablyon, add your switch, compile babel, release your babel.
<gkatsev>
krainboltgreene: also, thanks for the babel-plugin-handbook. Forgot it existed.
<alexgordon>
way I see it: best case someone makes a "babel generator" that makes a private babel with your extensions compiled in, worst case someone makes a "babel-prime" which has the API they won't add
<krainboltgreene>
babylon's logo is amazing.
<krainboltgreene>
babel-prime is my band name now.
<alexgordon>
I think the idea is too compelling for them to stop IMO
<gkatsev>
alexgordon: the specific problem is that people were monkey patching babylon to do things it wasn't originally intended to do. They closed the ability to monkey patch so that they wouldn't have to support that API forever because people were too eager.
<gkatsev>
hopefully, they'll focus on making babylon extensible by the community as a pretty high priority
<alexgordon>
it sounds awfully like gcc :P
<gkatsev>
they're totally aware how popular it is and how much people want it. They just want to make an explicit decision on the API that makes it pluggable/extensible.
<alexgordon>
"oh we won't add plugins to gcc"
<alexgordon>
never stopped people tho
<gkatsev>
no, that isn't what they're saying
<alexgordon>
"We're well aware how popular the idea of extending the Babel parser is, which is exactly why we're shutting it down before anything popular gets built on it and we're forced to support it."
<krainboltgreene>
One pain I've been feeling is debugging babel-node stuff.
<krainboltgreene>
I mean other than it being broken at the moment for debugging.
<alexgordon>
he didn't say the monkey patching infrastructure, he said the _idea_ itself. I dunno, maybe he misspoke
<gkatsev>
alexgordon: they want to built APIs for it. They don't want to support it via super hacky monkey patching.
<gkatsev>
alexgordon: yeah, it's because the only way to extend it right now is monkey patching
<alexgordon>
can we get back to arguing about coffeescript? :P
<alexgordon>
I was more interested in that argument
<gkatsev>
but I've talked to them a bit on slack and it's not that they don't necessarily want to to support it. It's just that it's not an easy thing and they want to do it explicitly, consciously, and with "careful consideration"
<gkatsev>
alexgordon: ok. Let's talk about how CS is bad. :P
<alexgordon>
go
<gkatsev>
CS is bad.
<alexgordon>
coffeescript is everything I want in a language, except curly brackets
<gkatsev>
(I didn't really want to argue about whether CS is bad. Also, I need to make food for the week right now. bbl)
<pikajude>
coffeescript
<pikajude>
that is all
<alexgordon>
multiline regex literals, that is all :P
<alexgordon>
also this sort of thing: foo?[bar]
<alexgordon>
(f(x) for x in y if p(x))
<alexgordon>
which it had generator comprehensions though
<alexgordon>
*wish
Hrorekr has quit [Ping timeout: 276 seconds]
Hrorekr has joined #elliottcable
FelixZone has joined #elliottcable
Hrorekr has quit [Ping timeout: 265 seconds]
<FelixZone>
hm hm hm
FelixZone is now known as {felix}
{felix} has quit []
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Rurik has joined #elliottcable
Rurik has quit [Ping timeout: 245 seconds]
Rurik has joined #elliottcable
Rurik has quit [Changing host]
Rurik has joined #elliottcable
Rurik has quit [Ping timeout: 265 seconds]
Rurik has joined #elliottcable
Rurik has quit [Ping timeout: 245 seconds]
Rurik has joined #elliottcable
<ec^>
7:33 PM <krainboltgreene> language-features-as-a-dependency is a really cool concept.
<ec^>
krainboltgreene: haaaaaaaaave you met … Paws? *turns around by shoulder, introduces*
<ec^>
also wtf is ‘future-self-transformation.’ you keep using this phrase …
<krainboltgreene>
We did it at work, using the new babel. We're like "We use redux, we currently do currying to connect react components, maybe we should look at decorators?" 5 minutes later we tried it, helped it.
<krainboltgreene>
ec^: `future-self-transpilation` is a term I'm hoping catches. It's the idea of defining a system where you can easily test future language changes with zero overhead, zero hiccups, and a non-mutating install.
<krainboltgreene>
I remember a while back CoffeeScript had this whole debacle.
<krainboltgreene>
Someone wanted...async? Syntax built into coffee script.
<ec^>
I'm still trying to support IE6; most of those things pass me by.
<ec^>
yeah, icedcoffeescript. it was really, really neat at the time.
<krainboltgreene>
Anyways, the maintainer didn't like it AT ALL and his response was basically "Shove off, build your own".
<krainboltgreene>
Exactly.
<ec^>
but it's a false flag.
<ec^>
JavaScript is just fundamentally the wrong language for asynch work. ¯\_(ツ)_/¯
<krainboltgreene>
It mostly got "media attention" and not real attention. People who wanted to try it out basically had to break their build.
<krainboltgreene>
Now? You just install babel, a new transformer, and 5 minutes later you're coding with a new language concept.
<ec^>
like, no.
<krainboltgreene>
Anyways, that's future self transpiliation. An ecosystem for moving forward without pain, but with community effort.
<krainboltgreene>
Basically Lisp macros.
<ec^>
six years ago, I had the majority of the *features* that make up my language work, already laid out.
<ec^>
you know what I've been doing for six years?
<ec^>
Getting them to work together *well*.
<gkatsev>
going to conferences?
<gkatsev>
:P
<krainboltgreene>
Haha
<krainboltgreene>
That's one of the boons of babel and realized FST.
<krainboltgreene>
It's not just the smart people who can work on them
<ec^>
Language design is extremely, extremely, *extremely* intricate and precise. Every little nook and cranny where any two user-goals you want to support interact with eachother, has to be examined, and then re-examined when you change something because of *another* such examination revealing a flaw … >,<
<ec^>
you don't just … add asynch to a language.
<krainboltgreene>
Sure you do.
<ec^>
That's how you get Lovecraftian horrors like promises or deferreds
<krainboltgreene>
I've written a few languages, it's not that ivory tower ec^ :P
<krainboltgreene>
It's also how you (eventually) get futures and observables.
<ec^>
¯\_(ツ)_/¯ I'd suppose that they were probably either 1. derivative, or 2. terrible. ;)
<krainboltgreene>
Heh. We should do a pair session and I can show you stage 0.
<ec^>
huge not-fan of observables /=
<ec^>
I see how they fit in to *what JS is*, but, just,
<krainboltgreene>
Streams are really good for programming though!
<gkatsev>
which observables? the rxjs observables or the new proposal thing?
<ec^>
is there a new one?
<ec^>
like I said: behind. >'=
<gkatsev>
iirc, they're not quite the same thing.
<krainboltgreene>
I prefer Rx.js
<gkatsev>
and there's a web platform/js proposal for it. Don't really know much of the details around it.
Rurik has quit [Ping timeout: 255 seconds]
Rurik has joined #elliottcable
Rurik has quit [Ping timeout: 255 seconds]
irclogger_com has quit [Ping timeout: 246 seconds]
inimino has quit [Ping timeout: 255 seconds]
Rurik has joined #elliottcable
Rurik has quit [Changing host]
Rurik has joined #elliottcable
irclogger_com has joined #elliottcable
inimino has joined #elliottcable
eligrey has quit [Quit: Leaving]
alexgordon has joined #elliottcable
Rurik has quit [Ping timeout: 240 seconds]
Rurik has joined #elliottcable
Rurik has joined #elliottcable
Rurik has quit [Ping timeout: 250 seconds]
Rurik has joined #elliottcable
Rurik has joined #elliottcable
alexgordon has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
alexgordon has joined #elliottcable
Hrorek has joined #elliottcable
Rurik has quit [Ping timeout: 240 seconds]
Hrorek has quit [Ping timeout: 272 seconds]
Hrorek has joined #elliottcable
Hrorek has quit [Ping timeout: 264 seconds]
oldskirt has joined #elliottcable
alexgordon has quit [Read error: Connection reset by peer]
oldskirt has quit [Ping timeout: 276 seconds]
fujisan has joined #elliottcable
Rurik has joined #elliottcable
<Rurik>
ec, ec^, there?
Hrorek has joined #elliottcable
Rurik has quit [Ping timeout: 260 seconds]
oldskirt has joined #elliottcable
oldskirt has quit [Ping timeout: 250 seconds]
Hrorek has quit [Ping timeout: 240 seconds]
Hrorek has joined #elliottcable
oldskirt has joined #elliottcable
<ec^>
rarik: o7
oldskirt has quit [Client Quit]
<ec^>
rarik: I'm with irl friends for a couple days, probably