Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions .eslintrc.json

This file was deleted.

30 changes: 15 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,30 @@ on:
pull_request:
branches: [master]

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: purescript-contrib/setup-purescript@main
with:
purescript: "unstable"
- uses: actions/checkout@v6

- uses: actions/setup-node@v2
- uses: actions/setup-node@v6
with:
node-version: "14.x"
node-version: "24"

- name: Install dependencies
run: |
npm install -g bower
npm install
bower install --production
run: npm install

- name: Build source
run: npm run-script build
run: npm run build

- name: Run tests
run: |
bower install
npm run-script test --if-present
run: npm test

- name: Lint
run: npm run lint

- name: Check formatting
run: npm run format:check
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
/.*
!/.gitignore
!/.eslintrc.json
!/.tidyrc.json
!/.oxfmtrc.json
!/.github/
/bower_components/
/node_modules/
/output/
package-lock.json
/package-lock.json
/spago.lock
3 changes: 3 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"trailingComma": "es5"
}
10 changes: 10 additions & 0 deletions .tidyrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"importSort": "ide",
"importWrap": "source",
"indent": 2,
"operatorsFile": null,
"ribbon": 1,
"typeArrowPlacement": "first",
"unicode": "never",
"width": null
}
20 changes: 18 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [Unreleased](https://github.com/purescript/purescript-refs/compare/v6.0.1...HEAD)

Breaking changes:

Expand All @@ -12,9 +12,22 @@ Bugfixes:

Other improvements:

## [v6.0.1](https://github.com/purescript/purescript-refs/releases/tag/v6.0.1) - 2026-10-17

Breaking changes:

New features:

Bugfixes:

Other improvements:

- Migrate from Bower/Pulp to Spago and update CI, linting, and formatting (#42 by @thomashoneyman)

## [v6.0.0](https://github.com/purescript/purescript-refs/releases/tag/v6.0.0) - 2022-04-27

Breaking changes:

- Migrate FFI to ES modules (#39 by @kl0tl and @JordanMartinez)

New features:
Expand All @@ -26,18 +39,21 @@ Other improvements:
## [v5.0.0](https://github.com/purescript/purescript-refs/releases/tag/v5.0.0) - 2021-02-26

Breaking changes:

- Added support for PureScript 0.14 and dropped support for all previous versions (#29)

New features:

- Allow the construction of self-referential `Ref`s (#21)
- Add roles declarations to allow safe coercions (#29)

Bugfixes:

Other improvements:

- Add some examples and tests and update documentation (#19, #20, #31)
- Remove primes from foreign module exports in preparation for ES modules (#24)
- Remove `return {}` from FFI implementations for a small performance boost (#27)
- Remove `return {}` from FFI implementations for a small performance boost (#27)
- Migrated CI to GitHub Actions and updated installation instructions to use Spago (#33)
- Added a changelog and pull request template (#34, #35)

Expand Down
25 changes: 0 additions & 25 deletions bower.json

This file was deleted.

17 changes: 10 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
{
"private": true,
"scripts": {
"clean": "rimraf output && rimraf .pulp-cache",
"test": "pulp test",
"build": "eslint src && pulp build -- --censor-lib --strict"
"build": "spago build",
"test": "spago test",
"lint": "oxlint --deny-warnings src test",
"format": "purs-tidy format-in-place src test && oxfmt --write .",
"format:check": "purs-tidy check src test && oxfmt --check ."
},
"devDependencies": {
"eslint": "^7.15.0",
"pulp": "16.0.0-0",
"purescript-psa": "^0.8.2",
"rimraf": "^3.0.2"
"oxfmt": "^0.73.0",
"oxlint": "^1.88.0",
"purescript": "^0.15.16",
"purs-tidy": "^0.11.1",
"spago": "^1.0.5"
}
}
22 changes: 22 additions & 0 deletions spago.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package:
name: refs
description: Functions for creating, reading, and updating mutable references
build:
strict: true
pedanticPackages: true
publish:
version: 6.0.1
license: BSD-3-Clause
location:
githubOwner: purescript
githubRepo: purescript-refs
dependencies:
- effect: ">=4.0.0 <5.0.0"
- prelude: ">=6.0.0 <7.0.0"
test:
main: Test.Main
strict: true
pedanticPackages: true
dependencies:
- assert: ">=6.0.0 <7.0.0"
workspace: {}
4 changes: 3 additions & 1 deletion src/Effect/Ref.purs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ foreign import modifyImpl :: forall s b. (s -> { state :: s, value :: b }) -> Re
-- | Update the value of a mutable reference by applying a function
-- | to the current value. The updated value is returned.
modify :: forall s. (s -> s) -> Ref s -> Effect s
modify f = modify' \s -> let s' = f s in { state: s', value: s' }
modify f = modify' \s -> do
let s' = f s
{ state: s', value: s' }

-- | A version of `modify` which does not return the updated value.
modify_ :: forall s. (s -> s) -> Ref s -> Effect Unit
Expand Down
10 changes: 4 additions & 6 deletions test/Main.purs
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,10 @@ selfRef = do

-- Modify the `ref` and check that value in `ref'` changes
Ref.modify_ (\(RefBox r) -> RefBox (r { value = 1 })) ref
assertEqual
<<< { expected: 1, actual: _ }
=<< (Ref.read ref' <#> \(RefBox { value }) -> value)
value1 <- Ref.read ref' <#> \(RefBox { value }) -> value
assertEqual { expected: 1, actual: value1 }

-- Modify the `ref'` and check that value in `ref` changes
Ref.modify_ (\(RefBox r) -> RefBox (r { value = 2 })) ref'
assertEqual
<<< { expected: 2, actual: _ }
=<< (Ref.read ref <#> \(RefBox { value }) -> value)
value2 <- Ref.read ref <#> \(RefBox { value }) -> value
assertEqual { expected: 2, actual: value2 }
Loading