Skip to content

Instantly share code, notes, and snippets.

@hdgarrood
Created May 23, 2020 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hdgarrood/f0c167600036630bfe1c5fdb2729f3ca to your computer and use it in GitHub Desktop.
Save hdgarrood/f0c167600036630bfe1c5fdb2729f3ca to your computer and use it in GitHub Desktop.

Bug Fixes

  • Update incremental build cache information properly on IDE rebuilds (#3789, @kritzcreek)

    Fixes a bug where triggering a rebuild via the IDE would not update the output/cache-db.json file, which in certain situations could lead to unnecessary rebuilds, as well as modules not being rebuilt when they should have been.

  • Don't include compiler-internal declarations in IDE completions (#3850, @kritzcreek)

    IDE completions would previously include pseudo-declarations such as RowToList$Dict which only exist internally, due to how type class desugaring inside the compiler works. These declarations are now suppressed.

  • Fix corefn JSON version parsing (#3877, @paulyoung)

    Fixes a bug where the parser for the functional core (or "corefn") JSON format would ignore all but the first component of the compiler version stored in the JSON. This does not affect the compiler directly, but will be useful for other tooling which depends on the corefn JSON parser provided by the compiler library.

Improvements

  • Add purs graph subcommand for graphing module dependencies (#3781, @jmackie, @f-f)

    This adds a new graph subcommand which allows tools to consume information about which modules depend on which other modules. The format is as follows:

    { "Prelude":
        { "path": "src/Prelude.purs"
        , "depends": ["Data.Ring"
        },
      "Data.Ring":
        { "path": "src/Data/Ring.purs"
        , "depends": []
        },
      ...
    }
    

    Each property in the returned object has exactly two properties; path, which is a string containing the file path relative to the directory where the command was run, and depends, which is an array of the names of all directly imported modules.

  • purs ide is better at reloading changes (#3799, @kritzcreek)

    The IDE would previously sometimes miss changes that were made outside of the editor, like building with new dependencies or recompiling larger parts of the project on the console.

    The IDE will now notice when this happened on the next command issued to it and refresh its state before processing that command. This might cause the first command after an external change to take a long time to execute, but should increase reliability in general.

  • Switch to a binary encoding for externs files (#3841, @kritzcreek)

    This change should result in significant performance improvements in both IDE load times and incremental builds where lots of modules are already built.

  • Represent module names as a single Text value internally (#3843, @kritzcreek)

    Boosts compiler performance by representing module names as a single Text value, rather than a list of Text values as it was previously.

  • Extract documentation for type classes in purs ide (#3856, @kritzcreek)

    This changes makes documentation comments on type classes visible to the IDE.

Other

  • Declare explicit upper bounds on Cabal and haskeline rather than relying on stack's pvp-bounds (#3777, @coot)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment