> I think it doesn’t cost us much to briefly discuss new language features 
> before using them.
I had that thought as well but on balance my intuition was there were enough 
new features that the volume of discussion to do that would be a poor 
cost/benefit compared to the "lazy consensus, revert" approach.

So if I actually do the work required to have an opinion ;):
https://docs.oracle.com/en/java/javase/21/language/java-language-changes-release.html#GUID-6459681C-6881-45D8-B0DB-395D1BD6DB9B

JDK21:
- Record Patterns 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=GUID-7623D3AD-4141-4914-A384-60C65BD0C010>
- Pattern Matching for switch Expressions and Statements 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=GUID-E69EEA63-E204-41B4-AA7F-D58B26A3B232>
- String Templates 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=GUID-78F545D3-CDD0-415C-9B4B-6EF361D184F5>
- Unnamed Patterns and Variables 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=GUID-D54E1CF1-BDFD-4B57-8A6E-5B4C87F4D58A>
- Unnamed Classes and Instance Main Methods 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase21&id=GUID-35544A22-61AB-4928-99BB-A9DD1CA062FF>
JDK17:
- Sealed Classes 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase17&id=GUID-0C709461-CC33-419A-82BF-61461336E65F>
JDK16:
- Pattern Matching for instanceof 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase16&id=GUID-843060B5-240C-4F47-A7B0-95C42E5B08A7>
JDK15:
- Text Blocks 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase15&id=GUID-221D06A2-FF54-4DB3-A6DA-179B8F76DB05>
JDK14:
- Switch Expressions 
<https://docs.oracle.com/pls/topic/lookup?ctx=javase14&id=GUID-BA4F63E3-4823-43C6-A5F3-BAA4A2EF3ADC>
JDK11:
- Local Variable Type Inference 
<https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html#GUID-D2C58FE6-1065-4B50-9326-57DD8EC358AC>
 (test only, not prod code is where we landed)

Assuming we just lazily evaluate and deal with new features as people* actually 
care about them* and seeing them add value, a simple "[DISCUSS] I'm thinking 
about using new language feature X; any objection?" lazy consensus that we then 
dumped onto a wiki article / code style page as "stuff we're good to use" would 
probably be fine?


On Fri, May 9, 2025, at 7:58 AM, Benedict wrote:
> 
> I think it doesn’t cost us much to briefly discuss new language features 
> before using them. Lambdas, Streams and var all have problems - and even with 
> the guidance we publish some are still misused.
> 
> The flow scoping improvement to instanceof seems obviously good though.
> 
> 
>> On 9 May 2025, at 12:30, Josh McKenzie <jmcken...@apache.org> wrote:
>> 
>> For new feature work on trunk, targeting the highest supported language 
>> level featureset (jdk17 right now, jdk21 within the next couple of weeks) 
>> makes sense to me. For bugfixing, targeting the oldest supported GA branch 
>> and the highest language level that works there would allow maximum 
>> flexibility with minimal re-implementation.
>> 
>> If anyone has any misgivings with certain features (i.e. the debate around 
>> usage of "var") they can bring it up on the dev ML and we can adjust, but 
>> otherwise I'd prefer to see us have more modern evolving options on how 
>> contributors engage rather than less.
>> 
>> On Fri, May 9, 2025, at 1:56 AM, Vivekanand Koya wrote:
>>> Hello,
>>> 
>>> I want to understand the community's thoughts on using newer features (post 
>>> JDK11) in upcoming releases in Cassandra. An example is flow scoping 
>>> instead of explicitly casting types with instanceOf: 
>>> https://openjdk.org/jeps/395. I want your thoughts on JDK requirements for 
>>> the main Cassandra repository, Accord, and Sidecar. 
>>> 
>>> Much appreciated.
>>> Thanks,
>>> Vivekanand K.  
>> 

Reply via email to