HiLang 2.0.0
dotnet add package HiLang --version 2.0.0
NuGet\Install-Package HiLang -Version 2.0.0
<PackageReference Include="HiLang" Version="2.0.0" />
paket add HiLang --version 2.0.0
#r "nuget: HiLang, 2.0.0"
// Install HiLang as a Cake Addin #addin nuget:?package=HiLang&version=2.0.0 // Install HiLang as a Cake Tool #tool nuget:?package=HiLang&version=2.0.0
HiLang
HiLang is a minimal high-level language to describe the schema of a domain, taking inspiration from protobuf (.proto models) for hierarchical structures and SQL DML for entities, relations and views.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FSharp.Core (>= 9.0.100)
- FsLexYacc (>= 11.3.0)
- FsLexYacc.Runtime (>= 11.3.0)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.CSharp (>= 4.11.0)
- Nerdbank.GitVersioning (>= 3.6.146)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 5 | 1/14/2025 |
1.3.9 | 97 | 11/15/2024 |
1.3.0 | 97 | 10/5/2024 |
1.2.18 | 137 | 9/15/2024 |
1.2.16 | 122 | 9/7/2024 |
1.2.15 | 108 | 9/1/2024 |
1.2.11 | 91 | 8/6/2024 |
1.2.9 | 90 | 7/26/2024 |
1.2.8 | 119 | 7/19/2024 |
1.2.6 | 103 | 7/15/2024 |
1.2.4 | 120 | 7/4/2024 |
1.2.0 | 127 | 5/30/2024 |
1.1.37 | 112 | 5/11/2024 |
1.1.34 | 111 | 4/22/2024 |
1.1.30 | 119 | 3/24/2024 |
1.1.26 | 133 | 3/14/2024 |
1.1.23 | 133 | 2/26/2024 |
1.1.22 | 130 | 2/16/2024 |
1.1.21 | 175 | 1/11/2024 |
1.1.19 | 157 | 1/1/2024 |
1.1.17 | 145 | 12/23/2023 |
1.1.11 | 135 | 12/16/2023 |
1.1.10 | 143 | 12/6/2023 |
1.1.7 | 143 | 11/30/2023 |
1.1.5 | 131 | 11/21/2023 |
1.0.14-prerelease | 154 | 8/6/2023 |
## Overview
This Version is a major refactor, taking into consideration lessons learned from implementing hyperspace with blazer web assembly. It was hoped that .NET 9 would include greater compatibility with runtime type creation (used by protobuf-net for serialisation classes) or that protobuf-net "Ahead of time" (AOT) code generation would be included, but switching to direct protobuf serialization has the additional benefit of simplify usage with {Android, iOS, [Unity](https://unity.com/), zOS, [Meadow](https://www.wildernesslabs.co/)}. **Hiperspace** is the only domain-oriented object mapping technology that can be deployed into these environments, providing transparent sharing of elements between edge devices and server context.
The companion change to [HiLang](HiLang) includes the generation of serialization code for domain models.
### Security enhancement
Previously the predicates provided to **Horizon** filters look an instance of an element and return true if it was within the horizon of the subspace. This has been expanded to allow three types of Horizon Filter
* `new Horizon<Element_Type> ( element => element.Valid == true)' a horizon predicate with the element only
* `new Horizon<Element_Type> ( (element, read) => element.Valid == true || read)' a horizon predicate with a flag to indicate a read operation
* `new Horizon<Element_Type> ( (element, context, read) => element.Valid == true || read)' a horizon predicate with a context parameter and a flag to indicate a read operation
* `new Horizon<Element_Type> ( (element, context, user, read) => element.Valid == true || user?.IsInRole("BULK"))' a horizon predicate with a context parameter, user IPrinciple and a flag to indicate a read operation
Subspace has three labels added to support enhanced security
| Label name | Description |
| ------------- | ------------- |
| Context | Context that the space was opened with e.g. "Front Office", "Risk", "Settlement" |
| User | an optional `IPrincipal` for access control |
| Remote | Was the subspace opened remotely, and security/validation need to be re-applied on the server |
### Protobuf-net
[protobuf-net](protobuf-net) dependency for all .NET assemblies have been changed to [protobuf-net.Core](protobuf-net.Core) which does not include dynamic generation of serialization/deserialization code.
### Web applications
Web applications can take advantage of the HiperSpace shared between the web-client (or desktop applications) and the server session for the user with full lazy loading as required.
Hiperspace elements are transferred using [gRPC-Web](https://github.com/grpc/grpc-web) for web-clients {browser, Android, iOS, [Unity](https://unity.com/)} and [gRPC](https://grpc.io/) for desktop applications.
gRPC-Web packets are exchanged space efficient binary messages without JSON text conversion