• 7 Posts
  • 107 Comments
Joined 1 year ago
cake
Cake day: June 12th, 2023

help-circle
  • My bad, that’s on me, it looks like the C++ libraries I found use either templates or boost’s reflection. There might be a way to do it with macros/metaprogramming but I’m not good enough at C/C++ to know.

    I’m learning rust and C at the same time and was mixing up rust’s features with C’s. Rust’s answer to reflection is largely compile-time macros/attributes and I mistakenly assumed C’s attributes worked similarly since they have the same name.


  • See my other comment for more detials but it kind of destroys the type safety of the language. In Java for example, it lets you modify private/protected fields and call private/protected methods.

    It’s also slower than accessing a field normally since you need to do a string lookup (but slightly faster than a hashmap/dictionary) so if you use it over a large enough list it’ll cause slowdowns.

    Most use cases for it in Java/C# revolve around testing, serialization, and dynamic filtering/sorting. And most of those cases can be handled more safely using macros/attributes (EDIT: and templates as well, though those are also pretty painful to deal with) because that gets handled at compile-time in C/C++.


  • It’s pretty cool when you use it right but it’s also really easy to shoot yourself in the foot with, even by C++ standards. For example, in other languages (I’m coming from Java/C# which both have it) it lets you access private/protected fields and methods when you normally wouldn’t be able to.

    There’s also a noticeable performance penalty over large lists because you’re searching for the field with a string instead of directly accessing it.

    For the times it is necessary (usually serialization-adjacent or dynamic filtering/sorting in a table) to use reflection, it’s faster at runtime than converting an object to a dictionary/hashmap. However, 99% of time it’s a bad call.






  • That’s definitely true but at the same time why do people have to cause fights in the first place, they’re all part of a community for a game they enjoy playing :(

    I also agree with you on the sodium license change, it’s definitely the most reasonable of the ones I listed since the dev seemed to be getting maintainer burn-out and had some bad experiences with other people in the MC modding community. I don’t really like the idea of it not being OSS though because the key strength of that is not being tied to a single maintainer or group.



  • The lead developer changed the license to a much less permissive one because of drama surrounding being credited in modpacks. The dev thinks there are forks that exist solely to sidestep crediting the original mod, I’m not up to date enough on Minecraft modding lore to know if this is true or not.

    I’m pretty sure there’s also a fork that branches off of the last GPL commit but I forget what it’s called.