{"id":33191297,"url":"https://github.com/Microsoft/fsharplu","last_synced_at":"2025-11-21T00:02:04.117Z","repository":{"id":38227089,"uuid":"61918361","full_name":"microsoft/fsharplu","owner":"microsoft","description":"This library provides a set of F# helpers for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization.","archived":false,"fork":false,"pushed_at":"2024-06-11T20:01:41.000Z","size":496,"stargazers_count":369,"open_issues_count":8,"forks_count":39,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-11-20T00:10:22.017Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.nuget.org/packages/Microsoft.FSharpLu/","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.MD","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-24T23:47:02.000Z","updated_at":"2025-11-08T12:41:14.000Z","dependencies_parsed_at":"2024-06-18T13:33:41.990Z","dependency_job_id":"630b4853-3959-4456-b66c-f453a68140d1","html_url":"https://github.com/microsoft/fsharplu","commit_stats":{"total_commits":136,"total_committers":17,"mean_commits":8.0,"dds":0.3161764705882353,"last_synced_commit":"805dce44eb8b4110a1a03ce835a3fe74dcc0eaff"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/microsoft/fsharplu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Ffsharplu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Ffsharplu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Ffsharplu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Ffsharplu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microsoft","download_url":"https://codeload.github.com/microsoft/fsharplu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2Ffsharplu/sbom","scorecard":{"id":643342,"data":{"date":"2025-08-11","repo":{"name":"github.com/microsoft/fsharplu","commit":"d294cf12850e51ff07057252f317e888da4bd1b5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dotnet-core.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Code-Review","score":8,"reason":"Found 14/16 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dotnet-core.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/microsoft/fsharplu/dotnet-core.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dotnet-core.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/microsoft/fsharplu/dotnet-core.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dotnet-core.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/microsoft/fsharplu/dotnet-core.yml/main?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.MD:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T11:24:45.010Z","repository_id":38227089,"created_at":"2025-08-21T11:24:45.010Z","updated_at":"2025-08-21T11:24:45.010Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285532343,"owners_count":27187706,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T06:00:41.329Z","updated_at":"2025-11-21T00:02:04.112Z","avatar_url":"https://github.com/microsoft.png","language":"F#","funding_links":[],"categories":["General Purpose Libraries"],"sub_categories":["Performance Analysis"],"readme":"# FSharpLu F# library\r\n\r\nThis library provides F# lightweight utilities for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization.\r\n\r\nThis is by no means a full-fledged utility library for F#, but rather a small collection of utilities and other thin wrappers accumulated throughout the development of various internal projects at Microsoft and meant to facilitate development with the .Net framework using the F# programming language.\r\n\r\nSome of the provided utilities are just thin `let`-bindings wrappers around existing .Net libraries (e.g. module `FSharpLu.Text` or `FSharpLu.Parsing`) whereas some provide additional features (e.g. Json serialization in module `FSharpLu.Json`).\r\n\r\n## Build status\r\n\r\n| Branch | Status |\r\n|--------|--------|\r\n| main   | [![Build Status](https://dev.azure.com/fslu/public/_apis/build/status/fslu-builds-CI?branchName=main)](https://dev.azure.com/fslu/public/_build/latest?definitionId=1\u0026branchName=main) ![GitHub Action CI](https://github.com/microsoft/fsharplu/workflows/GitHub%20Action%20CI/badge.svg) |\r\n\r\n\r\n## Build requirements\r\n\r\n- F# compiler. See https://fsharp.org/use/Windows and https://fsharp.org/use/linux/\r\n\r\n- Install .NET Core SDK 6.0 from https://dotnet.microsoft.com/download/visual-studio-sdks.\r\n\r\nTo build project run `dotnet build` under the top-level directory or run the script `scripts\\build.ps1`.\r\n\r\n## Documentation\r\n\r\nFor the documentation please visit the [Wiki](https://github.com/Microsoft/fsharplu/wiki)\r\n\r\n## License\r\n\r\n[MIT](LICENSE.MD)\r\n\r\n## Packages\r\n\r\n- `FSharpLu`: The core set of utilities\r\n- `FSharpLu.Json`: Json serialization of F# data types implemented as JSon.Net converters and providing more succinct serialization for option types and discriminate unions.\r\n- `FSharpLu.Windows`: Windows-specific utility functions\r\n- `FSharpLu.Azure`: Azure Resource Manager helpers\r\n- Test libraries `FSharpLu.*.Tests`: Unit tests for a specific module\r\n\r\n## FSharpLu modules\r\n\r\nHere is a list of helper modules provided by FSharpLu.\r\n\r\n### Main module\r\n\r\n- [FSharpLu.Async](FSharpLu/Async.fs)\r\n- [FSharpLu.AsyncSeq](FSharpLu/AsyncSeq.fs)\r\n- [FSharpLu.CacheMap](FSharpLu/CacheMap.fs)\r\n- [FSharpLu.Configuration](FSharpLu/Configuration.fs)\r\n- [FSharpLu.Collection](FSharpLu/Collections.fs)\r\n- [FSharpLu.Diagnostics](FSharpLu/Diagnostics.fs)\r\n- [FSharpLu.Disposable](FSharpLu/Disposable.fs)\r\n- [FSharpLu.ErrorHandling](FSharpLu/ErrorHandling.fs)\r\n- [FSharpLu.ExecutableInfo](FSharpLu/ExecutableInfo.fs)\r\n- [FSharpLu.File](FSharpLu/File.fs)\r\n- [FSharpLu.FSharpFromCSharp](FSharpLu/FSharpFromCSharp.fs)\r\n- [FSharpLu.Ini](FSharpLu/Ini.fs)\r\n- [FSharpLu.Logger](FSharpLu/Logger.fs)\r\n- [FSharpLu.MachineOperations](FSharpLu/MachineOperations.fs)\r\n- [FSharpLu.Option](FSharpLu/Option.fs)\r\n- [FSharpLu.Parsing](FSharpLu/Parsing.fs)\r\n- [FSharpLu.Platform](FSharpLu/Platform.fs)\r\n- [FSharpLu.QueueScheduler](FSharpLu/QueueScheduler.fs)\r\n- [FSharpLu.Security](FSharpLu/Security.fs)\r\n- [FSharpLu.ServiceRequest](FSharpLu/ServiceRequest.fs)\r\n- [FSharpLu.StateMachine](FSharpLu/StateMachine.fs)\r\n- [FSharpLu.Sysprep](FSharpLu/Sysprep.fs)\r\n- [FSharpLu.Text](FSharpLu/Text.fs)\r\n- [FSharpLu.TraceLogging](FSharpLu/TraceLogging.fs)\r\n\r\n### Json\r\n\r\n- [FSharpLu.Json](FSharpLu.Json/)\r\n\r\n### Azure\r\n\r\n- [FSharpLu.Azure](FSharpLu.Azure/)\r\n\r\n### Windows\r\n\r\n- [FSharpLu.Windows.Hyperv](FSharpLu.Windows/Hyperv.fs)\r\n- [FSHarpLu.Windows.Security](FSharpLu.Windows/Security.fs)\r\n- [FSHarpLu.Windows.Certificate](FSharpLu.Windows/Certificate.fs)\r\n- [FSHarpLu.Windows.Registry](FSharpLu.Windows/Registry.fs)\r\n- [FSHarpLu.Windows.TraceLoggingConsole](FSharpLu.Windows/TraceLoggingConsole.fs)\r\n- [FSHarpLu.Windows.Smb](FSharpLu.Windows/Smb.fs)\r\n- [FSHarpLu.Windows.EtwListener](FSharpLu.Windows/EtwListener.fs)\r\n- [FSHarpLu.Windows.DirectoryServices](FSharpLu.Windows/DirectoryServices.fs)\r\n- [FSHarpLu.Windows.Wmi](FSharpLu.Windows/Wmi.fs)\r\n- [FSHarpLu.Windows.ManagementWin32](FSharpLu.Windows/ManagementWin32.fs)\r\n- [FSHarpLu.Windows.ManagementHypervisor](FSharpLu.Windows/ManagementHypervisor.fs)\r\n- [FSHarpLu.Windows.HyperV](FSharpLu.Windows/HyperV.fs)\r\n\r\n\r\n## Microsoft Open Source Code of Conduct\r\n\r\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMicrosoft%2Ffsharplu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMicrosoft%2Ffsharplu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMicrosoft%2Ffsharplu/lists"}