Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backward and forward compatibility in Javascript specification #1814

Closed
Zerro97 opened this issue Dec 26, 2022 · 2 comments
Closed

Backward and forward compatibility in Javascript specification #1814

Zerro97 opened this issue Dec 26, 2022 · 2 comments

Comments

@Zerro97
Copy link

Zerro97 commented Dec 26, 2022

Yes, I promise I've read the Contributions Guidelines (please feel free to remove this line).


Please type "I already searched for this issue": "I already searched for this issue"

Edition: 2nd

Book Title: Get Started

Chapter: 1

Section Title: Backwards & Forwards

Question:

Question I have is whether Babel transpiler is used to produce forward or backward compatible version of Javascript code.

From official documentation from Babel:

Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.

But in the book, you mentioned:

Developers should focus on writing the clean, new syntax forms, and let the tools take care of producing a forwards-compatible version of that code that is suitable to deploy and run on the oldest-supported JS engine environments.

I was conflicted whether to say Babel produces forward or backward compatible version of Javascript code, given how Babel doc and many people on internet refer to Babel as backward compatible.

I'm just curious about your opinion on this.

@getify
Copy link
Owner

getify commented Dec 26, 2022

Please see my several comments in this thread: #1803

@DevJSter
Copy link

DevJSter commented Aug 6, 2023

The description provided in the Babel official documentation and the statement in the book are not necessarily contradictory but may appear so due to different perspectives and contexts.

Babel is primarily known for converting ECMAScript 2015+ (ES6+) code into a backwards-compatible version of JavaScript. This means it takes modern JavaScript code, which might use the latest language features that are not supported by older browsers or JavaScript engines, and transforms it into equivalent code that is compatible with those older environments. In this sense, Babel helps developers write code using the latest syntax and features without worrying about whether it will work on older platforms.

However, the statement in the book refers to the broader concept of forward compatibility. In the book's context, "forward-compatible" means writing code using the latest syntax forms while trusting that the tools, such as Babel, will handle converting it into a version that will work on older engines. This perspective encourages developers to embrace modern JavaScript and not limit their code to older syntax just for compatibility reasons. Instead, they can use modern features, knowing that tools like Babel can produce a version that will work even in older environments.

In essence, Babel's primary goal is to provide backwards compatibility, but it can be seen as enabling forward compatibility as well. By writing code using modern syntax, you're being forward-compatible in the sense that your code is ready for future JavaScript engines and environments while still being transformed to work on older ones.

So, to sum up, Babel's main purpose is to produce a backward-compatible version of JavaScript, but it facilitates forward compatibility by allowing developers to write modern code that can be transformed for older environments.

@getify getify closed this as completed Aug 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants