Giter VIP home page Giter VIP logo

fsharp.org's Introduction

The F# repository has moved

Please go to https://github.com/dotnet/fsharp/. All contributions to the F# compiler/library/tools now go there.

This repository is the old repository for alternative packagings of F#. See notes below for historical notes on these. The core logic of F# is made available as a library component called FSharp.Compiler.Service, and F# is open source, so an unlimited number of other packagings of F# are possible.

Archival: Details on the various Alternative Packagings

Archival: The FSharp.Compiler.Tools NuGet package

This repo is currently used to make the FSharp.Compiler.Tools NuGet package. This package includes the following for both .NET Core and .NET Framework/Mono:

  • the F# compiler fsc.exe
  • F# Interactive fsi.exe
  • build support,
  • a copy of FSharp.Core used to run the tools
  • related DLLs.

The NuGet packages are exactly the ones produced by AppVeyor CI, e.g. for version 4.1.2. They are pushed to https://nuget.org by someone with appropriate permissions.

The FSharp.Compiler.Tools NuGet package can be used if you wish to use the latest F# compiler on a computer without relying on the installed version of Visual Studio. Adding it via NuGet to a project will override the in-box compiler with the compiler from the NuGet package. Note: you will need to manually modify your project file once (see #676).

Archival: The fsharp Debian Linux Package

Usage: See http://fsharp.org/use/linux

apt-get install fsharp

See the mono packaging repo, which is a downstream variant of this repo, where this package is actually made.

  • There is a tag for each upstream source tag
  • There is a tag for each "debianized" package
  • Packaging metadata lives in debian/
  • install files are files installed to disk
  • cligacinstall are GAC-installed libraries
  • control is the manifest of packages
  • rules is the Makefile which handles build/install.

Jo Shields (@directhex) has done much of this work and says:

I tend to only update the published packages when a) the same update has already been pulled in on Mac by Jason, and either b) something breaks horribly in the existing version on a new Mono, or c) someone explicitly asks me to.

