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

feat: introduce next generation ADC #138

Merged
merged 10 commits into from
Jul 14, 2024
Merged

Conversation

bzp2010
Copy link
Collaborator

@bzp2010 bzp2010 commented Jul 12, 2024

Description

Introducing Next Generation ADC.

Currently, ADC is implemented in a rudimentary language, Golang, with a lack of expressive syntax that hampers the implementation and maintenance of its functionality, and this state of affairs has to be changed. CLI tools are simply not a performance-sensitive scenario, and the use of Golang is not justified.

Scripting languages strike a balance between performance and language features. NodeJS uses the V8 JS engine to perform JIT compilation with respectable performance, and TypeScript provides the best language features that can be compiled to JavaScript, so the next generation of ADCs uses TypeScript + NodeJS stack.

Thanks to the SEA of NodeJS, ADC can still be compiled into a single executable file and run on major operating systems (Linux, Windows, macOS) and major CPU instruction (AMD64, ARM64), and it provides pre-built binaries for all six platforms. In the future, it can also be published to npm repositories and accessed using npx, which will allow users to use ADC on more platforms that don't support SEA compilation at the moment, and will be easy to integrate with the CI/CD pipeline.

We use Nx as the build toolchain, and manage packages in a modular way, so that ADC's backend and converters will be able to evolve independently and be built with major releases. This provides greater modularity than the "primitive" package mechanism in Golang.

On the private dev branch, it's pretty much done by me personally, there have been hundreds of commits, commits from other developers have been reviewed or completely rewritten in the current commit. Too many commits logged could prevent this PR from being readable, so they are collapsed into a single PR.

Checklist

  • I have explained the need for this PR and the problem it solves
  • I have explained the changes or the new features added to this PR
  • I have added tests corresponding to this change
  • I have updated the documentation to reflect this change
  • I have verified that this change is backward compatible Answer is NO

@bzp2010 bzp2010 force-pushed the feat-intro-new-adc branch from 565abf7 to b569f0d Compare July 13, 2024 01:50
@bzp2010 bzp2010 marked this pull request as ready for review July 13, 2024 02:11
@bzp2010 bzp2010 added documentation Improvements or additions to documentation enhancement New feature or request labels Jul 13, 2024
Copy link
Contributor

@pottekkat pottekkat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

Copy link
Contributor

@juzhiyuan juzhiyuan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bzp2010 bzp2010 requested a review from juzhiyuan July 13, 2024 16:37
@bzp2010 bzp2010 merged commit 774595e into api7:main Jul 14, 2024
4 checks passed
bzp2010 added a commit that referenced this pull request Jul 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants