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 - - - - - - - - - - - - - - - -
- -
-
-
- @RenderBody() -
-
- F# Project - -
-
-
- Fork me on GitHub - - 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.0 true aed427e4-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 + true 5 - 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 + +