Linux package delivery is (now) based on packages built on our public Jenkins instance, and published automatically as a post-build step, based on two inputs - a Git repository in standard Debian git packaging format (which https://github.com/mono/linux-packaging-fsharp already is), and a tarball to consider as the canonical source of the next release (giving the same tarball in subsequent builds is how you indicate packaging-only changes such as alterations to metadata in debian/)

Alexander Köplinger has admin access to Jenkins, SSH access to the Jenkins and repository servers, and has taken care of things for me in my absence in the past (but isn't a Debian packaging expert, so would be trusting that metadata changes are solid)

Archival: F# packaging in Mono + macOS

F# is packaged as part of Mono on macOS. Jason Imison says:

We use a system called BockBuild that pushes versions of F# (sometimes with patches) out with Mono for macOS (F# is bundled with mono here, not a separate package).

You can see an example build script here (if you have access, ping me if not) https://github.com/xamarin/bockbuild/blob/2017-02/packages/fsharp.py. Unfortunately, you need to know the branch name here – 2017-02 is what is going to be released with VS for Mac aka Mono 4.9.x

We build fsharp/fsharp internally so that we’re not dependent on you pushing out fixes / bumping packages. Miguel de Icaza likes to ‘own’ the code that we ship precisely to stop these kind of emergency issues.

@cartermp says:

For future reference, dependencies and code for the F# editing and F# Interactive support in Visual Studio for Mac/Xamarin Studio is here

Archival: History

See https://fsharp.org/history

F# compiler sources as initially dropped are available from fsharppowerpack.codeplex.com.

On 4 April 2014, Microsoft Open Tech published the F# compiler sources at http://visualfsharp.codeplex.com and began accepting contributions to the F# compiler/library and tools.

In 2016 the http://visualfsharp.codeplex.com repo moved to GitHub at https://github.com/Microsoft/visualfsharp.

In 2019 the .NET Foundation and the F# community unified repositories at https://github.com/dotnet/fsharp.

fsharp.org's People

Contributors

alfonsogarciacaro avatar banshee avatar baronfel avatar brodyberg avatar cartermp avatar dmohl avatar dsyme avatar dungpa avatar forki avatar fsgit avatar gbaydin avatar gsvgit avatar isaacabraham avatar jackfoxy avatar jasonmccampbell avatar johnbfair avatar krzysztof-cieslak avatar mathias-brandewinder avatar mavnn avatar packtpartner avatar panesofglass avatar ptrelford avatar reedcopsey avatar rneatherway avatar sergey-tihon avatar swlaschin avatar tachyus-ryan avatar tahahachana avatar tpetricek avatar vzarytovskii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fsharp.org's Issues

Enable HTTPS on fsharp.org

It would be great to enable HTTPS for fsharp.org, because the internet is under attack and people who use HTTP get exploited to a lesser or greater extent. We want people to trust F# and for that we need to build technological solutions that are trust-worthy.

Since github pages don't seem to support HTTPS for custom domains, we should find a solution that allows us to host/specify a HTTP certificate on our own. Some alternatives:

  • self-host on DigitalOcean
  • Heroku with custom certificate

Suave could be used to serve the contents from a static directory and if we do Heroku we can probably outsource the build-server sort of activity to them. Otherwise, you can do bundle exec jekyll && rsync [email protected]:/var/www/ if you have deploy-access, or a CI server could do it.

Proposal for changing how User Groups page functions

I've been filling out the map for user groups, and have some issues with the current way this page works.

Right now, the map is managed by an fsharp.org google map, and must be manually edited to add groups. This causes it to be a separate set of data from the user group list in the main page. As such, one or both sets of data is typically out of date.

I now have the map portion (as far as I know) fairly current with the list of groups + "friendly" groups. However, I would like to propose a change to how this is managed and displayed.

If we switch to using a single google fusion table, we can create a map as well as an iframe list (their "card view") of the data. This allows us to manage both sets of information from a single data source, which is likely far more maintainable over time.

I have a quick prototype of this up at: http://reedcopsey.github.io/fsfoundation/groups/

Note that the layout is slightly imperfect due to the F# logo not being found, but the relevant portions of the page are correct. I've currently only copied over 4 of the user groups (just to provide some sample data), but am willing to copy over all 47 groups of which I'm currently aware.

There are many advantages to this approach over time, including:

  1. A single data set which backs the map and list.
  2. Flexible display options [we could always improve or change the display later as there is a javascript API to the tables, so we don't have to always use their card view in an iframe].
  3. Consistency - As this is data driven, the display can be updated in a single layout and is guaranteed to be consistent.
  4. Lower maintenance - We already have to manually edit the data source to handle the map. This makes 1 edit handle both.
  5. Security - The ability to edit the data source can be shared with specific people as needed (and revoked at any time) as the data source is a sharable google document
  6. Potential for reduced maintenance over time - It is possible to modify this approach to allow for a google form from which users could add their own group directly. I'm not sure this is worth the effort (and potential for abuse) as new groups are not a common enough occurrence that a simple edit is problematic.

The main disadvantages compared to the current methodology are:

  1. This isn't editable via a pull request. Currently, the list portion can be edited this way, though the map is not kept up to date when a user does a pull request.
  2. It can't be broken out (easily) by continent as it's currently done. It would be possible to do this, but it'd add to the maintenance cost, so I don't know that it's worthwhile (especially since the map is interactive, and clicking on the groups brings up their information).

It is also not as easy to "feature" specific groups with this, as it's data driven. I'm not sure if this is a pro or con - on one hand, it's unbiased (as it's just alphabetical), but on the other hand, right now, some of the bigger groups are listed first.

in fsharp 3.1 language spec docx, the link is wrong

in summary
Discrepancies may exist between this specification and the 3.1 implementation. Some of these are noted as comments in this document. If you find further discrepancies please contact us and we will gladly address the issue in future releases of this specification. The F# team is always grateful for feedback on this specification, and on both the design and implementation of F#. You can submit feedback by opening issues, comments and pull requests at http://github.com/fsharp/fsfoundation/docs/language-spec.

the http://github.com/fsharp/fsfoundation/docs/language-spec link is 404

F# 4.0 without VS and MSBuild 14

Comment on "Option 3: Install the free F# compiler and tools alone"

Visual F# Tools 4.0 needs MSBuild 14 and it is not part of the Framework 4.6 or Windows 10 SDK. After installing SDK and F# the following error appears when I run fsi.exe or fsc.exe: error FS0193: Could not load file or assembly 'Microsoft.Build.Utilities.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

I had to additionally install Microsoft Build Tools 2015 to fix this issue. I think it should be mentioned on the installation page (link to download build tools: https://go.microsoft.com/fwlink/?LinkId=615458).

Add list of proposed student projects to fsharp.org

Matt Parkinson and Jon Harrop are planning on adding a list of possible student projects to fsharp.org, as ideas for people teaching with F#, and this is a placeholder item to get together an initial list of ideas for that.

Help windows developers test their F# libs on other platforms

Something fsharp.org could provide would be a link to a publicly available VM image of some linux or bsd distribution already setup with Mono 3, F# 3 and MonoDevelop, and a couple of instruction on how to run nunit there, so it would be easier for developers that only use windows to test for mono compatibility.

Mono compatibility best practices

Do you think fsharp.org would be a good place to gather o list of do's and don't to enable F# libs to work on Mono?

My list is still small but probably others have a lot of stuff they can add:

  • Always use / instead of \ on paths
  • In .fsproj files, don't use copy commands on PostBuildEvent's, but use the MSBuild Copy task itself (example)
  • Don't assume pdbs are always created after the compilation

F# home page

The current F# home page doesn't not provide new comers with any real information about the site. It would be great to have a page that provides a brief description, a code sample(s) showing its strengths and then links to try it, get it and learn more about it and the community (i.e. providing users all the information that is provided on the current page but doesn't need to be displayed on the home page) .

The current logo also appears fuzzy and pixelated on any modern day computer and also probably needs a redesign to be simpler.

Issues with new home page

This rolling issue is to discuss the new home page by @TahaHachana, from #317 . Please add comments below. Issues I've seen so far:

  • It feels like the Rajdhani font is not appropriate for headings and main-body text. It's fine for the front page and the navbar, but not for things like the guides or testimonials.
  • On http://fsharp.org/testimonials/, the word "Testimonials" is overlaid by the five-item social-sharing toolbar that flies in from the left.
  • The code samples that were on the front page didn't feel quite right.
  • The "fly-in" effect of the social-sharing navbar is a little distracting
  • Training --> "Online Learning" doesn't seem to go to the right anchor because of the navbar problem
  • Training --> "Video Lectures" doesn't seem to go to the right anchor because of the navbar problem
  • Training --> "Textbooks for F#" doesn't seem to go to the right anchor because of the navbar problem
  • When you press "Install" on the front page the dropdown shows below, partly off-screen.
  • On smaller screen sizes, when using the minimized toolbar with the three stripes, the second-level of toolbar choices shows in grey font

Problem with debian package installation instructions

I think there is a problem with the section "Option 2: Get the F# 3.0 Debian packages" on the page http://fsharp.org/use/linux/ . I followed those instructions, and was able to run fsharp on my system, but after that, the debian update manager wants to install 260MB of unstable packages, effectively trying to upgrade the system. I am currently running the wheezy version of debian, so this could cause problems. Perhaps the option 2 section should be replaced by a note saying that if you are running debian unstable, then you can just install fsharp, but adding these lines is bad:

deb http://http.us.debian.org/debian/ unstable main contrib non-free
deb-src http://http.us.debian.org/debian/ unstable main contrib non-free

Thanks.

Navbar look issue on iPad

On iPads the navbar dropdown menus show up as in the attached screenshot. This might not be iPad specific. The navbar also wraps into 2 rows and doesn't look good. The problem was reported by @vasily-kirichenko.
fsharporgipad

FSharp Builds to non-standard mono locations.

Installing FSharp to locations other that /usr/local or /usr has some difficulties. I had the following issues when attempting to perform such a build. I'll list the steps performed and the issues below. These Issues are generally solved by the user performing some updates to their environmental variables (perhaps these steps can be added to the documentation if deemed informative), though some still persist.

Assumption:
Mono 3.2.7 (master) is installed in /opt/mono/ (The path the mono documentation uses for parallel installs)
Parameters: --prefix=/opt/mono
No other version of mono is installed (I.e., the monolite bootstrapper was used when building 3.2.7)

Debian Testing

Process/Issues:

  1. ./autogen.sh --prefix=/opt/mono
    The configuration process complains about Mono not being installed.
    PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig must be set by the user.
    PATH=/opt/mono/bin/:${PATH}
    LD_LIBRARY_PATH=/opt/mono/lib:${LD_LIBRARY_PATH}
  2. make
    No issues
  3. make install
    Fails with sh complaining 'sn' can't be found though a "whereis sn" will return "/opt/mono/bin/sn"
    Possible Solution: Install mono-complete from Debian to obtain mono 3.0.6. This means the build is using some default environmental variable besides PATH to find the 'sn' application that is being set properly when the mono packages are installed.

Need Help w. F# File.

Can someone please tell me why I cannot get this Visual F# file to compile successfully?? The problem seems to be the last line : Console.ReadKey(true) I do n't see for the life of me what could be wrong with it.
// Learn more about F# at http://fsharp.org

#light

open System

Console.WriteLine("Please Press 1")
Console.WriteLine("Please Press 2")
Console.WriteLine("Please Press 3")
let input = Console.ReadLine()
//set up conditional expression on the condition that the response is true.
if input.Equals("1") then
Console.Write "Hey you must be Steven!"
elif input.Equals("2") then
Console.Write "Hey you must be Markie!"
else
Console.Write "Okay you must have hung up!"
Console.ReadKey(true)

Component Design Guidelines don't specify naming conventions of modules

In §3.1, the guidelines specify that all "Concrete types" should PascalCase. I believe this should include modules, but then the note lists which kinds of types are meant, and doesn't mention modules:

Concrete types are structs, classes, enumerations, delegates, records, and unions. Though type names are traditionally lowercase in OCaml, F# has adopted the .NET naming scheme for types.

I think modules should be added to the list in the note.

(I would make a pull request for this, but I don't have Word installed.)

Information for F# trainers

I gave another one week course to one of the world's largest insurance companies last month and found myself unable to demo any Nuget packages because I didn't have an internet connection. In fact, I often don't have an internet connection and want to use packages. Nuget does not support this out-of-the-box but apparently there are hacks to make a local repository: http://www.hanselman.com/blog/HowToAccessNuGetWhenNuGetorgIsDownOrYoureOnAPlane.aspx

This made me think: we should devote part of fsharp.org to information like this for F# trainers. Maybe we could also have links to videos/slideshows of F# talks?

What do you think?

F# Spec doesn't mention private representation Discriminated unions

For example, in this type:

  type HtmlAttribute = 
      private | HtmlAttribute of name:string * value:string    

What's the effect that private should have? I see that in C# projects, I no longer have the NewHtmlAttribute constructor, but I can keep doing pattern matching and create new values with HtmlAttribute("a", "b") in F#. Is that the intended behaviour? I was expecting to not be able to create new values using the union case constructor, and force people to use a static method that normalizes the arguments

"Email1 has already been taken" when password is too long at activation

I have an existing twitter account rego with the fsharp org but with no email in the private settings. I then went to join the foundation. I chose email as the method and on validating via the emailed link, I get to choose a password. Using a password manager, the password of 100 chars is greater than the allowed 45 chars and the activate account step failed. Now I am stuck in this situation.

I have a twitter rego with a username I cannot associate an email with because the email I want to use is taken ...

Label: Hi , thanks for joining!
Error: Email1 has already been taken
Field: [email address]

I have an email account that is not validated for which I cannot generate a forgotten password link ...

Caption: Reset your password
Error: Email does not have an account
Field: [email address]
Button: Send password reset instructions

Note that the username I chose at the email activation step was the same as the one associated with the twitter rego. No error was shown regarding the username being taken already.

Unclear which data access libraries are specific to MS SQL Server

I got interested in F# recently and came to following page to see what are my options for accessing data in databases: http://fsharp.org/guides/data-access/#sql-data-access

However, I'm a bit confused because it is not immediately clear which libraries are specific to (and available only for) MS SQL Server, and which are usable with other DB systems too.
It seems to me that word "SQL" is used in some parts of that text as a synonim for MS SQL Server, but it is not clear for which libraries.

I suggest to explicitly mark MS SQL Server specific libraries, so it is immediately clear what are the options for someone using other DB system (e.g. PostgreSQL).

If I (as an F# newbie) misunderstood something, then I apologize in advance.

CNAME file needs to be restored

Oops! My PR #185 also removed the CNAME from the root (I removed it from my fork because GH complained but forgot to remove from PR).

I'll submit a new PR to fix this shortly. Sorry!

F# on IRC linkage

I've been the freenode IRC channel operator for F# since 2008.
I recommend changing the F# IRC link in the site navigation (and possibly elsewhere) to point to http://webchat.freenode.net/?channels=%23%23fsharp . A couple of good reasons for this:

  1. The webchat client hosted by freenode does not require a java client. irc2go requires a java runtime and non-default security settings.

  2. The channel name actually consists of two hash marks (##fsharp and not #fsharp). It is freenodes policy that a single hash mark is reserved for official channels. The URL I've provided above indicates the correct channel name. Although the #fsharp channel has been configured to redirect to ##fsharp this might not always be the case.

Although the channel currently occupied on freenode is a registered channel, it is not considered "official" in the sense that it is not registered by MSR or fsharp.org. The utility of an IRC channel has historically been unrecognized by the insiders so it remains an unofficial channel. Having the links on fsharp.org updated to an out-of-the-box operational webclient and joining the correct channel might go a long way to increasing participation by new users on IRC.

F# compiler #nowarn - where to post such issue?

Well, I am posting this here, because after reading http://fsharp.org/ I am overwhelmed and do not know where I can post that:

There is no documentation of the compiler's #nowarn codes. From the web we learn that

nowarn "25" disables the warning on incomplete pattern matches but there is no list available on all the code the Fä compiler provides.

As it regards the fsfoundation web page, for someone who wants to report this documentation issue, the page does not guide one, where the appropriate forum is.

UX is lacking

A huge benefit would be a more thought out user experience. Menus on the left, content in the main region on the right at a minimum.

MSDN does this part well. JQuery's documentation page is fairly good as well.

The current set up is single page that is a forever long. Creating the pages in make sense hierarchical views, where a single page is no longer than 2 page lengths would be ideal.

Consolidating information into groups of interest would also be beneficial. The home page is nice, but the subpages need help. Not sure if that is an issue with the template being used.

Pluralsight course link(s)

On Twitter, @dsyme suggests:

don't forget to make sure all the courses are listed on http://fsharp.org/training/

Some (3) courses are already listed there. Should we keep on adding individual entries to this list, or should we instead link to the Pluralsight search page that contains all the courses tagged with F#: http://www.pluralsight.com/search/?searchTerm=F%23

Personally, Pluralsight is business for me, so I certainly wouldn't mind if the page lists all five of my courses, but if we were to list all current F# Pluralsight courses, it would be 9 or 10 courses already. Wouldn't it drown out the other commercial offerings listed on that page?

I'll be happy to send a pull request either way, but wanted to ask about the preferred policy first.

installation instructions (mono from git source) on web page do not work

http://fsharp.org/use/linux/ says Option 2: 1. .. or 'git clone https://github.com/mono/mono' but the build there breaks with

MCS     [net_2_0] Microsoft.Build.Engine.dll
Microsoft.Build.BuildEngine/Engine.cs(114,81): error CS0117: `Microsoft.Build.Utilities.TargetDotNetFrameworkVersion' does not contain a definition for `Version30'
/tmp/mono/mcs/class/Microsoft.Build.Engine/./../../class/lib/net_2_0/Microsoft.Build.Utilities.dll (Location of the symbol related to previous error)
Microsoft.Build.BuildEngine/Engine.cs(116,81): error CS0117: `Microsoft.Build.Utilities.TargetDotNetFrameworkVersion' does not contain a definition for `Version35'
/tmp/mono/mcs/class/Microsoft.Build.Engine/./../../class/lib/net_2_0/Microsoft.Build.Utilities.dll (Location of the symbol related to previous error)
Compilation failed: 2 error(s), 0 warnings

I can force the build with --with-profile2=no --with-profil3=no --with-profile4=yes but then I get a version of mono that cannot build fsharp (profile2 would be needed?)

Building mono from the latest source tarball release http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2 , and then fsharp with that, is working fine.

(all of this on ubuntu precise x86_64 GNU/Linux 3.8.0-30)

Video assets

A thought occurred to me while looking at the shiny new fsharp.org….

It feels like we are under-utilizing our collected video assets (this an incomplete collection but a good one - there are more recent videos that have come online since @TahaHachana pulled that collection together).

Do you have any thoughts on how we might change this, to get the right people watching the right videos more often?

Here are some initial thoughts

  • Not all videos are appropriate for all audiences, so we can’t put rotating videos on the front page of fsharp.org.
  • Perhaps we should be using the videos more proactively in the guides on fsharp.org? There's one example of this in the "apps-and-games" section. But it's not done that well and it feels like we could do better.
  • Perhaps the videos should be on Community for F#?

This occurred to me in the context of videos assets that Microsoft have produced over time, like the B-Movie Madness video by Donna Malayeri (which I can’t locate but which I’m sure I could find again), the “Don at the Coffee Machine” video and new video done by @latkin coming out in the next month. I’d like to think how we can make the most from these assets and get the right people watching them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.