microsoft / microsoft/multilspy
Proposal: add BSL (1C Enterprise) language support
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 610
- Forks
- 111
- PR merge metrics
- No merged PRs in 30d
Description
Summary
BSL is the programming language of 1C:Enterprise and OneScript — a business-app platform used heavily across the post-Soviet region and Europe. This proposal wraps https://github.com/1c-syntax/bsl-language-server (403⭐, MIT, Java 17) as a new Language adapter in multilspy.
Motivation
- BSL codebases routinely exceed 2 000 modules; ERP configurations reach 10 000+.
- No LSP-based BSL tooling exists in the Python ecosystem today.
- We are building an LLM-driven refactoring orchestrator on top of multilspy, currently via a private fork using internal APIs.
- Upstream adoption lets downstream tools depend on
multilspy>=X.Yinstead of maintaining forks. - Opens BSL to multilspy's existing semantic-tooling ecosystem (Serena et al.).
Evidence (from our internal integration, 2026-04)
| Metric | Value |
|---|---|
| Real-client soak test | 2 027 .bsl files opened in 12.93 s, RSS 52 → 201 MB |
| BSL LS cold start | ~8 s |
| Adapter integration tests | 3/3 passing (document_symbols, references, rename) |
| Grammar error rate | 0.0% (complementary fix in a parallel tree-sitter-bsl PR) |
Scope
Minimal additive change, matching the eclipse_jdtls / kotlin_language_server pattern.
- `Language.BSL = "bsl"` added to
multilspy_config.py. - Factory branch added to
language_server.py. - New package
language_servers/bsl_language_server/with 4 files:bsl_language_server.py— subclassesLanguageServer, launchesjava -jar bsl-language-server.jar --lspas an argv list.runtime_dependencies.json— pins BSL LS 0.22.0 with verified SHA256, downloads from GitHub releases on first use.initialize_params.json— BSL-specific capabilities.__init__.py.
- Three integration tests in
tests/multilspy/test_multilspy_bsl.py, skipped whenjavais not on PATH. .gitignoreentry forbsl_language_server/static/(matches other JAR-based adapters).
No changes to core / protocol / other adapters. Python-only, no C extensions, no new runtime deps.
Non-goals
- `workspace/didChangeWorkspaceFolders` eager indexing — tracked separately upstream at 1c-syntax/bsl-language-server. Current adapter uses per-document
didOpen, same as Java / Kotlin. - Diagnostics / code actions — `window/logMessage` and `publishDiagnostics` acknowledged but not surfaced.
Prerequisites
- Java 17+ on PATH (BSL LS is a Spring Boot app built for JDK 17).
- First run downloads ~94 MB JAR; subsequent runs read from
static/<version>/.
Next step
If the proposal is acceptable in principle, I have a ready branch on my fork (Alex1980Alex/multilspy:feat/bsl-language, 2 commits, +387/−2 lines) and will open a PR linked to this issue. Happy to iterate on scope before the PR is opened.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the existing eclipse_jdtls and kotlin_language_server adapters in multilspy_config.py and language_server.py. Then review the proposed language_servers/bsl_language_server/ files, runtime_dependencies.json, and tests/multilspy/test_multilspy_bsl.py; completion means the BSL adapter, pinned download, ignore rule, and Java-gated integration tests match the stated scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, python
- Domain
- devtools, tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100