Skip to content

Commit 66f751a

Browse files
authored
Preparations for final release (#359)
* Updates/Corrections and clarifications to docs * Updates to NuGet dependencies to non-preview version * Updates to repo readme
1 parent 9645062 commit 66f751a

File tree

33 files changed

+289
-228
lines changed

33 files changed

+289
-228
lines changed

.editorconfig

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@ indent_size = 2
2828
tab_width = 2
2929

3030
[*.md]
31-
# mark left margion for split screen preview of markdown files
31+
# mark left margin for split screen preview of markdown files
3232
# requires: https://marketplace.visualstudio.com/items?itemName=PaulHarrington.EditorGuidelinesPreview
3333
guidelines = 92
34+
# VSSPELL: Markdown Files
35+
vsspell_section_id = 3fa02c9f36bb41a5ac6206ceb9c564dc
36+
vsspell_exclusion_expressions_3fa02c9f36bb41a5ac6206ceb9c564dc = ```[\s\S]*?$[\s\S]*?```$(?@@PND@@/Options/Multiline)
3437

3538
# match ISO standard requirement for C/C++
3639
[*.c,*.h,*.cpp]
@@ -133,31 +136,31 @@ dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
133136

134137
dotnet_naming_symbols.interface.applicable_kinds = interface
135138
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
136-
dotnet_naming_symbols.interface.required_modifiers =
139+
dotnet_naming_symbols.interface.required_modifiers =
137140

138141
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
139142
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
140-
dotnet_naming_symbols.types.required_modifiers =
143+
dotnet_naming_symbols.types.required_modifiers =
141144

142145
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
143146
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
144-
dotnet_naming_symbols.non_field_members.required_modifiers =
147+
dotnet_naming_symbols.non_field_members.required_modifiers =
145148

146149
# Naming styles
147150

148151
dotnet_naming_style.begins_with_i.required_prefix = I
149-
dotnet_naming_style.begins_with_i.required_suffix =
150-
dotnet_naming_style.begins_with_i.word_separator =
152+
dotnet_naming_style.begins_with_i.required_suffix =
153+
dotnet_naming_style.begins_with_i.word_separator =
151154
dotnet_naming_style.begins_with_i.capitalization = pascal_case
152155

153-
dotnet_naming_style.pascal_case.required_prefix =
154-
dotnet_naming_style.pascal_case.required_suffix =
155-
dotnet_naming_style.pascal_case.word_separator =
156+
dotnet_naming_style.pascal_case.required_prefix =
157+
dotnet_naming_style.pascal_case.required_suffix =
158+
dotnet_naming_style.pascal_case.word_separator =
156159
dotnet_naming_style.pascal_case.capitalization = pascal_case
157160

158-
dotnet_naming_style.pascal_case.required_prefix =
159-
dotnet_naming_style.pascal_case.required_suffix =
160-
dotnet_naming_style.pascal_case.word_separator =
161+
dotnet_naming_style.pascal_case.required_prefix =
162+
dotnet_naming_style.pascal_case.required_suffix =
163+
dotnet_naming_style.pascal_case.word_separator =
161164
dotnet_naming_style.pascal_case.capitalization = pascal_case
162165
dotnet_style_coalesce_expression = true:warning
163166
dotnet_style_null_propagation = true:warning

Directory.Packages.props

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,15 @@
3939
<PackageVersion Include="System.Memory" Version="4.5.5" />
4040

4141
<!-- Currently, only in preview -->
42-
<PackageVersion Include="System.CommandLine" Version="2.0.0-rc.2.25502.107" />
42+
<PackageVersion Include="System.CommandLine" Version="2.0.0" />
4343

44-
<!-- Security vulnerability overrides -->
44+
<!--
45+
Security vulnerability overrides.
46+
NOTE: For these to work the assemblies ***MUST** also have an explicit reference in the
47+
impacted projects. Otherwise no upgrade.override occurs and the projects remain
48+
vulnerable. Ideally the dependent projects would update to resolve this but,
49+
sadly they do not, and remain vulnerable, and we must stop it here.
50+
-->
4551
<!-- https://github.com/dotnet/roslyn-sdk/issues/1191 -->
4652
<PackageVersion Include="System.Formats.Asn1" Version="10.0.0" />
4753
<!-- https://github.com/advisories/GHSA-7jgj-8wvc-jh57 -->
@@ -51,14 +57,13 @@
5157

5258
<!-- Common packages for solution -->
5359
<PackageVersion Include="System.Linq.Async" Version="6.0.3" />
54-
<PackageVersion Include="Ubiquity.NET.InteropHelpers" Version="20.1.8-rc.2" />
55-
<PackageVersion Include="Ubiquity.NET.Extensions" Version="20.1.8-rc.2" />
56-
<PackageVersion Include="Ubiquity.NET.Runtime.Utils" Version="20.1.8-rc.2" />
57-
<PackageVersion Include="Ubiquity.NET.CommandLine" Version="20.1.8-rc.2" />
58-
<PackageVersion Include="Ubiquity.NET.ANTLR.Utils" Version="20.1.8-rc.2" />
59-
60+
<PackageVersion Include="Ubiquity.NET.InteropHelpers" Version="20.1.8" />
61+
<PackageVersion Include="Ubiquity.NET.Extensions" Version="20.1.8" />
62+
<PackageVersion Include="Ubiquity.NET.Runtime.Utils" Version="20.1.8" />
63+
<PackageVersion Include="Ubiquity.NET.CommandLine" Version="20.1.8" />
64+
<PackageVersion Include="Ubiquity.NET.ANTLR.Utils" Version="20.1.8" />
6065
<PackageVersion Include="Ubiquity.NET.LibLLVM" Version="20.1.8" />
61-
<PackageVersion Include="Ubiquity.NET.Versioning" Version="6.0.2-beta" />
66+
<PackageVersion Include="Ubiquity.NET.Versioning" Version="6.0.2" />
6267
<PackageVersion Include="Antlr4BuildTasks" Version="12.11.0" />
6368
<PackageVersion Include="Antlr4.Runtime.Standard" Version="4.13.1" />
6469
<PackageVersion Include="OpenSoftware.DgmlBuilder" Version="2.1.0" />

IgnoredWords.dic

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ getelementptr
7777
getters
7878
gh
7979
github
80+
gitignore
8081
Globalization
8182
Hashtable
8283
Identifier
@@ -88,12 +89,15 @@ inlined
8889
inlining
8990
Interop
9091
ints
92+
Invokable
9193
jit
9294
len
9395
Lexer
96+
libclang
9497
LibLLVM
9598
Llilum
9699
llvm
100+
llvmroot
97101
llvmversion
98102
lookups
99103
LValue
@@ -110,6 +114,8 @@ minimalistic
110114
Mips
111115
msbuild
112116
msg
117+
namespace
118+
namespaces
113119
nav
114120
nint
115121
noinline
@@ -125,6 +131,7 @@ outdent
125131
pages
126132
paren
127133
perf
134+
performant
128135
pointee
129136
polyfills
130137
pragma
@@ -156,12 +163,14 @@ telliam
156163
templated
157164
templating
158165
tl
166+
tocyml
159167
trx
160168
typdef
161169
Typedef
162170
typedefs
163171
typelib
164172
typeof
173+
Uber
165174
uid
166175
uint
167176
unaryop

PsModules/CommonBuild/Public/Initialize-CommonBuildEnvironment.ps1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ function Initialize-CommonBuildEnvironment
5252
[string]$repoRoot,
5353
[switch]$FullInit
5454
)
55+
5556
try
5657
{
5758
# Script code should ALWAYS use the global CurrentBuildKind
@@ -101,9 +102,12 @@ function Initialize-CommonBuildEnvironment
101102
# "profile" and the actual command is exposed.
102103
if($null -eq (Find-OnPath vswhere))
103104
{
104-
# NOTE: automated builds in Github do NOT include WinGet (for reasons unknown)
105+
# NOTE: automated builds in Github do NOT include winget (for reasons unknown)
105106
# However, they do contain VSWHERE so should not hit this.
106107
winget install Microsoft.VisualStudio.Locator | Out-Null
108+
109+
# location is fixed and the same no matter what version!
110+
$env:PATH +=';%ProgramFiles(x86)%\Microsoft Visual Studio\Installer'
107111
}
108112

109113
$vsShellModulePath = vswhere -latest -find **\Microsoft.VisualStudio.DevShell.dll

PsModules/CommonBuild/Public/Show-FullBuildInfo.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function Show-FullBuildInfo
99
properties so that the full details are available in logs.
1010
1111
.DESCRIPTION
12-
This function displays all the properties of the buildinfo to the information stream. Additionally,
12+
This function displays all the properties of the build info to the information stream. Additionally,
1313
details of the current PATH, the .NET SDKs and runtimes installed is logged to the Verbose stream.
1414
#>
1515
Param($buildInfo)

README.md

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ For details of releases, see the [release notes](https://github.com/UbiquityDotN
1515
Ubiquity.NET.Llvm provides LLVM language and runtime bindings for .NET based applications.
1616
Ubiquity.NET.Llvm's goal is to provide a robust Class library that accurately reflects the
1717
underlying LLVM C++ model. This is done through an extended LLVM-C API bundled as a native
18-
library (LibLLVM). Ubiquity.NET.Llvm uses the support of LibLLVM to gain access to the LLVM
19-
class library and project it into a .NET managed library that reflects the original class
20-
library design as best as possible.
18+
library (`Ubiquity.NET.LibLLVM`). Ubiquity.NET.Llvm uses the support of LibLLVM to gain
19+
access to the LLVM class library and project it into a .NET managed library that reflects
20+
the original class library design as best as possible.
2121

2222
The goal is to match the original class model as closely as possible, while providing an
2323
object model to .NET applications that feels familiar and consistent with common styles and
2424
patterns in .NET Framework applications. Thus, while class, method and enumeration names are
25-
similar to their counterparts in LLVM, they are not always identical.
25+
similar to their counterparts in LLVM, they are not always identical (especially casing and
26+
use of `_`).
2627

2728
### Brief History
2829
Ubiquity.NET.Llvm was initially developed as a means to leverage LLVM as the back-end for an
@@ -36,24 +37,25 @@ code generator that was tied to the ARMv4 Instruction set. ([Llilum](https://www
3637
Ubiquity.NET.Llvm has continued to evolve and improve and remains a distinct project as it
3738
has no dependencies on Llilum or any of its components. Ubiquity.NET.Llvm is viable for any
3839
.NET applications wishing to leverage the functionality of the LLVM libraries from .NET
39-
applications.
40+
applications. In fact, it's most common use now is for supporting JIT execution of Domain
41+
Specific Languages (DSL) though it is not limited to that as the [Kaleidoscope Tutorials](#kaleidoscope-tutorial)
42+
show an interactive JIT implementation along with full AOT compilation.
4043

4144
Ubiquity.NET.Llvm began with LLVM 3.4 as a C++/CLI wrapper which enabled a closer binding to
4245
the original C++ object model then the official LLVM-C API supported. As Ubiquity.NET.Llvm
4346
progressed so to did LLVM. Eventually, the LLVM code base migrated to requiring C++/11
4447
support in the language to build. This became an issue for the C++/CLI wrapper as the
45-
Microsoft C++/CLI compiler didn't support the C++11 syntax. Thus a change was made to
46-
Ubiquity.NET.Llvm to move to an extended C API with a C# adapter layer to provide the full
47-
experience .NET developers expect. While the transition was a tedious one very little
48-
application code required changes. LLVM and Ubiquity.NET.Llvm have continued to progress and
49-
Ubiquity.NET.Llvm is currently based on LLVM 20.1.x.
48+
Microsoft C++/CLI compiler didn't support the `C++11` syntax. Thus, a change was made to
49+
`Ubiquity.NET.Llvm` to move to an extended C API with a C# adapter layer to provide the full
50+
experience .NET developers expect. While the transition was a tedious one, very little
51+
application code required changes. LLVM and `Ubiquity.NET.Llvm` have continued to progress
52+
and `Ubiquity.NET.Llvm` is currently based on LLVM 20.1.x.
5053

5154
There are a few major goals of the current release that required breaking changes:
5255
1) AOT compilation of applications leveraging this library
53-
- While this goal is not yet fully realized many steps were taken to aid in getting
54-
there.
5556
2) Platform independence
56-
- Again, not fully realized yet but many steps were taken to aid in getting there.
57+
- Not fully realized in this release yet but many steps were taken to aid in getting
58+
there.
5759
* The largest impediment is the massive resource requirements of building the native
5860
LLVM libraries for a given runtime. Building them runs afoul of the limitations of
5961
every available OSS not to mention exceeding the size of a NUGET package to host
@@ -72,16 +74,16 @@ package is built for the "AnyCPU" platform and references the Ubiquity.NET.Llvm.
7274
package to bring in the native binary support. Ubiquity.NET.Llvm.Interop contains code to
7375
dynamically detect the platform it is running on and load the appropriate native library.
7476
This allows applications to build for AnyCPU without creating multiple build configurations
75-
and release vehicles for applications. (Any new platforms would need to update the dynamic
76-
loading support and include the appropriate P/Invokable binaries - consuming apps would not
77-
need to change except to pick up a new package version.)
77+
and release vehicles for applications. Any new platforms would need to update the dynamic
78+
loading support and include the appropriate P/Invokable binaries. Consuming apps would not
79+
need to change except to pick up a new package version.
7880

7981
### CI Build NuGet Packages
80-
The CI Builds of the NuGet package built from the latest source in the master branch are
81-
available as build artifacts from the build. Unfortunately with an all GitHub build via
82-
GitHub Actions we don't have a good story for accessing the packages from unreleased
83-
automated CI builds. While GitHub does support a package registry (GPR), it really doesn't
84-
meet the needs of CI builds. In particular:
82+
The CI Builds of the NuGet package built from the latest source in the `develop` branch are
83+
available as build artifacts. Unfortunately with an all GitHub build via GitHub Actions we
84+
don't have a good story for accessing the packages from unreleased automated CI builds.
85+
While GitHub does support a package registry (GPR), it really doesn't meet the needs of CI
86+
builds. In particular:
8587
* GPR Doesn't support deletion of older CI build packages (Cluttering the feed)
8688
* GPR requires complex login/Tokens just to get packages from the feed, despite being a
8789
public repository...
@@ -92,7 +94,8 @@ used for publishing releases. (Official NuGet will serve that role for releases)
9294
and PR build packages are available as artifacts from the GitHub actions that build them.
9395

9496
### API Documentation
95-
The full API documentation on using Ubiquity.NET.Llvm is available on the [Ubiquity.NET.Llvm documentation site](https://ubiquitydotnet.github.io/Llvm.NET/).
97+
The full API documentation on using Ubiquity.NET.Llvm is available on the
98+
[Ubiquity.NET.Llvm documentation site](https://ubiquitydotnet.github.io/Llvm.NET/).
9699

97100
### Sample Applications
98101
#### Code Generation With Debug Information
@@ -123,13 +126,13 @@ the use of the library.
123126
124127
#### Using Visual Studio
125128
The repository contains Visual Studio solution files that allow building the components
126-
individually for modifying Ubiquity.NET.Llvm, as well as running the available unit tests
127-
and samples. This is the primary mode of working with the Ubiquity.NET.Llvm source code
129+
individually for modifying `Ubiquity.NET.Llvm`, as well as running the available unit tests
130+
and samples. This is the primary mode of working with the `Ubiquity.NET.Llvm` source code
128131
during development.
129132

130133
### Replicating the automated build
131-
The Automated build support for Ubiquity.NET.Llvm uses Build-All.ps1 PowerShell script to
132-
build all the binaries and generate a NuGet package. To build the full package simply run
134+
The Automated build support for `Ubiquity.NET.Llvm` uses `Build-All.ps1` PowerShell script
135+
to build all the binaries and generate a NuGet package. To build the full package simply run
133136
`Build-All.ps1 -ForceClean` from a PowerShell command prompt with MSBuild tools on the
134137
system search path.
135138

docfx/ReadMe.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ constructed a complete custom template to deal with it... Sigh, what a waste of
1818
## Changes Over Time
1919
DocFX has obsoleted the `docfxconsole` NuGet package that was used to run docfx for a
2020
project via MSBUILD. Instead it focused on a .NET tool to do it all via the command line.
21-
Ultimately the docfx.json serves as the corellary to a "project" file for the different site
21+
Ultimately the docfx.json serves as the corollary to a "project" file for the different site
2222
builds. The PowerShell script `Build-Docs.ps1` was updated to use the new tool directly.
2323
Using that script should have little or no impact on the overall flow. There is a
2424
"no-targets" project in the solution to enable easier access to the input files but does not
@@ -78,9 +78,9 @@ Since this is generated it is listed in the [.gitignore](#gitignore) file.
7878
These folders (named after the `*` portion of the [api-*](#api-*) folder names contains
7979
manually written additional files, articles, samples etc... related to a given library.
8080

81-
## Guide to wrting XML DOC comments
81+
## Guide to writing XML DOC comments
8282
When dealing with doc comments the XML can sometimes get in the way of general readability
83-
of the source code. There is an inherent tension beween how a particular editor renders the
83+
of the source code. There is an inherent tension between how a particular editor renders the
8484
docs for a symbol/method (VS calls this "Quick Info") and how it is rendered in the final
8585
documentation by a tool like docfx. This guides general use to simplify things as much as
8686
possible.
@@ -144,7 +144,7 @@ render properly in final docs.
144144
everything is trimmed it is at least a distinct pattern that is readable.
145145
5) ***DO NOT*** put lists in any place other than inside a `remarks` region
146146
a) Usually, the remarks comments are not even rendered as the most useful part is the
147-
API signaure and parameter info. Different editors may allow control of that.
147+
API signature and parameter info. Different editors may allow control of that.
148148
i) In VS [2019|2022] for C# it is controlled by
149149
`Text Editor > C# > Advanced > Editor Help: "Show remarks in Quick Info."`
150150
1) Turning this off can greatly reduce the noise AND reduce the problems of

docfx/index.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Ubiquity.NET family of libraries provides support for a number of scenarios but
33
focus is AOT code generation of .NET for Embedded systems. We aren't quite there yet, but
44
are rather close. In the mean time this set of libraries provides the building blocks needed
55
for creating a Domain Specific Language (DSL) implementation or custom language compiler,
6-
including JIT execution. Several useful generalized libraries are also included.
6+
including JIT execution.
77

88
## The Libraries[<sup>1</sup>](#footnote_1) in this repository
99

@@ -12,7 +12,7 @@ including JIT execution. Several useful generalized libraries are also included.
1212
| [Ubiquity.NET.Llvm](llvm/index.md) | This library contains The core of the LLVM projection to .NET |
1313

1414
---
15-
<a id="footnote_1"/><sup>1</sup> The Ubiquity.NET.Llvm.Interop is intentionally NOT documented. It is an internal
16-
implementation detail subject to change in the future. There are plans to merge it with the
17-
OO wrapper library. Therefore, applications should NOT depend on it as it is likely to cease
18-
existing in the future.
15+
<a id="footnote_1"/><sup>1</sup> The Ubiquity.NET.Llvm.Interop is intentionally NOT
16+
documented. It is an internal implementation detail subject to change in the future. There
17+
are plans to merge it with the OO wrapper library. Therefore, applications should NOT depend
18+
on it as it is likely to cease existing in the future.
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Internal details
22
This section is focused on providing internal details of the Ubiquity.NET.Llvm
3-
implementation for developers contributing to the contents of the Ubiquity.NET.Llvm library
4-
itself. If you are only interested in using the `Ubiquity.NET.Llvm` APIs you don't need this
5-
information, though it may satisfy curiosity 8^).
3+
implementation for developers contributing to the contents of the `Ubiquity.NET.Llvm`
4+
library itself. If you are only interested in using the `Ubiquity.NET.Llvm` APIs you don't
5+
need this information, though it may satisfy curiosity :nerd_face:.
66

77
## Generate Handles
8-
The source for the handles is generated from the headers by the LibLLVM repository build.
9-
They are created by the `LLvmBindingsGenerator` from the headers contained in the
10-
`Ubiquity.NET.LibLLvm` package. The LibLLVM package is a bundle of the RID neutral headers
11-
along with any RID specific headers. It is ultimately a "Uber" package that references the
12-
RID specific native libraries. This keeps the size of each package down to meet NuGet
13-
standards.
8+
The source for the handles is generated from the headers by the `:lvmBindingGenerator` from
9+
the headers contained in the `Ubiquity.NET.LibLLvm` package. The LibLLVM package is a bundle
10+
of the RID neutral headers along with any RID specific headers. It is ultimately a "meta"
11+
package that references the RID specific native libraries. This keeps the size of each
12+
package down to meet NuGet standards while allowing easy addition of new runtimes in the
13+
future.

0 commit comments

Comments
 (0)