Repository navigation
Serve tala.run, document talac and Tazel, and move the site API to ASP.NET Core 10 - #34
Merged
Merged
Conversation
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.
|
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:
For more information about GitHub Code Scanning, check out the documentation. |
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
tala.run/,/docs/overview,/docs/getting-started, and the new/docs/syntaxtalac.tala.run/docs/command-line,/docs/outputstazel.tala.run/docs/commands,/docs/project-fileforum.tala.run?site=talacor?site=tazelselects a site.Corrections
go run scripts/develop.go,talac check -File,talac build -Fileand-Help. It now usesgo run ./helpers/cmd/...,--emit=metadata,--entry=and--help..vxseextension.Site API on ASP.NET Core 10
backend/Progmasoft.Tala.Website.Apireplaces the Spring Boot application. It is a minimal API underProgmasoft.Tala.Websitewith the same contract:/api/v1/sitereturns the same JSON;/healthreturns an empty 200;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.serviceruns the published DLL on the shared runtime the server already has for Progmaweb.Nginx
ops/nginx/tala.confserves the three hosts and redirectswww.tala.runtotala.run.xsharp-lang.xyzredirects to the same path of tala.run.viget.xsharp-lang.xyzkeeps pointing atviget.progmasoft.com. tala.run gets no ViGet host.ops/nginx/forum.confservesforum.tala.runand redirects the former forum address.Verification
npm run check,npm test(42 tests),npm run format:checkandnpm run buildpass.dotnet buildwith warnings as errors passes; 8 API tests pass.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.