LanguageServer.jl
StaticLint.jl
Our great sponsors
LanguageServer.jl | StaticLint.jl | |
---|---|---|
4 | 4 | |
349 | 133 | |
3.2% | 1.5% | |
7.0 | 5.7 | |
12 days ago | 12 days ago | |
Julia | Julia | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
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.
LanguageServer.jl
-
I created an Emacs package to statically lint Julia files (using StaticLint.jl)
I believe that LanguageServer.jl actually uses StaticLint, which means that there is no difference. Ideally, there would be a LanguageServer implementation for Julia which reliably communicates the information from StaticLint to Flycheck. I am using lsp-julia, but this seems to not show the errors from StaticLint. I am aware of eglot-jl but I could not get it to work... So this package is basically like an "error server" that has worked for me to finally get static errors to show up in Emacs for Julia.
-
IDE options aside from VS Code?
Emacs! https://github.com/julia-vscode/LanguageServer.jl
StaticLint.jl
-
Julia v1.9.0 has been released
Yes, tooling around this is being developed in the form of linters (e.g. https://github.com/julia-vscode/StaticLint.jl) and through real compiler integration tools like the very cool https://aviatesk.github.io/JET.jl/dev/ but this is definitely somewhere that the tooling in julia is weaker than in other languages. It seems to be picking up a lot of speed though.
-
The Julia language has a number of correctness flaws
It is correct if `A` is of type `Array` as normal Array in julia has 1-based indexing. It is incorrect if `A` is of some other type which subtypes `AbstractArray` as these may not follow 1-based indexing. But this case errors normally due to bounds checking. The OP talks about the case where even bounds checking is turned off using `@inbounds` for speed and thus silently giving wrong answers without giving an error.
An issue was created sometime ago in StaticLint.jl to fix this: https://github.com/julia-vscode/StaticLint.jl/issues/337
-
I created an Emacs package to statically lint Julia files (using StaticLint.jl)
See the README for details. This package will run an asynchronous Julia process in the background that uses StaticLint.jl to parse your Julia files and highlight errors using Flycheck.
Statically lint = find errors in the Julia file like using variables that are not defined, and functions with the wrong arguments. For Julia, StaticLint.jl is an actively developed library that does static linting. It basically provides a bunch of functions that spit out errors in your Julia file like those that I mentioned above. If you are an Emacs editor user, this project is like a "convenience" which will run Julia silently in the background, and communicate with it to extract errors in the file that you currently have open. These errors are then highlighted in your editor view using the Flycheck package that is one of the ways to highlight errors in Emacs.
What are some alternatives?
jupyterlab-lsp - Coding assistance for JupyterLab (code navigation + hover suggestions + linters + autocompletion + rename) using Language Server Protocol
eglot-jl - Wrapper for using Julia LanguageServer.jl with emacs eglot
julia-staticlint - Emacs integration for StaticLint.jl
Agents.jl - Agent-based modeling framework in Julia
julia-snail - An Emacs development environment for Julia
julia.vim - Vim plugin for Julia.
Starlight.jl - A greedy game engine for greedy programmers!
Optimization.jl - Mathematical Optimization in Julia. Local, global, gradient-based and derivative-free. Linear, Quadratic, Convex, Mixed-Integer, and Nonlinear Optimization in one simple, fast, and differentiable interface.
dotfiles - Linux work environment setup
StatsBase.jl - Basic statistics for Julia
OnlineStats.jl - ⚡ Single-pass algorithms for statistics