Back to Programs

Programming languages

Haskell.org

Purely functional programming language

ghchaskell

Participation history

8 GSoC years

2026

4 projects

Official year page

xeus-haskell -- GHC/Wasm Backend Integration Prototype

This project aims to integrate the official GHC/WebAssembly backend into xeus-haskell, a Jupyter kernel for Haskell. Currently, the kernel relies on...

Case split plugin

The goal of this proposal is to extend HLS with a new plugin, the case split plugin, which provides a new code action (or possibly more of them) for...

Restoring Typeclass Refinement Support in LiquidHaskell

LiquidHaskell is a verification tool that allows Haskell developers to prove the correctness of their code through refinement types. This proposal...

Goto dependency definition

Haskell Language Server (HLS) currently supports Goto Definition only for symbols defined within a user’s project, making it difficult to inspect...

2025

3 projects

Official year page

Documenting and improving cmm

Cmm is the intermediate representation and code generation layer used by the Glasgow Haskell Compiler (GHC). It is written in Haskell and sits...

Implement Signature Help for Haskell Language Server

Haskell language server (HLS) implements the server part of Language Server Protocol (LSP) to improve user experience of reading and writing Haskell....

Qualified Imports and Alias Resolution in Liquid Haskell

This proposal aims to enhance Liquid Haskell’s name resolution mechanism by enabling qualified imports for both (logic) type and predicate aliases....

2024

4 projects

Official year page

HLS Cabal Plugin Continuation proposal

I am aiming at solving the following parts of the "Cabal Plugin Continuation" project first: - Completion of local and non-local package names...

LSP Inlay Hints feature for haskell-language-server

This proposal aims to describe how to add inlay hints support to the Haskell language server. Inlay hints can provide a more fancy, intuitive, and...

Continuous Integration Log Explorer Tool

The problem we are trying to solve is, developers struggle to analyze massive CI test logs, especially for rare intermittent failures. This project...

Parse error recovery and incrementality for GHC

GHC is Haskell's most advanced compiler, supporting Haskell2010 report as well as several compiler extensions. Yet, GHC is not fault-tolerant, an...

2022

10 projects

Official year page

Improve HLS Support for Record-Dot-Syntax

For GHC 9.2.x to achieve more widespread adoption, tooling will need to support its best features. For years users have been frustrated by Haskell's...

[Haskell.org] Support more LSP features in Haskell Language Server

This project proposes various new features for the haskell language server(HLS). While HLS already comes with the most important ones, a few haven’t...

Operating Chrome with Haskell

The Chrome DevTools Protocol (CDP) serves a variety of automation use cases by providing programmatic access to Chrome. These include data...

Modularizing GHC

The architecture of the GHC compiler in its current state is anti-modular. Designed with GHC-the-program as the sole consumer in mind, it is very...

Hackage - Package Rank

hackage-server as of yet does not support more advanced algorithm for sorting relevant packages (at the moment user rating is used), this proposal...

MMTk Port for GHC: An alternative of the current GHC storage manager

