Hacker Newsnew | past | comments | ask | show | jobs | submit | thegeekpirate's commentslogin

There's a fork which has been continually worked on https://repo.or.cz/w/tinycc.git

Unofficial mirror https://github.com/TinyCC/tinycc


You can require allocations in Odin to be explicit using `#+vet explicit-allocators`


> Google for one updates their devices for 7 years since Pixel 6

Pixel 8 https://endoflife.date/pixel


If I don't misunderstand you, you're suggesting the Pixel 8 line is shown red/discontinued? If that's it, you're probably on a mobile browser which might cut off right after the Discontinued column. The table goes on next to that where you'll see that all Pixels since 6 are currently still supported.

Pixel 8 line:

> Ends in 4 years and 10 months (01 Oct 2030)


You misunderstood. He’s saying that Google provides 7 years of device updates only for the Pixel 8 and later. That’s true: Pixel 6 and Pixel 7 only get 5 years of updates.

Pixel 7:

> Ends in 1 year and 10 months (01 Oct 2027)

Pixel 6:

> Ends in 10 months (01 Oct 2026)


Ah, that makes more sense. Thanks for clearing that up.


Pixel 8 updates end in 2030. Or did you think the 7 years of updates didn't apply to it?


I replied to a poster who said the seven years of updates began with the Pixel 6 with "Pixel 8" and a link which showed when support expires on these devices, because... it began with the Pixel 8, not 6.


Completely replaced Go for me after using Go since inception.

Wonderful language!


Is there a GC/equivalent, or you do manual memory management?


There's a GC library around somewhere, but I doubt anyone uses it. Manual memory management is generally quite simple, as long as you aren't using archaic languages.

https://www.youtube.com/watch?v=xt1KNDmOYqA is worth a watch.


Press "y" before linking to a Github file/line to ensure it stays accurate https://github.com/ublue-os/bazzite/blob/5e8f61a56ca3da02778...


I had no idea there was a hotkey for that. Thank you!


Even better, doing so allows GitHub to insert a source snippet if you paste a link like that into an issue or comment.


Yeah, I just always used the context windows to set permalink. Saves me a step now!


My pleasure!


This is cool, but also broken. If you click "raw" after pressing y without reloading, the link is still to a tag/branch.


What do you mean by "to ensure it stays accurate"? Why wouldn't it be accurate if you're just copy-pasting the link?


is the link to the file as it exists on "main" currently, or at a specific revision, so in three years, it will still refer to that version of the file?


4,000 is perfect.


> exhaustive checks for sum types

Linters such as https://golangci-lint.run will do this for you.


Odin's even better than that—you can only use `0..<5` and `0..=5`, so there's never any ambiguity whatsoever.


> Back to the CURL prefix, what is wrong with it?

It prevents stuttering when using it `curl.CURL_*`.

> What would the "CURL" distinct type be without the CURL prefix?

`CURL` isn't a prefix there.

Take more time to think things through.


I did, thank you. Please explain why would anyone (end user of library) ever want "curl.CURL_GLOBAL_ALL", for example? If anything, it should be private. If you really want to go there, sure. I think it is YOU who should think things through. I get that you are filled with hatred, but come on man. Think. Why would anyone want to call "curl.CURL_GLOBAL_ALL" from a binding which is supposed to be used as a high-level curl library? If it is possible (I have no idea) to make it private, then it should be made private. It is not intended to be used by the users of the library, is it? The higher level functions are the ones supposed to be used by them, and they seem to be named correctly from a quick glance.

If you reply, do so without ad hominems and with some respect. Thank you.


Last question I'll answer, because you aren't doing any of this is good faith.

You mean `curl.GLOBAL_ALL`, and it's for https://curl.se/libcurl/c/curl_global_init.html


  // CURL_GLOBAL_ALL combines all initialization flags.
  CURL_GLOBAL_ALL: i64 = 3
It has nothing to do with "curl_global_init()". This - which is a high-level function intended to be called by the users of the library - has:

  init :: proc() -> (ok: bool) {
    return curl_global_init(CURL_GLOBAL_ALL) == 0
  }
As you can see, higher-level function calls low-level function. The higher-level function does not have "curl" as the prefix.

My question still stands and has not been answered.


Far too complex, Odin (my favorite language for writing apps in) would align more with minimalistic values.

Lazarus always looked good, so there's probably value there if having a GC isn't an issue.


Lazarus does not have a GC AFAIK, it's manual-free.


It does seem like they somewhat do now, as of the last several years https://wiki.lazarus.freepascal.org/management_operators

From https://news.ycombinator.com/item?id=19100760 since I'm not a Pascal user:

> The change we're talking about automatically invokes Initialize and Finalize on all types for dynamic allocations / destruction, unless they intentionally circumvent it. Intentional circumvention might include allocating raw memory in a class and treating the class like an array with an index property. In other words, if you declare a raw pointer, allocate untyped memory (e.g. bytes), and handle something back from that memory using a typecast, then you are bypassing automatic allocation and destruction.

> All other ways to make space for complex types (records and classes) as well as types which may hold complex types (arrays and nested fields) will safely and reliably use Initialize and Finalize when needed if they are defined.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: