Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    P

    PRL Blog

    prl.ccs.neu.edu · Company blog · on HN since 2016

    The Programming Research Laboratory at Northeastern University posts on programming languages, Racket, types, and language implementation.

    Visit blogHN submissions
    Languages & CompilersHistory
    What HN says

    HN links it for programming language and computing history material, including a Guy Steele poem. One commenter finds the historical references in a post weak and anachronistic.

    Stats for nerds
    24HN people shared it
    19linked in comments
    396story points
    Jun 2022last shared
    2017people per year2022

    Top posts on HN

    1. 1
      Measuring GC latencies in Haskell, OCaml, Racket
      4 people · 146 points · first shared 2016 · 57 comments on HN
    2. 2
      Monotonicity Types: Towards a Type System for Eventual Consistency
      1 person · 101 points · first shared 2017 · 8 comments on HN
    3. 3
      Tutorial: Zero to Sixty in Racket
      1 person · 91 points · first shared 2016 · 10 comments on HN
    4. 4
      The Typed Racket Optimizer vs. Transient
      2 people · 33 points · first shared 2020 · 11 comments on HN
    5. 5
      What Is Soft Typing?
      1 person · 5 points · first shared 2020 · Discussion on HN
    6. 6
      Visual and Interactive-Syntax Realized (VISr) for ClojureScript (and JavaScript)
      2 people · 4 points · first shared 2022 · Discussion on HN
    7. 7
      Lexical and Dynamic Scope (2019)
      2 people · 3 points · first shared 2019 · Discussion on HN
    8. 8
      Tutorial: Using Racket’s FFI
      1 person · 3 points · first shared 2016 · Discussion on HN
    9. 9
      The Behavior of Gradual Types: A User Study
      1 person · 2 points · first shared 2018 · 1 comments on HN
    10. 10
      Building a Website with Scribble
      1 person · 2 points · first shared 2017 · Discussion on HN

    What HN people wrote when they linked it

    • rbehrendsJan 2018

      Note that I was specifically talking about the sequential case, not multi-threaded languages.

      OCaml has had one since the 1990s [1]; it's a fairly standard generational, compacting collector with incremental collection for the old generation. Lua has had an incremental GC since version 5.1 (in 2006); as it's frequently used as a scripting language for video games, it's safe to assume that pause times aren't much of an issue.

      The problem is that virtually every language since then has pretty much decided to have all threads use a global shared heap. Once you do that, you run into all kinds of challenges, such as root discovery from thread stacks without stopping the world. That said, there are plenty of languages that have this option, anyway; it's simply more challenging, not impossible.

      Languages that are single-threaded maintain thread-local heaps don't have the problem. Python and Ruby (unlike Lua) have issues for historical reasons (they started out with basic reference counting and mark-and-sweep collection, respectively, and then had to maintain backwards compatibility [2]).

      Intermediate designs (having both thread-local heaps and shared heaps at the same time) are also possible, but that design space hasn't been explored much.

      [1] http://prl.ccs.neu.edu/blog/2016/05/24/measuring-gc-latencies-in-haskell-ocaml-racket/#ocaml-version

      [2] I think that in principle one could make the cycle detector in Python incremental (it's basically a form of trial deletion); Ruby…

    • brianzelipJul 2021

      01. [On the criteria to be used in decomposing systems into modules – David Parnas](https://prl.ccs.neu.edu/img/p-tr-1971.pdf)

      02. [A Note On Distributed Computing – Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall](https://www.cc.gatech.edu/classes/AY2010/cs4210_fall/papers/smli_tr-94-29.pdf)

      03. [The Next 700 Programming Languages – P. J. Landin](http://thecorememory.com/Next_700.pdf)

      04. [Can Programming Be Liberated from the von Neumann Style? – John Backus](http://www.csc.villanova.edu/~beck/csc8310/BackusFP.pdf)

      05. [Reflections on Trusting Trust – Ken Thompson](http://users.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf)

      06. [Lisp: Good News, Bad News, How to Win Big – Richard Gabriel](https://www.dreamsongs.com/Files/LispGoodNewsBadNews.pdf)

      07. [An experimental evaluation of the assumption of independence in multiversion programming – John Knight and Nancy Leveson](http://sunnyday.mit.edu/papers/nver-tse.pdf)

      08. [Arguments and Results – James Noble](http://www.laputan.org/pub/patterns/noble/noble.pdf)

      09. [A Laboratory For Teaching Object-Oriented Thinking – Kent Beck, Ward Cunningham](http://c2.com/doc/oopsla89/paper.html)

      10. [Programming as an Experience: the inspiration for Self – David Ungar, Randall B. Smith](https://suif.stanford.edu/~lam/cs343/programming-as-experience.pdf)

    • carapaceAug 2018

      Replying to you and vanderZwan.

      People have investigated typing for stack-based languages before, [1] is a good overview. I've been implementing a dialect of Joy in Python and it turns out that it is pretty straight forward to implement type-inference and -checking.[2]

      However, I recently realized that I was doing waaaay too much work. I reimplemented Joy in Prolog and got typing for free. Several pages of Python became two pages of Prolog and the interpreter is more powerful, I could go on. It's really weird being so excited on the one hand and so rueful on the other. This is so cool but I wasted so much time!

      Anyhow, going by what you're saying the_grue about passing variables in the wrong order, I think you may have been going at it in the wrong way.

      Using Joy and deriving new definitions with it I've only very occasionally had bugs related to "typos" in argument order of stack items. If you start with little pieces and build up stable conceptual interfaces as you go the process seems to flow and lead to correct code. It's like playing with Legos, or deriving a mathematical theorem.

      [1] http://prl.ccs.neu.edu/blog/2017/03/10/type-inference-in-stack-based-programming-languages/

      [1] http://joypy.osdn.io/notebooks/Types.html

    • sitkackOct 2017

      Do they really insert extra dynamic checks?

      Is Sound Gradual Typing Dead?
      https://news.ycombinator.com/item?id=11041272

      http://prl.ccs.neu.edu/gtp/research.html

      It was my understanding that MyPy was purely compile time with no runtime checks. But I could be wrong. Gradual Typing as implemented in the original paper would lead to much much slower code. The weight of a static language bolted onto a dynamic runtime for the worst of both possible worlds. Sufficiently abstract Python code is almost un-typable.

      I think eventually we will get there, where one can explore a program in a dynamic language and ship a correctly statically typed one. Types are only the beginning.

    • cessorMay 2020

      The term information hiding used in this thread is very confusing (to me, at least).

      I believe David Parnas introduced it in 1971 to mean that a program's design was sliced along shared units of concerns (things that vary together) rather than "steps in a flowchart".

      https://prl.ccs.neu.edu/img/p-tr-1971.pdf

      I believe what you are trying to convey is called "data abstraction", as for example used by Reynolds, 1975;

      mentioned here:
      https://www.cs.utexas.edu/~wcook/papers/OOPvsADT/CookOOPvsADT90.pdf

      explained here:
      https://link.springer.com/chapter/10.1007%2F978-1-4612-6315-9_22

    • bravogammaJun 2022

      I like to refer to computing history as much as the next person, but the references in this post [0][1][2] came across as rather weak and mostly anachronistic.

      Computer hardware, networking, and server software has evolved by leaps and bounds over the last 5-10 years, let alone 50!

      [0] https://prl.ccs.neu.edu/img/p-tr-1971.pdf (1971)

      [1] https://en.wikipedia.org/wiki/The_Mythical_Man-Month (1975)

      [2] https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing (1997?)

    Related

    Well-Typed Blogwell-typed.com60 people

    Falsify: Hypothesis-Inspired Shrinking for Haskell (2023)

    Well-Typed Blog
    Company · last shared 2026
    Oleg Kiselyovokmij.org251 people

    How the OCaml type checker works (2022)

    Oleg Kiselyov
    Personal · last shared 2026
    Existential Typeexistentialtype.wordpress.com157 people

    Haskell Is Exceptionally Unsafe (2012)

    Existential Type
    Personal · last shared 2026
    Not a Monad Tutorialnotamonadtutorial.com40 people

    Weld: Accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM

    Not a Monad Tutorial
    Publication · last shared 2023
    FP Complete Blogfpcomplete.com201 people

    Monads and GATs in Nightly Rust

    FP Complete Blog
    Company · last shared 2025
    Lambda the Ultimatelambda-the-ultimate.org615 people

    Simon Peyton Jones Elected into the Royal Society Fellowship

    Lambda the Ultimate
    Publication · last shared 2026
    Alexis Kinglexi-lambda.github.io172 people

    Parse, Don’t Validate

    Alexis King
    Personal · last shared 2026
    Paul Khuongpvk.ca106 people

    SBCL: The Ultimate Assembly Code Breadboard

    Paul Khuong
    Personal · last shared 2026