## Progress

### fixes the documentation of typeclasses

[closes #21536; fixes manual](https://github.com/nim-lang/Nim/pull/21552).

The parser has been changed, now you need to use `type RecordType = (tuple or 
object)` ro declare types classes starting with tuple or object instead of 
`type RecordType = tuple or object`.

### forbids using `system.any` for type conversions

[fixes #14255; Crash in compiler when using system.any by 
accident](https://github.com/nim-lang/Nim/pull/21562).
    
    
    var a = newSeq[bool](1000)
    if any(a):
      echo "ok?"
    
    
    Run

Now it gives proper an error message => "Error: illegal type conversion to 
'any'".

### fixes templates with untyped parameters resolve private fields wrongly in 
generics

[fixes #3770; templates with untyped parameters resolve private fields wrongly 
in generics](https://github.com/nim-lang/Nim/pull/21554).
    
    
    type
      Noice* = object
        hidden: int
    
    template jjj*: Noice =
      Noice(hidden: 15)
    
    
    Run
    
    
    # bug #3770
    import m3770
    
    doAssert $jjj() == "(hidden: 15)"  # works
    
    proc someGeneric(_: type) =
      doAssert $jjj() == "(hidden: 15)"
    
    someGeneric(int)
    
    
    Run

Now the example compiles.

### (WIP) adds compiler support for object construction shorthand

WIP [adds compiler support for object construction 
shorthand](https://github.com/nim-lang/Nim/pull/21559).
    
    
    type
      Vector = object
        a: int = 999
        b, c: int
    
    block: # positional construction
      ## It specifies all the unnamed fields
      var x = Vector(1, 2, 3)
      doAssert x.b == 2
    
    block:
      ## unnamed fields can be mixed with named fields
      block:
        var x = Vector(a: 1, 2, 3)
        doAssert x.c == 3
      
      block:
        var x = Vector(1, b: 2, 3)
        doAssert x.c == 3
      
      block:
        var x = Vector(1, 2, c: 3)
        doAssert x.c == 3
    
    block:
      ## Object variants support unnamed fields for tags, which should be known 
at the compile time.
      type
        Color = enum
          Red, Blue, Yellow
        Factor = object
          id: int
          case flag: Color
          of Red:
            num: int
          of Blue, Yellow:
            done: bool
          name: string
      
      block:
        var x = Factor(1, Red, 2, "1314")
        doAssert x.num == 2
      
      block:
        var x = Factor(1, Blue, true, "1314")
        doAssert x.done == true
      
      block:
        var x = Factor(1, Yellow, false, "1314")
        doAssert x.done == false
      
      
      type
        Ciao = object
          id: int
          case flag: bool = false
          of true:
            num: int
          of false:
            done: bool
          name: string
      
      block:
        var x = Ciao(12, false, false, "123")
        doAssert x.done == false
      
      block:
        var x = Ciao(12, flag: true, 1, "123")
        doAssert x.num == 1
    
    
    Run

## Weekly collection

<https://forum.nim-lang.org/t/9908> (2/19)

<https://forum.nim-lang.org/t/9940> (2/26)

<https://forum.nim-lang.org/t/9970> (3/5)

<https://forum.nim-lang.org/t/9989> (3/12)

<https://forum.nim-lang.org/t/10024> (3/19)

## Participating in contributions

Following [The Roadmap 2023 for community building 
](https://github.com/nim-lang/RFCs/issues/513), you could join us in [the 
matrix 
space](https://matrix.to/#/!ZmWXggMgfkKpcLbQkB:matrix.org?via=matrix.org) where 
we discuss how to build a community. We appreciate doable suggestions and 
helps, such as improving the workflow, implementing the roadmap, suggesting 
doable tasks, reviewing code from contributors. United we stand. We shall work 
together to make the community thrive.

## Sponsorship

Many thanks to @Yepoleb, @lenis0012, @pietroppeter, @Clonkk, @mode80, @Phil, 
@CxPlanner, @shirleyquirk, @elcritch, @geotre, @thinkwelltwd, @xrfez, 
@enthus1ast, @piertoni, @Dnanilem, @gemath for [sponsoring me on 
GitHub](https://github.com/sponsors/planety). 

Reply via email to