diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000..af0310f
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,32 @@
+name: Build and Publish
+on:
+ push:
+ branches: [ main ]
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '6.0.x'
+ - name: Install tools
+ run: dotnet tool restore
+ - name: Build and Test
+ run: dotnet test -c Release
+ - name: Pack
+ run: dotnet pack -c Release
+ - name: Build docs
+ run: dotnet fsdocs build --properties Configuration=Release
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ personal_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./output
+ publish_branch: gh-pages
+ force_orphan: true
+ - name: Publish NuGets (if this version not published before)
+ run: dotnet nuget push src/SIMDArray/bin/Release/*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_ORG_TOKEN_2022 }} --skip-duplicate
+
+# NUGET_ORG_TOKEN_2022 is listed in "Repository secrets" in https://github.com/fsprojects/SIMDArray/settings/secrets/actions
diff --git a/.gitignore b/.gitignore
index 815f2ff..5b2899c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -190,4 +190,8 @@ docs/content/license.md
docs/content/release-notes.md
.fake
docs/tools/FSharp.Formatting.svclog
-.idea/
\ No newline at end of file
+.idea/
+
+/.fsdocs
+/.config
+/output
diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..29b538f
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/content/index.fsx b/docs/content/index.fsx
index 95bffc7..db67124 100644
--- a/docs/content/index.fsx
+++ b/docs/content/index.fsx
@@ -1,9 +1,8 @@
(*** hide ***)
-// This block of code is omitted in the generated HTML documentation. Use
+// This block of code is omitted in the generated HTML documentation. Use
// it to define helpers that you do not want to show in the documentation.
-#r "System.Numerics"
-#r @"../../bin/SIMDArray/SIMDArray.dll"
-#r @"../../bin/SIMDArray/System.Numerics.Vectors.dll"
+#I "../../src/SIMDArray/bin/Release/netstandard2.1"
+#r "SIMDArray.dll"
(**
SIMDArray
@@ -30,7 +29,7 @@ This example demonstrates using a function defined in this sample library.
*)
let inline testMap (array:'T[]) =
- let a = array |> Array.SIMD.map (fun x -> x*x)
+ let a = array |> Array.SIMD.map (fun x -> x*x) (fun x -> x*x)
let b = array |> Array.map (fun x -> x*x)
()
@@ -41,8 +40,8 @@ Some more info
Samples & documentation
-----------------------
-The library comes with comprehensible documentation.
-It can include tutorials automatically generated from `*.fsx` files in [the content folder][content].
+The library comes with comprehensible documentation.
+It can include tutorials automatically generated from `*.fsx` files in [the content folder][content].
The API reference is automatically generated from Markdown comments in the library implementation.
* [Tutorial](tutorial.html) contains a further explanation of this sample library.
@@ -50,18 +49,18 @@ The API reference is automatically generated from Markdown comments in the libra
* [API Reference](reference/index.html) contains automatically generated documentation for all types, modules
and functions in the library. This includes additional brief samples on using most of the
functions.
-
+
Contributing and copyright
--------------------------
-The project is hosted on [GitHub][gh] where you can [report issues][issues], fork
-the project and submit pull requests. If you're adding a new public API, please also
+The project is hosted on [GitHub][gh] where you can [report issues][issues], fork
+the project and submit pull requests. If you're adding a new public API, please also
consider adding [samples][content] that can be turned into a documentation. You might
also want to read the [library design notes][readme] to understand how it works.
-The library is available under Public Domain license, which allows modification and
-redistribution for both commercial and non-commercial purposes. For more information see the
-[License file][license] in the GitHub repository.
+The library is available under Public Domain license, which allows modification and
+redistribution for both commercial and non-commercial purposes. For more information see the
+[License file][license] in the GitHub repository.
[content]: https://github.com/fsprojects/SIMDArray/tree/master/docs/content
[gh]: https://github.com/fsprojects/SIMDArray
diff --git a/docs/content/tutorial.fsx b/docs/content/tutorial.fsx
index 633a935..4880cfc 100644
--- a/docs/content/tutorial.fsx
+++ b/docs/content/tutorial.fsx
@@ -1,10 +1,8 @@
(*** hide ***)
-// This block of code is omitted in the generated HTML documentation. Use
+// This block of code is omitted in the generated HTML documentation. Use
// it to define helpers that you do not want to show in the documentation.
-#r "System.Numerics"
-#r @"../../bin/SIMDArray/SIMDArray.dll"
-#r @"../../bin/SIMDArray/System.Numerics.Vectors.dll"
-
+#I "../../src/SIMDArray/bin/Release/netstandard2.1"
+#r "SIMDArray.dll"
(**
Introducing your project
@@ -15,7 +13,7 @@ Say more
*)
let inline testMap (array:'T[]) =
- let a = array |> Array.SIMD.map (fun x -> x*x)
+ let a = array |> Array.SIMD.map (fun x -> x*x) (fun x -> x*x)
let b = array |> Array.map (fun x -> x*x)
()
diff --git a/docs/tools/generate.fsx b/docs/tools/generate.fsx
deleted file mode 100644
index b7b526c..0000000
--- a/docs/tools/generate.fsx
+++ /dev/null
@@ -1,145 +0,0 @@
-// --------------------------------------------------------------------------------------
-// Builds the documentation from `.fsx` and `.md` files in the 'docs/content' directory
-// (the generated documentation is stored in the 'docs/output' directory)
-// --------------------------------------------------------------------------------------
-
-// Binaries that have XML documentation (in a corresponding generated XML file)
-// Any binary output / copied to bin/projectName/projectName.dll will
-// automatically be added as a binary to generate API docs for.
-// for binaries output to root bin folder please add the filename only to the
-// referenceBinaries list below in order to generate documentation for the binaries.
-// (This is the original behaviour of ProjectScaffold prior to multi project support)
-let referenceBinaries = [ "SIMDArray.dll" ]
-// Web site location for the generated documentation
-let website = "/SIMDArray"
-
-let githubLink = "http://github.com/Update GitHome in build.fsx/SIMDArray"
-
-// Specify more information about your project
-let info =
- [ "project-name", "SIMDArray"
- "project-author", "Jack Mott, Jared Hester"
- "project-summary", "SIMD enhanced Array operations for F#"
- "project-github", githubLink
- "project-nuget", "http://nuget.org/packages/SIMDArray" ]
-
-// --------------------------------------------------------------------------------------
-// For typical project, no changes are needed below
-// --------------------------------------------------------------------------------------
-
-#load "../../packages/build/FSharp.Formatting/FSharp.Formatting.fsx"
-#I "../../packages/build/FAKE/tools/"
-#r "FakeLib.dll"
-open Fake
-open System.IO
-open Fake.FileHelper
-open FSharp.Literate
-open FSharp.MetadataFormat
-
-// When called from 'build.fsx', use the public project URL as
-// otherwise, use the current 'output' directory.
-#if RELEASE
-let root = website
-#else
-let root = "file://" + (__SOURCE_DIRECTORY__ @@ "../output")
-#endif
-
-// Paths with template/source/output locations
-let bin = __SOURCE_DIRECTORY__ @@ "../../bin"
-let content = __SOURCE_DIRECTORY__ @@ "../content"
-let output = __SOURCE_DIRECTORY__ @@ "../output"
-let files = __SOURCE_DIRECTORY__ @@ "../files"
-let templates = __SOURCE_DIRECTORY__ @@ "templates"
-let formatting = __SOURCE_DIRECTORY__ @@ "../../packages/build/FSharp.Formatting/"
-let docTemplate = "docpage.cshtml"
-
-// Where to look for *.csproj templates (in this order)
-let layoutRootsAll = new System.Collections.Generic.Dictionary()
-layoutRootsAll.Add("en",[ templates; formatting @@ "templates"
- formatting @@ "templates/reference" ])
-subDirectories (directoryInfo templates)
-|> Seq.iter (fun d ->
- let name = d.Name
- if name.Length = 2 || name.Length = 3 then
- layoutRootsAll.Add(
- name, [templates @@ name
- formatting @@ "templates"
- formatting @@ "templates/reference" ]))
-
-// Copy static files and CSS + JS from F# Formatting
-let copyFiles () =
- CopyRecursive files output true |> Log "Copying file: "
- ensureDirectory (output @@ "content")
- CopyRecursive (formatting @@ "styles") (output @@ "content") true
- |> Log "Copying styles and scripts: "
-
-let binaries =
- let manuallyAdded =
- referenceBinaries
- |> List.map (fun b -> bin @@ b)
-
- let conventionBased =
- directoryInfo bin
- |> subDirectories
- |> Array.map (fun d -> d.FullName @@ (sprintf "%s.dll" d.Name))
- |> List.ofArray
-
- conventionBased @ manuallyAdded
-
-let libDirs =
- let conventionBasedbinDirs =
- directoryInfo bin
- |> subDirectories
- |> Array.map (fun d -> d.FullName)
- |> List.ofArray
-
- conventionBasedbinDirs @ [bin]
-
-// Build API reference from XML comments
-let buildReference () =
- CleanDir (output @@ "reference")
- MetadataFormat.Generate
- ( binaries, output @@ "reference", layoutRootsAll.["en"],
- parameters = ("root", root)::info,
- sourceRepo = githubLink @@ "tree/master",
- sourceFolder = __SOURCE_DIRECTORY__ @@ ".." @@ "..",
- publicOnly = true,libDirs = libDirs )
-
-// Build documentation from `fsx` and `md` files in `docs/content`
-let buildDocumentation () =
-
- // First, process files which are placed in the content root directory.
-
- Literate.ProcessDirectory
- ( content, docTemplate, output, replacements = ("root", root)::info,
- layoutRoots = layoutRootsAll.["en"],
- generateAnchors = true,
- processRecursive = false)
-
- // And then process files which are placed in the sub directories
- // (some sub directories might be for specific language).
-
- let subdirs = Directory.EnumerateDirectories(content, "*", SearchOption.TopDirectoryOnly)
- for dir in subdirs do
- let dirname = (new DirectoryInfo(dir)).Name
- let layoutRoots =
- // Check whether this directory name is for specific language
- let key = layoutRootsAll.Keys
- |> Seq.tryFind (fun i -> i = dirname)
- match key with
- | Some lang -> layoutRootsAll.[lang]
- | None -> layoutRootsAll.["en"] // "en" is the default language
-
- Literate.ProcessDirectory
- ( dir, docTemplate, output @@ dirname, replacements = ("root", root)::info,
- layoutRoots = layoutRoots,
- generateAnchors = true )
-
-// Generate
-copyFiles()
-#if HELP
-buildDocumentation()
-#endif
-#if REFERENCE
-buildReference()
-#endif
diff --git a/docs/tools/templates/template.cshtml b/docs/tools/templates/template.cshtml
deleted file mode 100644
index 1ae4a1b..0000000
--- a/docs/tools/templates/template.cshtml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
- @Title
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/SIMDArray/AssemblyInfo.fs b/src/SIMDArray/AssemblyInfo.fs
deleted file mode 100644
index 9737015..0000000
--- a/src/SIMDArray/AssemblyInfo.fs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace System
-open System.Reflection
-
-[]
-[]
-[]
-[]
-[]
-do ()
-
-module internal AssemblyVersionInformation =
- let [] AssemblyTitle = "SIMDArray"
- let [] AssemblyProduct = "SIMDArray"
- let [] AssemblyDescription = "SIMD enhanced Array operations for F#"
- let [] AssemblyVersion = "1.0.0"
- let [] AssemblyFileVersion = "1.0.0"
diff --git a/src/SIMDArray/SIMDArray.fsproj b/src/SIMDArray/SIMDArray.fsproj
index e61df9a..358228f 100644
--- a/src/SIMDArray/SIMDArray.fsproj
+++ b/src/SIMDArray/SIMDArray.fsproj
@@ -8,10 +8,20 @@
2.0trueaed427e4-ce8c-47fc-8918-2bac5d4d3d35
+ Jack Mott, delneg
+
+ SIMD and other Performance enhanced Array operations for F#
+ https://github.com/fsprojects/SIMDArray
+ F#;SIMD
+ true
+ https://github.com/fsprojects/SIMDArray
+ snupkg
+ git
+ true
+ true5
-
diff --git a/src/SIMDArray/SIMDArrayParrallel.fs b/src/SIMDArray/SIMDArrayParrallel.fs
index 8e3f212..a0d4dd7 100644
--- a/src/SIMDArray/SIMDArrayParrallel.fs
+++ b/src/SIMDArray/SIMDArrayParrallel.fs
@@ -102,7 +102,7 @@ let inline mapi
///
/// The folding function
/// Function to combine the parallel Vector states when parallel process ends
-/// Function to combine the elements of the final SIMD vector/param>
+/// Function to combine the elements of the final SIMD vector
/// Initial value to accumulate from
/// Source array
let inline fold
diff --git a/version.props b/version.props
new file mode 100644
index 0000000..f89d970
--- /dev/null
+++ b/version.props
@@ -0,0 +1,5 @@
+
+
+ 1.0.1-beta
+
+