Skip to content

Milestones

List view

  • ### Phase 1: Measurement and Observation The goal of this phase is two fold. First, finish a section on reading modern core, complete with a description of all the information that is usually stripped out of the "Reading Core" tutorials. Why? Because reading and understanding Core is a major barrier to performance optimizations, it is what the experts do, what GHC perceives, and can help diagnose large classes of performance-related behaviors. Second, a section on attaining reliable benchmarks on Linux (this could be expanded to other platforms, but per the Haskell Survey the vast majority of Haskell developers work on and target Linux). This phase is complete when: - [ ] : Section on reading Core is complete - [ ] : A description of what allocation in Core is complete. - [ ] : A description of demand analysis information in Core is complete. - [ ] : A description of the simplifyer information in Core is complete. - [ ] : A description of the occurrence analysis information in Core is complete. - [ ] : Descriptions of poor performance patterns, and a description of why they are poor performing, in Core is complete. - [ ] : Section on how to reliably benchmark on Linux is complete. - [ ] : Section on benchmarking utilities is complete, Specifically these libraries and tools: - [ ] : (Haskell Library) Criterion - [ ] : (Haskell Library) Gauge - [ ] : (Haskell Library) Tasty-Bench - [ ] : (Haskell Library) Weigh - [ ] : (Utility) Perf - [ ] : (Utility) Cachegrind - [ ] : three more sections on heap profiling in Part 1 are complete. - [ ] : three more sections of Part 2 are complete and these sections refer to either the Core reading guide or the benchmarking section. - [ ] : Two case studies are complete and show real world poor performance patterns in Core, and associated improvements in benchmarking data. - [ ] : Community check in has been done on Discourse.Haskell after each other bullet is complete

    No due date
    1/35 issues closed
  • ### Phase 0: Initialization This is an initialization phase, its purpose is to get the project up and running and ready for external contributions. Note that the last item of each phases' checklist is a community check-in. Phase0 is completed when: - [ ] : Working repository for the book is setup. - [ ] : Continuous integration for the book is setup and the book builds for every commit to main. - [ ] : Github project is setup. - [ ] : Contribution guide for sections in Part 1 is complete. - [ ] : Contribution guide for sections in Part 2 is complete. - [ ] : Part 1 section checklist is complete. - [ ] : Part 2 section checklist is complete. - [ ] : Case study checklist is complete. - [ ] : Three sections of Part 1 (Measurement) are complete. - [ ] : Three section of Part 2 (Optimizations) are complete. - [ ] : One case study is complete. - [ ] : List of contributors is initialized. - [ ] : Community check in has been done on Discourse.Haskell after each other bullet is complete The deliverables for this phase constitute examples for other contributors, so that when and if an external contributor tries to contribute they have something to work off of rather than a blank page. In particular they have checklists to work off of and example sections to refer to. This lowers the barrier of entry for new contributors and creates a positive reinforcement loop as the book progresses. An example checklist for an external tooling section could be: ```md - [ ] provide the motivation for using the external tool - [ ] provide a phrase "use this tool when ..." - [ ] provide the expected output of the tool "With this tool you can retrieve this important information" - [ ] provide the platforms that support this tool, if a platform does not please state either: 1) an alternate tool to retrieve the same information or 2) a statement that this tool is not supported on the platform - [ ] if you read the first line of each paragraph, they are form a coherent story , and that story arrives at the point of the section, within reason. - [ ] The section has a closing summary that repeats: when to use the tool, what information can be retreived with the tool, which performance issues this tool helps with, and how to run/use the tool. - [ ] After the summary there is a summary of command line invocations and their corresponding meaning - [ ] The section has a reference subsection - [ ] The book builds with the PR (this should be CI) ```

    No due date
    1/25 issues closed