Skip to content

Serve tala.run, document talac and Tazel, and move the site API to ASP.NET Core 10 - #34

Merged
Leitwolf11 merged 8 commits into
mainfrom
feature/tala-run
Oct 15, 2026
Merged

Leitwolf11 merged 8 commits into
mainfrom
feature/tala-run

Conversation

@Leitwolf11

Copy link
Copy Markdown
Contributor

What changes

The language moves to tala.run, the site API leaves the JVM, and the compiler and the build system get documentation sites of their own. The existing site is extended and corrected; nothing is rewritten from scratch.

One build, three sites

The page picks its content from the host name:

Host Pages
tala.run /, /docs/overview, /docs/getting-started, and the new /docs/syntax
talac.tala.run /docs/command-line, /docs/outputs
tazel.tala.run /docs/commands, /docs/project-file
forum.tala.run the existing "the forum isn't open yet" page
  • The new pages are written in en-US, de-DE, ru-RU and he-IL from one content model. A test keeps code samples and option names identical across the four languages, and another rejects the retired command forms.
  • The syntax page uses only samples from the public specification.
  • The header links the three sites and the forum. On a development host, ?site=talac or ?site=tazel selects a site.

Corrections

  • Getting started used go run scripts/develop.go, talac check -File, talac build -File and -Help. It now uses go run ./helpers/cmd/..., --emit=metadata, --entry= and --help.
  • The overview no longer names the retired .vxse extension.
  • Canonical URLs, Open Graph data, robots and sitemaps name tala.run. Each documentation host has its own robots and sitemap file.
  • The domain-move notice is gone, because the former domain now redirects.

Site API on ASP.NET Core 10

backend/Progmasoft.Tala.Website.Api replaces the Spring Boot application. It is a minimal API under Progmasoft.Tala.Website with the same contract:

  • /api/v1/site returns the same JSON;
  • POST to it is 405;
  • /health returns an empty 200;
  • everything else is 404;
  • it listens on loopback port 5086.

Warnings are errors, documentation comments are required, and NuGet versions are pinned in lock files. CI, CodeQL (now C#) and Renovate (now NuGet) follow. ops/systemd/tala-site-api.service runs the published DLL on the shared runtime the server already has for Progmaweb.

Nginx

  • ops/nginx/tala.conf serves the three hosts and redirects www.tala.run to tala.run.
  • Every path of xsharp-lang.xyz redirects to the same path of tala.run.
  • viget.xsharp-lang.xyz keeps pointing at viget.progmasoft.com. tala.run gets no ViGet host.
  • ops/nginx/forum.conf serves forum.tala.run and redirects the former forum address.

Verification

  • npm run check, npm test (42 tests), npm run format:check and npm run build pass.
  • dotnet build with warnings as errors passes; 8 API tests pass.
  • Checked in the browser: all three sites, the Hebrew locale, and a 375 px width with no horizontal overflow; no console errors.

Deployment

Not part of this pull request. The server, the certificate for the tala.run names and the DNS records follow separately.

Self-review: read the whole diff; the API contract is pinned by tests that compare the exact JSON, and the Nginx and systemd files are checked against each other by the integrity tests.

The language website ran a Spring Boot application on JVM 25 for two
endpoints, and it was the only JVM on the server: a quarter of a
gigabyte of resident memory for /api/v1/site and /health. The server
already runs ASP.NET Core 10 for Progmaweb.

The API is now Progmasoft.Tala.Website.Api, a minimal ASP.NET Core 10
application under the namespace Progmasoft.Tala.Website. It answers as
before: /api/v1/site returns the site's own state as the same JSON,
POST is not allowed there, /health answers with an empty 200, and every
other path is 404. It listens on 127.0.0.1, port 5086 unless PORT says
otherwise, as the Spring process did, so Nginx is unchanged.

- Progmasoft.Tala.Website.slnx, Directory.Build.props and global.json
  set up the solution with warnings as errors, documentation comments
  required and NuGet lock files.
- Progmasoft.Tala.Website.Api.Tests runs the endpoints in an in-memory
  host with xUnit v3 on Microsoft.Testing.Platform.
- ops/systemd/tala-site-api.service runs the published DLL on the shared
  runtime from /srv/xsharp/website/current/site-api, with the hardening
  of the unit it replaces.
- CI builds, tests, publishes and reports coverage with dotnet; CodeQL
  analyzes C# instead of Kotlin; Renovate watches NuGet instead of
  Gradle.
The language now lives at tala.run. One frontend build serves three
sites and picks its content from the host name:

- tala.run: the home page, /docs/overview, /docs/getting-started and a
  new /docs/syntax, a first look at programs, comments, declarations,
  operators and evaluation by need, with every sample taken from the
  public specification.
- talac.tala.run: /docs/command-line and /docs/outputs, the compiler's
  options, the entry rule, warnings, --build and --emit, and the record
  of a check.
- tazel.tala.run: /docs/commands and /docs/project-file, the commands of
  the build system, target selection, workspaces and the project DSL.

The new pages are written in all four locales from one content model;
a test keeps code samples and option names identical across them. The
header links the three sites and forum.tala.run. On a development host
?site=talac or ?site=tazel selects a site.

Corrections to the existing pages:

- Getting started used `go run scripts/develop.go`, `talac check -File`,
  `talac build -File` and `-Help`; it now uses `go run ./helpers/cmd/...`,
  `--emit=metadata`, `--entry=` and `--help`.
- The overview no longer names the retired .vxse extension, and the
  project DSL is evaluated by Tazel.
- Canonical URLs, Open Graph data, robots.txt and the sitemap name
  tala.run; talac and tazel have their own robots and sitemap files,
  served per host by Nginx. The notice about the move is gone: the
  former domain redirects instead.
- The leopard mark files are called tala-mark.svg and tala.svg.

Nginx: ops/nginx/tala.conf serves the three hosts, redirects www.tala.run
to tala.run and every path of xsharp-lang.xyz to the same path of
tala.run, and keeps viget.xsharp-lang.xyz pointing at
viget.progmasoft.com; tala.run has no ViGet host of its own.
ops/nginx/forum.conf serves the informational page at forum.tala.run and
redirects the former forum address to it.
- README, Architecture and Operations describe the three sites one
  build serves, their routes, the per-host sitemap and robots files,
  forum.tala.run, the permanent redirects of the former domain, and that
  tala.run has no ViGet host.
- The backend sections describe the ASP.NET Core 10 API: how to build,
  test, run and publish it, its lock files, and its place on the server
  in current/site-api beside the legacy process of Progmaweb.
- Development explains ?site=talac and ?site=tazel on a development host
  and lists the new test file; the release and rollback steps label
  current/site-api for SELinux as well.
- The development server proxies /api to port 5086, the port the API
  uses unless PORT says otherwise.
The page was reformatted with the default settings of Prettier, which
wrapped its notice differently from the repository configuration and
split a sentence the integrity test looks for.
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Leitwolf11 and others added 4 commits October 15, 2026 18:26
The ASP.NET Core API builds and tests the same on every host, and the
macOS runners are the queue every repository of the organization waits
in: the first run of the job was cancelled before it started.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.run has no HSTS requirement of its own, but tala.run is served as if it
had one: every HTTPS response of tala.run, www, talac, tazel and forum
sends max-age=63072000; includeSubDomains; preload, and plain HTTP only
answers the ACME challenge and otherwise redirects to HTTPS. A test
checks both for every tala.run block of the three Nginx files. The
redirects of the former .xyz domain keep their header.
The Kotlin backend checked its documentation with Dokka; the ASP.NET Core
API had only the compiler warning for a public declaration without a
comment. CI now builds the API reference with DocFX, every warning as an
error, and Documents/api/CheckDocumentation.cs fails when a namespace,
type or member of the reference has no description, internal and
private members included. The setup is the one Progmaweb uses: the
docfx tool pinned in .config/dotnet-tools.json, the configuration and
the namespace description under Documents/api, and the generated
reference ignored.
Running CheckDocumentation.cs writes a NuGet lock file beside it, as
every project of the repository does; REUSE.toml now covers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Leitwolf11
Leitwolf11 merged commit 0b46342 into main Oct 15, 2026
11 checks passed
@Leitwolf11
Leitwolf11 deleted the feature/tala-run branch October 15, 2026 15:43
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

Successfully merging this pull request may close these issues.

2 participants