[HN Gopher] Circle: C++ Automation Language ___________________________________________________________________ Circle: C++ Automation Language Author : pjmlp Score : 72 points Date : 2021-10-16 10:29 UTC (12 hours ago) (HTM) web link (www.circle-lang.org) (TXT) w3m dump (www.circle-lang.org) | conradev wrote: | This project feels similar in spirit to Zig, which has robust | compile time evaluation and reflection. | | The cool part about Zig is that it uses this ability (via the | `comptime` keyword) to power it's generic system, and not vice | versa (looking at you, Turing complete type systems) | | https://ziglang.org/learn/overview/#generic-data-structures-... | dnautics wrote: | Technically comptime makes zig Turing complete (except that you | have a finite number of branches available to consume during | comptime). | gavinray wrote: | Ah yes, we've come full _" circle"_ and C++ has tacked on D's | metaprogramming and CTFE abilities. | gumby wrote: | This was an explicit design intent from early days of C++. I | remember discussing Lisp's macro capabilities with Stroustrup | back in the early 90s and him saying he had always wanted to | have that in C++ and templating was the first step. | | Shame it took so long to actually arrive. | [deleted] | pjmlp wrote: | Which reveals the problem D has finding any relevant niche, as | the community cannot decide into which direction to head into. | | Java and C# also have acquired many capabilities that for 10 | years were a plus from D over them. | a_t48 wrote: | This is really neat. I've done similar things with jinja | templates plus heavy use of c++ template magic - with the | downside that there's a bit of disconnect between the two | syntaxes. I'll have to keep an eye on this for the future. | wellwised123 wrote: | Why are the examples in C code rather idiomatic Modern C++? | justicezyx wrote: | This seems useful for code generation. Cannot relate this to any | previous problems I encountered using c++ | | Any other interesting use of this? | rahimiali wrote: | Imagine using this to build a balzingly fast serialization | library that you'd use like protobufs. Or to explore lots of | configurations of your code to search for the variant that runs | fastest. Or to write a linear algebra library that doesn't | generate temporary values that are dynamically allocated. | bialpio wrote: | Seems that it could be used to solve an old-time classic: | generate a mapping from an enum value to its string | representation. Another use case that comes to my mind is maybe | automating test case generation. Occasionally I was running | into situations where I thought code generation could be | useful, but not sure what could be a "killer app" equivalent | for this feature. | | Related topic: standardizing reflection in c++. | https://youtu.be/ARxj3dfF_h0 | https://en.cppreference.com/w/cpp/keyword/reflexpr | seanbax wrote: | Enum to string is a one-line expression in Circle: | https://godbolt.org/z/93f5o77zv | | Circle has dozens of special traits for accessing useful | stuff about types, packs, etc. Don't need to overengineer | such a simple thing. | ggrrhh_ta wrote: | that would be great :-) ___________________________________________________________________ (page generated 2021-10-16 23:00 UTC)