The F# compiler, FSharp.Core library, and tools for F#
Перейти к файлу
Don Syme 5bfd9fcd38 [RFCs FS-1051, FS-1052, FS-1053] support for span, readonly refs, byref-like structs (#4888)
* initial support for span, readonly refs, byref-like structs

* fix proto build

* make proto work with previous FSharp.Core

* make proto work with previous FSharp.Core

* update baselines

* integrate code cleanup

* integrate code cleanup

* integrate code cleanup

* integrate code cleanup

* fix build

* fix build

* implicit deref of byref returns

* add tests for Memory, ReadOnlySpan and ReadOnlyMemory

* fix tests

* simplify diff

* simplify diff

* remove duplicate error messages

* fix build

* test updates

* fix build

* fix build

* update baselines

* fix uses of NativePtr.toByRef

* switch to inference using byref pointer capabilities

* fix proto build

* update baselines, byref extension methods

* fix test errors

* emit in,out,modreq attributes correctly

* update tests

* fix build

* fix build

* fix tests

* fix tests

* get it right silly boy

* fix test

* minor cleanup

* add more tests

* clarify overloading behaviour + test case

* fix build break

* fix build of tests

* update tests

* add more tests

* byref fixes

* updates for subsumption calls, error message, assign-to-return-byref

* test updates, implicit deref on byref return for normal functions

* update baseline

* improve debug formatting, better error message on implicit deref, improve error messages

* add more tests for recursive functions

* update baselines

* fix baselines

* updates for new test cases

* updates for new test cases

* test updates and byref-to-byreflike

* deal with 'M() <- expr'

* restrict addresses of immutable top-level things

* fix IsByRefLike on struct

* update tests

* fix test

* fix test

* improve check for no-return-of-struct-field-addresses

* fix test case
2018-06-04 08:35:46 -07:00
.nuget move NuGet.Config to the root 2018-02-22 18:46:40 -08:00
.vscode Port build.cmd to build.sh (#2497) 2017-02-28 10:26:58 -08:00
artifacts Implement Proposal B: https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1034-fsharp-core-package.md (#3101) 2017-05-25 16:16:40 -07:00
build Added ProvideBraceCompletionAttribute 2018-06-01 16:37:41 -07:00
fcs Assembly reader shim (#4915) 2018-05-31 20:17:53 -07:00
mono Enable Net Sdk to write project properties (#4430) 2018-03-14 16:10:18 -07:00
scripts Fix the Mono and OSX builds (#4273) 2018-01-29 19:30:42 +00:00
setup Fix target framework selector, now that compiler and sdk has moved to side by side. (#5068) 2018-06-01 14:14:15 -07:00
src [RFCs FS-1051, FS-1052, FS-1053] support for span, readonly refs, byref-like structs (#4888) 2018-06-04 08:35:46 -07:00
tests [RFCs FS-1051, FS-1052, FS-1053] support for span, readonly refs, byref-like structs (#4888) 2018-06-04 08:35:46 -07:00
vsintegration Getting logic to be identical to Roslyn; also fixes a minor undo bug (#5074) 2018-06-02 08:13:24 -07:00
.gitattributes [WIP] simplify mono build (#4358) 2018-02-17 19:30:19 +01:00
.gitignore split swix packages into *.Compiler and *.IDE 2018-05-29 16:37:20 -07:00
.vsts-ci.yaml change the static drop build task to one that properly reports its artifacts to the VSTS API 2018-05-07 13:56:23 -07:00
BuildToolsVersion.txt Enable Build/CI with Mono (#1703) 2016-11-06 18:49:18 +00:00
CHANGELOG.md Test CI after https://github.com/Microsoft/visualfsharp/pull/4392 2018-02-24 00:08:39 +00:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-09-15 23:35:29 -07:00
CONTRIBUTING.md Update CONTRIBUTING.md 2018-05-04 14:25:08 +01:00
DEVGUIDE.md [RFCs FS-1051, FS-1052, FS-1053] support for span, readonly refs, byref-like structs (#4888) 2018-06-04 08:35:46 -07:00
DotnetCLIToolsVersion.txt Update dotnetcli (#4830) 2018-05-07 11:32:41 -07:00
DotnetCLIVersion.txt Update build tools to latest (#1651) 2016-10-24 22:57:24 -07:00
FSharp.Directory.Build.props Add end to end tests (#4671) 2018-04-05 10:55:03 -07:00
FSharp.Directory.Build.targets Add end to end tests (#4671) 2018-04-05 10:55:03 -07:00
FSharp.sln [WIP] simplify mono build (#4358) 2018-02-17 19:30:19 +01:00
FSharpBuild.Directory.Build.props Reduce build warnings (#4959) 2018-05-22 21:42:02 -07:00
FSharpBuild.Directory.Build.targets Add end to end tests (#4671) 2018-04-05 10:55:03 -07:00
FSharpTests.Directory.Build.props Add end to end tests (#4671) 2018-04-05 10:55:03 -07:00
FSharpTests.Directory.Build.targets remove DiaSymReader package dependencies since they're not used 2018-04-18 12:25:48 -07:00
ISSUE_TEMPLATE.md Suggest to attach a zip in issue template (#3478) 2017-08-21 13:36:59 +01:00
License.txt Adopt the MIT License (#3517) 2017-08-31 16:02:26 -07:00
Makefile move NuGet.Config to the root 2018-02-22 18:46:40 -08:00
NuGet.Config directly consume the VS editor's QuickInfo APIs 2018-04-04 14:00:42 -07:00
PublishToBlob.proj Publish packages under teh configruation dir (#4776) 2018-04-23 17:20:38 -07:00
README.md Update README.md 2018-06-04 16:11:13 +01:00
RoslynPackageVersion.txt Build ends up with the wrong version of Microsoft.Build.dlls (#4903) 2018-05-14 19:58:23 -07:00
TESTGUIDE.md Minor fix (#4195) 2018-01-18 11:22:52 -08:00
VisualFSharp.sln rename PatternMatcher.csproj to FSharp.PatternMatcher.csproj (#4682) 2018-04-04 15:28:37 -07:00
attributions.md Update attributions.md (#3490) 2017-08-23 10:36:26 -07:00
build-everything.proj Merge pull request #4599 from Microsoft/merges/master-to-dev15.7 2018-03-22 09:46:52 -07:00
build-nuget-packages.proj build nuget packages after signing (#4269) 2018-01-26 17:16:52 -08:00
build.cmd move redistributable SDK out of MSI and into a VSIX 2018-05-24 13:18:10 -07:00
build.sh Merge remote-tracking branch 'upstream/dev15.6' into merges/dev15.6-to-master 2018-03-05 11:25:55 -08:00
code Create code 2017-09-15 23:33:41 -07:00
init-tools.cmd ensure the expected dotnet CLI is actually present 2017-11-20 11:09:49 -08:00
init-tools.sh Build proto using dotnet cli (#3232) 2017-06-21 10:40:06 -07:00
netci.groovy update CI to allow sudo on Ubuntu (#4392) 2018-02-24 00:08:11 +00:00
packages.config [RFCs FS-1051, FS-1052, FS-1053] support for span, readonly refs, byref-like structs (#4888) 2018-06-04 08:35:46 -07:00
verify-translations.cmd add manual helper script to verify all translations 2018-02-08 13:31:11 -08:00

README.md

The F# Language, Library, and Visual F# Tools Repository

You are invited to help produce future releases of the F# language compiler, library, and tools. This repository enables development on Linux, macOS and Windows, along with some automated CI testing for these.

The F# Compiler and Tools are also mirrored in the corresponding repository of the F# Software Foundation.

Changes contributed here are eventually propagated to this repository and are included in all packagings of F# and open source F# editing tools. The process for doing this is explained in this guide by the F# Core Engineering Group. Currently, the F# community coordinates packaging other editions of F# for use on Linux, macOS, Android, iOS, and other platforms, and Microsoft coordinates packaging this repository as part of the Visual F# Tools.

For historical reasons this repository is called "visualfsharp" and currently also contains the Visual F# IDE Tools. The eventual plan is to split these repositories into "fsharp" and "visualfsharp".

Build Status

Ubuntu (Build) Windows (Debug Build) Windows (Release Tests 1) Windows (Release Tests 2) Windows (Release Tests 3) Windows (Release Tests 4)
master Build Status Build Status Build Status Build Status Build Status Build Status
dev15.6 Build Status Build Status Build Status Build Status Build Status Build Status
dev15.7 Build Status Build Status Build Status Build Status Build Status Build Status
dev15.8 Build Status Build Status Build Status Build Status Build Status Build Status

Help improve the Quality of the Tools by Using the Nightly Releases of Visual F# Tools

To setup Visual Studio to use the latest nightly releases of the Visual F# Tools: https://blogs.msdn.microsoft.com/dotnet/2017/03/14/announcing-nightly-releases-for-the-visual-f-tools/

Contributing

See DEVGUIDE.md and TESTGUIDE.md for details on build, development, and testing.

See CONTRIBUTING.md for general guidelines on the contribution process, also how we label issues and PRs

To contribute to the F# ecosystem more generally see the F# Software Foundation's Community Projects pages.

Branches

These are the branches in use:

  • master = Latest branch for OSS developers and nightly users.

    • Most contributions go here.
    • Able to be built, installed and used in the latest public Visual Studio release.
    • May contain updated F# features and logic.
    • Used to build nightly VSIX (see above).
    • Gets integrated into https://github.com/fsharp/fsharp to form the basis of Mono releases
    • Gets integrated into https://github.com/fsharp/FSharp.Compiler.Service to form the basis of FSharp.Compiler.Service releases
  • dev15.x

    • Latest release branch for the particular point release of Visual Studio.
    • Incorporates features and fixes from master up to a particular branch point, then selective cherry-picks.
    • May contain new features that depend on new things or fixes in the corresponding Visual Studio release.
    • Gets integrated back into master once the corresponding Visual Studio release is made.
    • Used to build Visual F# Tool updates

Technical Documentation

License

This project is subject to the MIT License. A copy of this license can be found in License.txt at the root of this repo.

Using

For typical installs of F#, see http://fsharp.org.

Using Nightly Releases of Visual F# Tools

To setup Visual Studio to use the latest nightly releases of the Visual F# Tools:

https://blogs.msdn.microsoft.com/dotnet/2017/03/14/announcing-nightly-releases-for-the-visual-f-tools/

If you wish to set up a Preview nightly atop Visual Studio preview builds, you can either download a VSIX Manually from here or set up a VSIX feed in visual studio from here.

Using CI Builds

To install F#, see http://fsharp.org.

To download the bits for the latest CI builds see these instructions. This includes and ZIPs containing the F# compiler and VSIX installers for the Visual F# IDE Tools.

Using F# on a build server or computer without an F# installation

If you wish to use the latest F# compiler on a computer without Visual Studio 2017 installed, you can add the nuget package FSharp.Compiler.Tools to your projects. This will replace the in-box compiler with the version contained in the package. The actual package is built in https://github.com/fsharp/fsharp.

You will need to adjust the targets reference on your project file to use the targets file from the installed FSharp.Compiler.Tools package. See https://github.com/fsharp/fsharp/issues/676 for how to modify your project file.

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. This code of conduct has been adopted by many other projects. For more information see the Code of conduct.

Get In Touch

Follow @VisualFSharp and @fsharporg on twitter and subscribe to the .NET Blog.

Members of the F# Software Foundation can be invited to the "F# Software Foundation" discussion rooms on slack. More details at http://fsharp.org/guides/slack/.