The proposed project aims at establishing a port between GHC and [MMTk](https://www.mmtk.io/) -- an external memory management toolkit that provides...

Implementing a GPU Backend for Advanced Machine Learning Algorithms

This project enhances Goal - a library of machine learning algorithms based on Haskell - with a GPU backend provided by Hasktorch. Goal strikes a...

New Hackage Features

This proposal aims to add new features to the Hackage server, mainly include package sorting, user info update and user notification emails. It's...

reimplement `cabal check`

`cabal check` is a tool to check the correctness of a `.cabal` file and more generally to provide more useful output (warnings, especially related to...

Formalising Konnakol using Haskell

Konnakol, in South Indian Carnatic music, is the art of performing percussion syllables vocally. However, notwithstanding its importance in Carnatic...

2021

10 projects

Official year page

Enhanced figure support in pandoc

Figures play a central role in the life cycle of all kinds of research and analysis. That is: The communication of results. What we propose in this...

Gradually Typed Hasktorch

Hasktorch has two distinct APIs for tensors: Torch.Tensor and Torch.Tensor.Typed. While the untyped version can initially be easier to use and...

Fixing ihaskell-widgets

While mainly used in data science, Jupyter Notebook’s interactivity makes it a great tool for teachingand learning new concepts and programming...

Haskell in CodeMirror 6

CodeMirror 6 is an editor which supports many programming languages. However, it lacks first-class language support for Haskell. The Abstract Syntax...

Visualization Libraries for ghc-debug

"ghc-debug" is a heap profiler tool for GHC that pauses the current program and lets you run your own custom analyses on the heap. My proposal is to...

Support call hierarchy in Haskell Language Server

This proposal aims to add call hierarchy support in Haskell Language Server(HLS). Language Server Protocol(LSP) has supported call hierarchy in 3.16,...

TOML Support in dhall-haskell

This is a proposal to add serialization and deserialization support for TOML in the functional configuration language Dhall. TOML is a relatively new...

TidalCycles API and editor plugin

TidalCycles is an Embedded Domain Specific Language for pattern, in use by 10,000s of musicians worldwide. However it has had little work done on the...

Dhall bindings to TOML configuration language

Dhall is a programmable configuration language that uses functions, types and imports to make readable configuration files easily. Right now, Dhall...

Haskell Language Server: Symbol Renaming

The Haskell Language Server is a popular, comprehensive Haskell IDE; however, it is yet to implement a core feature: symbol renaming. With the recent...

2020

12 projects

Official year page

Multiple Home Packages for GHC

Haskell tooling has improved considerably over the last year. Haskell IDE Engine was able to build a user-base that is happy with the feature set....

`SPECIALIZABLE` GHC pragma

The main task of this project is the addition of a SPECIALIZABLE pragma to GHC, that will have the effect of exposing an unfolding of the marked...

Functional Machine Learning Algorithms for Music Generation

The proposed outcome of this Summer of Haskell research is the production of a library or package for live coding autonomous music through...

Custom Dataloader for Hasktorch

Hasktorch is an important project for showcasing what a strong type system andfunctional programming can bring to machine learning tasks. The...

Finish the package candidate workflow for Hackage

Currently, the package candidates are not using the templating system and their UI can be improved. To improve the candidates publishing process, we...

Number Field Sieves

This proposal aims to implement efficiently the quadratic sieve and the general number field sieve in Haskell while producing a mathematically...

Building the Haskell Language Server and more

After a busy couple of days at the Bristol Hackathon, the developers behind ghcide and haskell-ide-engine merged efforts resulting in an exciting...

Documentation generator for the Dhall configuration language

Actual Problem Dhall is a programmable configuration language. Despite as haskell programs which have haddock as a documentation generator tool,...

Add primops to expand the (boxed) array API

GHC is an industry-strength compiler for Haskell. I am proposing to add primitives that allow more efficient operations involving immutable...

Update stylish-haskell to use ghc-lib-parser

Stylish-haskell is a code prettifier that formats Haskell programs relying on the haskell-src-exts library to parse the Haskell code into an AST. ...

Build-integration and Badges for Hackage

Hackage have a dedicated Builder application which builds the package, documentation and report same to the hackage server. While this information...

Optimising Haskell developer tool performance using OpenTelemetry

The Haskell developer tool ecosystem, while greatly improving in recent years, has a performance problem. Haskell IDE Engine (HIE), the most popular...

2019

15 projects

Official year page

Issue-Wanted Web Application

Issue-wanted is a web application focused on improving the open source Haskell community. It does so by centralizing and categorizing GitHub issues...

Improving HsYAML Library

HsYAML is a pure Haskell idiomatic implementation of the YAML 1.2 data serialization language with a strong emphasis on compliance with the YAML 1.2...

Improving Hackage Matrix Builder as a Real-world Fullstack Haskell Project

Finding the best example of full-stack Haskell web development project is hard as a beginner to intermediate Haskell developer. This is based on my...

Putting hie Files to Good Use

A collection of small to medium length tasks which will improve the Haskell editor tooling experience, as a continuation of my work on GSOC18 and...

Upgrading hs-web3 library

Impement a WebSocket layer to hs-web3 and use this WebSocket Functionality to upgrade the current web3 modules and implement an IPFS-Api module using...

More graph algorithms for Alga

The project is about adding some new features to Alga library. This project is on the list of ideas. Briefly about goals: Acyclic graphs I finished...

Extending Alga

Alga is a library for algebraic construction and manipulation of graphs in Haskell. Currently there are two main goals, as proposed by Mr. Andrey...

Implementing Chebyshev polynomial approximations in Haskell: Having the speed and precision of numerics with complex, non-polynomial functions.

Practically speaking, in science, engineering, and statistics, most computations are done numerically. My project aims to implement a library that...

Hadrian Optimisation

Hadrian seeks to replace GHC’s current Make-based build system some time around GHC 8.8, but since the main goal of Hadrian so far has been to...

Automated requirements checking as a GHC plugin

The aim of this project would be to create a GHC plugin that allows instructors to define requirements for the code within a project and...

Extending Hasktorch With RNNs and Encoder-Decoder

Project is to build a sequence-to-sequence encoder-decoder model as a module of the Hasktorch library, and demonstrate it on an NLP task.

Functional Machine Learning with Hasktorch: Produce Functional Machine Learning Model Reference Implementations

Neural networks are a powerful tool in machine learning. An integral part of any network is its architecture. However, structuring and comparing new...

Property-based testing stateful programs using quickcheck-state-machine

Testing software is essential. As a project gets bigger, the difficulty of testing the interactions of all its components increases. Property based...

A language server for Dhall

The aim of the proposed project is to improve support for the Dhall language in mainstream editors via the Language Server Protocol standard.

A stronger foundation for interactive Haskell tooling

Inevitably new and prospective Haskell users will attempt to obtain editor/IDE integration for Haskell but unfortunately they are much more likely to...

2018

15 projects

Official year page

Native-Metaprogramming Reloaded

The goal is to continue on an ongoing work, utilising the Trees that Grow technique, to introduce native-metaprogramming in GHC....

Benchmarking graph libraries and optimising algebraic graphs

A graph represents a key structure in computer science and they are known to be difficult to work with in functional programming languages. Several...

Improvements to GHC's handling of conditionals.

Improvements to GHC's Code Generator Improved code layout In the current approach there is no way to incorporate additional control flow information...

Hi Haddock

A long-standing issue with Haskell’s documentation tool Haddock is that it needs to effectively re-perform a large part of the...

Improving the GHC code generator

This project attempts to improve the native code generator of GHC by adding support for Intel AVX and SSE SIMD instructions. This support would...

Enhancing the Haskell Image Processing Library with State of the Art Algorithms : Project Proposal GSoC, 2018

The project proposed here aims to implement different classes of Image processing algorithms using Haskell and incorporate the same to the existing...

Functional test framework for the Haskell IDE Engine and Language Server Protocol Library

The Haskell IDE Engine is a Haskell backend for IDEs, which utilises the Language Server Protocol to communicate between clients and servers. This...

Visual Tools and Bindings for Debugging in Code World

Visual Debugging tools that will allow various ages to interact with and learn visually while tracing their bugs in Haskell

A Library for In-Memory Data Analysis in Haskell

A typical workflow in interactive data analysis consists of : Loading data (e.g. a CSV on disk) Transforming the data Various data processing stages...

Dependently Typed Core Replacement in GHC

In recent years, several works (Weirich et al., 2017; Eisenberg, 2016; Gundry, 2013) have proposed to integrate dependent types into Haskell....

Making GHC Tooling friendly

GHC builds up a wealth of information about Haskell source as it compiles it, but throws all of it away when it's done. Any external tools that need...

Helping cabal new-build become just cabal build

While much of the functionality required to use the new-* commands has already been implemented, there are not-insignificant parts of the design that...

Add support for deprecating exports

Add support of deprecation pragmas within module exports. This would ease the transition between different versions of the software by warning the...

Support for Multiple Public Libraries in a .cabal package

Large scale haskell projects tend to have a problem with lockstep distribution of packages (especially backpack projects, being extremely granular)....

Parallel Automatic Differentiation

Automatic Differentation (AD) is a technique for computing derivatives of numerical functions that does not use symbolic differentiation or...