Unofficial mirror https://github.com/TinyCC/tinycc
531 karma · joined August 19, 2015
Unofficial mirror https://github.com/TinyCC/tinycc
https://www.youtube.com/watch?v=xt1KNDmOYqA is worth a watch.
Pixel 8 https://endoflife.date/pixel
Wonderful language!
Linters such as https://golangci-lint.run will do this for you.
You mean `curl.GLOBAL_ALL`, and it's for https://curl.se/libcurl/c/curl_global_init.html
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.
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.
Lazarus always looked good, so there's probably value there if having a GC isn't an issue.
Impossible also has a "Lite" version (which doesn't seem to exist near me) with 1g [4], although apparently it doesn't taste very good.
[0] https://fdc.nal.usda.gov/food-details/2514744/nutrients
[1] https://fdc.nal.usda.gov/food-details/2514743/nutrients
[2] https://www.beyondmeat.com/en-CA/products/the-beyond-burger/...
[3] https://faq.impossiblefoods.com/hc/en-us/articles/3600189392...
[4] https://impossiblefoods.com/beef/plant-based-impossible-beef...
My personal favourite is an ImGui wrapper https://github.com/AllenDang/giu
The most featureful is probably unison, although I'm uncertain if anyone uses it outside of their own project (https://gurpscharactersheet.com), meaning documentation will be sparse https://github.com/richardwilkes/unison
Gio uses a different way of thinking about GUIs, used by Tailscale and gotraceui https://gioui.org
Wails is great if you're familiar with development on the web https://wails.io
The GTK4 bindings also look nice https://github.com/diamondburned/gotk4
Cogent Core also looks neat, but I didn't have the time to play with it before I switched over to using the Odin programming language instead of Go https://www.cogentcore.org/core
I personally had nothing but issues with Fyne (especially in regard to performance, across multiple computers and operating systems), but it's probably the most popular option https://fyne.io
@(require) import "x_a"
@(require) import "x_b"
when ODIN_OS == .Windows { x :: x_a } else when ODIN_OS == .Linux { x :: x_b }
x.do_thing()
I remember believing these were important:
- methods (turned out I mainly wanted working intellisense, which Odin does even without methods)
- a package manager (still a gripe, but git submodules do the trick somewhat)
- expressions (so I could assign the result from a `switch` statement to a variable for instance, but I can use an #inline proc if I _really_ want to)
- private by default (I had forgotten how many times I wanted to use something private from a library, and had to fork it instead)
- - although possible to make something private in Odin, nowadays I'd rather things be prefixed with underscores instead
Also, here are my list of things I'd still prefer changed, but are less important: https://forum.odin-lang.org/t/what-features-of-odin-do-you-d...
Odin has all the features Go has (even struct tags https://odin-lang.org/docs/overview/#struct-field-tags), but adds:
- proper enums
- unions https://odin-lang.org/docs/overview/#unions
- built-in optional https://odin-lang.org/docs/overview/#maybet
- or_else/or_return/or_continue/or_break https://odin-lang.org/docs/overview/#or_else-expression (scroll down for the others)
- distinct types https://odin-lang.org/docs/overview/#distinct-types
- named arguments https://odin-lang.org/docs/overview/#named-arguments
- built-in matrix type https://odin-lang.org/docs/overview/#matrix-type
- built-in quaternions
- ternary operator, but you can use `bar := 1 if condition else 42` instead of ? and : if you'd like https://odin-lang.org/docs/overview/#ternary-operator
- default parameter values https://odin-lang.org/docs/overview/#default-values
- fantastic C integration
- forced in/exclusive range operators ..< and ..= https://odin-lang.org/docs/overview/#range-based-for-loop
- can get the zero value of any type using `{}` https://odin-lang.org/docs/overview/#zero-values
- defer if <condition> https://odin-lang.org/docs/overview/#defer-if
- explicit procedure overloading https://odin-lang.org/docs/overview/#explicit-procedure-over...
- bunch of vendored libraries https://pkg.odin-lang.org/vendor
- bit_set/bit_field https://odin-lang.org/docs/overview/#bit-sets https://odin-lang.org/docs/overview/#bit-fields
- proper slices (not the Go monster which combines a dynamic array along with slices) https://odin-lang.org/docs/overview/#slices
- `for x in xs` instead of `for _, x := range xs`, and `for &x in xs` if you want `x` to be addressable
- implicit selector expressions `.Member_Name` https://odin-lang.org/docs/overview/#implicit-selector-expre...
- parametric polymorphism with a ton of intrinsics https://odin-lang.org/docs/overview/#parametric-polymorphism
- - along with `where` clauses (similar to Rust) https://odin-lang.org/docs/overview/#where-clauses
Language cohesion has been _incredibly_ well thought out.
After several thousand lines, it proved all of my major worries incorrect, and has been an absolute pleasure.
It has since replaced my usage of Go, which I had been using since release.
I would highly recommend giving it a proper shot!
I wouldn't have believed it, but while testing out a server for a business, they deleted my account, and didn't reply when I emailed support about it.