pcz

Languages and libraries

standard library

SHOW HN2023

pcz

A new stdlib for Golang focusing on platform native support

github.com

#go stdlib#golang#no gc#platform native#wasm

154points
82comments
#396of 3,109 in 2023
Top 13%of 2023 by points

How HN took it

MixedNo clear lean

6 positive, 12 neutral or asking, 2 mixed, 10 critical, out of 30 comments about the project. Thread score -0.13.

Idea: 3 for, 8 againstDocs: 2 for, 2 againstDesign: 1 for, 0 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Clear non-goals and stated goals in the docs.

    From 1 comment
    • I love how they clearly state their goals at the beginning. This makes it immediately clear what it is about. Especially an importantly: "Non-Goals" "Change the way the Go team…
      weinzierl on HN

Objections

  • Unclear what the project is or replaces; goals seem unrelated.

    From 2 comments
    • I don't think the goals are explained very clearly. Or, to put it another way, after the goals were explained I still had no idea what it actually does or replaces.
      jonathanstrange on HN
    • I'm still a little confused after reading through the goals. It seems like there are a bunch of different unrelated goals: ``` - better js/wasm support - "platform native sdk" (I…
      assbuttbuttass on HN
  • Removing GC and goroutines removes what makes Go distinctive.

    From 3 comments
    • > No gc, No goroutines You're taking away what makes Go Go - you're now building something that turns Go into Pascal, perhaps unwittingly? Curly braces are what's left, basically.
      baq on HN
    • What is the point of Go without garbage collection and goroutines? You can use C.
      DeathArrow on HN
    • At risk of derailment isn’t this a much better fit for Rust? I am saying this as someone who has used both extensively professionally and prefer Go in most cases. If you’re…
      klabb3 on HN
  • Not a drop-in replacement for the official stdlib and not ABI-compatible with it.

    From 2 comments
    • I think the confusion is caused by the notion of a separate library that is also “stdlib” - which is the version that comes with the official distribution. This comment is the…
      jen20 on HN
    • Thank you for your suggestions, but I'm afraid the best we can do is to list packages compatible with both std. The problem is, in order to build a std, we have to use a lot of…
      Leotard6963 on HN

Requests

  • Clearer explanation of the project's goals and what it replaces.

    From 2 comments
    • I don't think the goals are explained very clearly. Or, to put it another way, after the goals were explained I still had no idea what it actually does or replaces.
      jonathanstrange on HN
    • I'm still a little confused after reading through the goals. It seems like there are a bunch of different unrelated goals: ``` - better js/wasm support - "platform native sdk" (I…
      assbuttbuttass on HN
  • Better explanation of the custom goroutine and scheduler design.

    From 1 comment
    • One of Go's big selling points is the avoidance of the "red-blue problem" (https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/). The standard Go…
      rogpeppe1 on HN

Questions

  • How goroutine-less concurrency works with FFI and blocking calls.

    From 2 comments
    • One of Go's big selling points is the avoidance of the "red-blue problem" (https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/). The standard Go…
      rogpeppe1 on HN
    • Can you expand more on the ffi piece? Using CGO has never been fun. Will this expose threads and allow for C interop that is easier to reason about? Can I dream of using this…
      maxmcd on HN
  • How memory is freed without GC.

    From 1 comment
    • One thing I do not understand is if there is no GC then how are stack allocated variables freed?in vanilla go there is no way to manually manage variable lifetime. Does this mean…
      ptsneves on HN
  • How it compares to Zig, V, Rust, or TinyGo.

    From 4 comments
    • I'm glad seeing this, but without GC and goroutines, then I'm wondering why not use something like Zig instead?
      ngrilly on HN
    • Goroutines was the selling point for me until they decided to introduce telemetry in their toolchain; that was what forced me to stop using Golang as a whole. About GC, I would…
      stefanos82 on HN
    • At risk of derailment isn’t this a much better fit for Rust? I am saying this as someone who has used both extensively professionally and prefer Go in most cases. If you’re…
      klabb3 on HN
    • > converge or diverge Neither, though the final result can be similar, but at project level, tinygo and pcz has very different approaches to achieve the final result: - tinygo…
      Leotard6963 on HN

Alternatives named

  • TinyGo

    From 1 comment
    • Reminds me of https://tinygo.org/ - a project that brings Golang to embedded devices, browser (wasm) contexts. Do you converge or diverge from that project?
      tbiehn on HN
  • Zig

    From 1 comment
    • I'm glad seeing this, but without GC and goroutines, then I'm wondering why not use something like Zig instead?
      ngrilly on HN
  • V

    From 1 comment
    • Goroutines was the selling point for me until they decided to introduce telemetry in their toolchain; that was what forced me to stop using Golang as a whole. About GC, I would…
      stefanos82 on HN
  • Rust

    From 1 comment
    • At risk of derailment isn’t this a much better fit for Rust? I am saying this as someone who has used both extensively professionally and prefer Go in most cases. If you’re…
      klabb3 on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/37744563)