Overview
Deprecated
7 min
a general rule of thumb is if works in c# it works in shift except for those 45,000 "features" of c# that are being sunset and are not supported in shift some common rationales niche nothing wrong with the feature/function/mechanics but very small footprint or use case currently not planned to be implemented to reduce the breadth of the language entirely open for being included at a latter time often if this feature was introduced it may be reimagined/tinkered with and not identical to how it behaves in c# any thoughts/considerations if it was introduced may accompany the niche definition relic a part of c# that i feel shouldn't exist anymore because a similiar or better effect can be achieved via an alternative path blocked intentionally intended to be never implemented as mentioned in the philosophy section, if you desparate need this functionality you can achieve it via a bound c# assembly, since all c# libraries are consumable in shift these features and a general thought on why is listed below general checked niche niche having math work differently inside of the block is ugly const niche niche there currently are no field modifiers so this would break that convention maybe ok? delegate relic relic unnecessary with the introduction of method\<p,r> never to be introduced as the generic variant is preferred event relic relic succeeded by the event class no need to be a keyword since the event keyword has been removed these aren't needed add remove extern niche niche likely will think up a more first class binding feature for interopt if directly supported extern alias niche niche never encountered use of this once fixed blocked blocked unsafe code will not be part of shift global niche/blocked blocked? but maybe niche feels unmanaged to me goto blocked blocked this was bad day 1 lock niche niche do we really need this with semaphoreslim existing? not against reintroducing managed blocked unsafe code nameof relic strongly typed reflection makes this unnecessary null blocked blocked null will not exist use nullable\<t> instead out blocked blocked partial blocked blocked no spliting definitions autogenerated code is evil too readonly relic relic different type classes provide this functionality ref blocked blocked there is no pass by value in shift, so ref is never needed sealed blocked blocked you should never be unable to derive from a class sizeof blocked blocked safe but only needed with unsafe code stackalloc blocked unsafe static relic relic achievable with libraries + records typeof relic relic type definitions already are type instances in c#, no need to wrap with the typeof() operator unchecked blocked blocked unsafe unmanaged blocked blocked unsafe unsafe blocked blocked unsafe virtual blocked blocked intentional to stop derived variants changing base behavior volatile niche niche modifier conversation properties at the moment properties as syntactic sugar are not supported instead use the property\<t,g,s> service this is currently intentional to make it more obvious that side effects are in play with data storage this means these keywords aren't available get set value init linq query syntax at the moment query syntax is not supported this is purely time/complexity driven secondarily having an embedded dsl inside of the language feels wrong open for being reintroduced as c# has it or in another form down the road this means that these keywords aren't available ascending descending equals from group into join let on orderby select access modifiers there are no access modifiers in shift everything is public by design this means that these keywords aren't available public internal protected private reflection reflection has been completely overhauled in general the entire interface for reflection and how type in c# works, is different in shift see docid\ kngfmkpqangqkwzjdnkjc for more context
