CodeJam icon indicating copy to clipboard operation
CodeJam copied to clipboard

[Umbrella] Rewamping the library

Open ig-sinicyn opened this issue 2 years ago • 6 comments

I'm going to spend some time in order to revive the project and release a new major version.

The primary goals are the following (issues/PRs to be linked).

  • [ ] (#153) Remove dead code (CodeJam.PerfTests). There's git history so we may revive it at any moment
  • [ ] (#154) move all build artifacts (bin and obj dirs) into root .artifacts directory. The change is going to happen with .net 8 anyways, so I'll just speed it up :)
  • [ ] Update multitargeting subsystem. I'm going to make a new approach and use reusable MsBuild .targets / .props files. As a side bonus I do expect to have much more readable csproj files
  • [ ] (#154) Update Appveyor pipelines. As it turns out the scripts may be simplified a lot. Also, I've managed to add target framework annotations to the test results (this helps a lot if build fails).
  • [ ] Remove unused dependencies (looks like we do not need ComponentModel.DataAnnotations dependency except for some enum helpers).
  • [ ] (#155) Add a new package publish scripts

As a preview, there's experimental repo with proofcode for points 2-4. Things to note:

FYI @andrewvk @NN--- . If needed, we can make a call and improve the roadmap.

ig-sinicyn avatar Aug 24 '23 18:08 ig-sinicyn

It seems like Theraot is not so maintained. So there is some missing functionality thee, the coverage for new .NET features is not as good as it could be. Tried to contact the maintainer but didn't have any luck.

NN--- avatar Aug 24 '23 18:08 NN---

Yeah, I've managed to remove dependency on Theraot from most target frameworks except for net35 and net40. image

ig-sinicyn avatar Aug 24 '23 18:08 ig-sinicyn

Ah. Great. There is a modern solution for new features using source generators for .NET Standard 2.0 and above.

NN--- avatar Aug 24 '23 18:08 NN---

There is a modern solution for new features using source generators for .NET Standard 2.0 and above.

Well, never heard of that^) Do you mean some package/project or it's more like an idea to be done? If the latter, it's simpler to use source-only packages such as Nullable. Sadly, there's not so many usable ones.

As for source generators, I'd prefer to not use them unless absolutely mandatory. Source generators are hard to maintain and they are much more verbose than good old undead T4.

ig-sinicyn avatar Aug 24 '23 19:08 ig-sinicyn

https://www.meziantou.net/polyfills-in-dotnet-to-ease-multi-targeting.htm

Here the list. Yeah T4 is nice but Source Generators are better integrated today.

NN--- avatar Aug 25 '23 07:08 NN---