revive
typescript-go
revive | typescript-go | |
---|---|---|
12 | 24 | |
5,278 | 21,853 | |
1.0% | 4.0% | |
9.5 | 9.9 | |
about 21 hours ago | 6 days ago | |
Go | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
revive
-
Cognitive Load is what matters
> Our coding standards require that functions have a fairly low cyclomatic complexity. The goal is to ensure that we never have a a function which is really hard to understand.
https://github.com/fzipp/gocyclo
> * We also require a properly descriptive header comment for each function and one of the main emphases in our code reviews is to evaluate the legibility and sensibility of each function signature very carefully. My thinking is the comment sort of describes "developer's intent" whereas the naming of everything in the signature should give you a strong indication of what the function really does.
https://github.com/mgechev/revive
> Now is this going to buy you good architecture for free, of course not.
It's not architecture to tell people to comment on their functions.
Also FTR, people confuse cyclomatic complexity for automagically making code confusing to the weirdest example I have ever had to deal with - a team had unilaterally decided that the 'else' keyword could never be used in code.
-
A 10x Faster TypeScript
The Uber page does a pretty good job of summing it up. The only thing I'd add is that there has been a little bit of effort to reduce footguns since they've posted this article; as one example, the issue with accidentally capturing range for variables is now fixed in the language[1]. On top of having a built-in race detector since 1.1 and runtime concurrent map access detection since 1.6, Go is also adding more tools to make testing concurrent code easier, which should also help ensure potentially racy code is at least tested[2]. Accidentally capturing named return values is now caught by a popular linting tool[3]. There is also gVisor's checklocks analyzer, which, with the help of annotations, can catch many misuses of mutexes and data protected by mutexes[4]. (This would be a lot nicer as a language feature, but oh well.)
I don't know if I'd evangelize for adopting Go on the scale that Uber has: I think Go works best for shared-nothing architectures and gets gradually less compelling as you dig into more complex concurrency. That said, since Uber is an early adopter, there is a decent chance that what they have learned will help future organizations avoid repeating some of the same issues, via improvements to tooling and the language.
[1]: https://go.dev/blog/loopvar-preview
[2]: https://go.dev/blog/synctest
[3]: https://github.com/mgechev/revive/blob/HEAD/RULES_DESCRIPTIO...
[4]: https://pkg.go.dev/gvisor.dev/gvisor/tools/checklocks
-
revive v1.3.4 is now available
The v1.3.4 of revive, the fast, configurable, extensible, flexible, and beautiful linter for Go, is available.
-
net/http extension to exchange structs
I would suggest checking out something like revive to improve the code. For instance you use an errors.New(fmt.Sprintf(... when you can just use fmt.Errorf(... to simplify it. I am not saying obey everything but there are some good lints included that can even catch bugs (for instance misusing errors.Is or errors.As or general equality).
-
Why elixir over Golang
Linting and static analysis: https://revive.run/
- Just migrated our Open Source project to Golang
-
Revive 1.3 is out
For people using this linter (like me) https://github.com/mgechev/revive
-
Is there a better alternative to `gofmt`?
Been using https://github.com/mgechev/revive in all my projects.
-
Change Blogging my first Hacktoberfest (2021)
The day after, I talked about the Hacktoberfest to Salvador (architect colleague and my technical/career unofficial mentor). He is known for contributing to revive a Golang linter. We decided that I could contribute by solving these 3 issues (2 new rules and add a docker image to the release). Since this moment, I have been coding every available hour I had. It felt so reviving to spend time coding on new projects, rewarding to solve issues for people actually using the tool. Here are all my contributions.
-
Golang Style Checkers
While golint may be deprecated it has been brought back as revive. You can also enable in golangci-lint.
typescript-go
-
Unhinged JS Tooling Setups in 2025
The big names around are biome, oxc and an announced Microsoft-developed tsgo.
- Figma Files Registration Statement for Proposed Initial Public Offering
-
Swift at Apple: Migrating the Password Monitoring Service from Java
You didn't read the article. It wasn't a rewrite, it was a port.
https://github.com/microsoft/typescript-go/discussions/410
-
Show HN: I rewrote my Mac Electron app in Rust (app went from 1GB to 172MB)
Here's the FAQs, where they explain the decision to go with Go and not, say, rust.
https://github.com/microsoft/typescript-go/discussions/categ...
- Type-Constrained Code Generation with Language Models
-
TypeScript 7: 10x Speedup and the Go Language 🚨
First of all, the original TypeScript compiler under the hood is moving in the new version 7 from JavaScript to Go. That is, there will be conditionally TypeScript 6 (JS) and TypeScript 7 (Go). This was done mainly because of the scaling problem when used in very large projects, but also, of course, because of the speed.
- TypeScript-Go: Why a port instead of a rewrite? What's the difference?
- Microsoft Rewrite Tsc in Go
-
Why Go?
Since you wrote this it looks like [Anders replied](https://github.com/microsoft/typescript-go/discussions/411#d...) to one of the threads.
I have to agree with the sentiment that is a success story that the team is allowed to use the best tool for the job, even if it suffers from "not built here".
This is really healthy and encouraging to see in these large OSS corporate-sponsored projects, so kudos to you and the team for making the pragmatic choice.
- TypeScript Go (will be merged into TypeScript)
What are some alternatives?
staticcheck
Godot - Godot Engine – Multi-platform 2D and 3D game engine
golangci-lint - Fast linters runner for Go
porffor - An ahead-of-time JavaScript compiler
ALVR - Stream VR games from your PC to your headset via Wi-Fi
type-constrained-code-generation - Reproduction Package for the paper "Type-Constrained Code Generation with Language Models" [PLDI 2025]