XIAO ESP32C3 Multiple Software Serial Ports

In file included from C:\Arduino\TinyGPSPlus\KitchenSink\KitchenSink.ino:3:
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:282:26: error: 'Delegate' does not name a type
  282 |     void onReceive(const Delegate<void(), void*>& handler);
      |                          ^~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:282:34: error: expected ',' or '...' before '<' token
  282 |     void onReceive(const Delegate<void(), void*>& handler);
      |                                  ^
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:289:20: error: 'Delegate' has not been declared
  289 |     void onReceive(Delegate<void(), void*>&& handler);
      |                    ^~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:289:28: error: expected ',' or '...' before '<' token
  289 |     void onReceive(Delegate<void(), void*>&& handler);
      |                            ^
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:289:10: error: 'void EspSoftwareSerial::UARTBase::onReceive(int)' cannot be overloaded with 'void EspSoftwareSerial::UARTBase::onReceive(int)'
  289 |     void onReceive(Delegate<void(), void*>&& handler);
      |          ^~~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:282:10: note: previous declaration 'void EspSoftwareSerial::UARTBase::onReceive(int)'
  282 |     void onReceive(const Delegate<void(), void*>& handler);
      |          ^~~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:328:44: error: expected ';' at end of member declaration
  328 |     static inline uint32_t IRAM_ATTR ticks() ALWAYS_INLINE_ATTR {
      |                                            ^
      |                                             ;
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:328:46: error: 'ALWAYS_INLINE_ATTR' does not name a type; did you mean 'FORCE_INLINE_ATTR'?
  328 |     static inline uint32_t IRAM_ATTR ticks() ALWAYS_INLINE_ATTR {
      |                                              ^~~~~~~~~~~~~~~~~~
      |                                              FORCE_INLINE_ATTR
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:335:67: error: expected ';' at end of member declaration
  335 |     static inline uint32_t IRAM_ATTR microsToTicks(uint32_t micros) ALWAYS_INLINE_ATTR {
      |                                                                   ^
      |                                                                    ;
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:335:69: error: 'ALWAYS_INLINE_ATTR' does not name a type; did you mean 'FORCE_INLINE_ATTR'?
  335 |     static inline uint32_t IRAM_ATTR microsToTicks(uint32_t micros) ALWAYS_INLINE_ATTR {
      |                                                                     ^~~~~~~~~~~~~~~~~~
      |                                                                     FORCE_INLINE_ATTR
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:342:56: error: expected ';' at end of member declaration
  342 |     static inline uint32_t ticksToMicros(uint32_t ticks) ALWAYS_INLINE_ATTR {
      |                                                        ^
      |                                                         ;
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:342:58: error: 'ALWAYS_INLINE_ATTR' does not name a type; did you mean 'FORCE_INLINE_ATTR'?
  342 |     static inline uint32_t ticksToMicros(uint32_t ticks) ALWAYS_INLINE_ATTR {
      |                                                          ^~~~~~~~~~~~~~~~~~
      |                                                          FORCE_INLINE_ATTR
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:379:10: error: 'unique_ptr' in namespace 'std' does not name a template type
  379 |     std::unique_ptr<circular_queue<uint8_t> > m_buffer;
      |          ^~~~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:25:1: note: 'std::unique_ptr' is defined in header '<memory>'; did you forget to '#include <memory>'?
   24 | #include <circular_queue.h>
  +++ |+#include <memory>
   25 | #include <Stream.h>
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:380:10: error: 'unique_ptr' in namespace 'std' does not name a template type
  380 |     std::unique_ptr<circular_queue<uint8_t> > m_parityBuffer;
      |          ^~~~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:380:5: note: 'std::unique_ptr' is defined in header '<memory>'; did you forget to '#include <memory>'?
  380 |     std::unique_ptr<circular_queue<uint8_t> > m_parityBuffer;
      |     ^~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:390:10: error: 'unique_ptr' in namespace 'std' does not name a template type
  390 |     std::unique_ptr<circular_queue<uint32_t, UARTBase*> > m_isrBuffer;
      |          ^~~~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:390:5: note: 'std::unique_ptr' is defined in header '<memory>'; did you forget to '#include <memory>'?
  390 |     std::unique_ptr<circular_queue<uint32_t, UARTBase*> > m_isrBuffer;
      |     ^~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:391:11: error: 'Delegate' does not name a type
  391 |     const Delegate<void(uint32_t&&), UARTBase*> m_isrBufferForEachDel { [](UARTBase* self, uint32_t&& isrTick) { self->rxBits(isrTick); }, this };
      |           ^~~~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:392:10: error: 'atomic' in namespace 'std' does not name a template type
  392 |     std::atomic<bool> m_isrOverflow { false };
      |          ^~~~~~
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:25:1: note: 'std::atomic' is defined in header '<atomic>'; did you forget to '#include <atomic>'?
   24 | #include <circular_queue.h>
  +++ |+#include <atomic>
   25 | #include <Stream.h>
c:\Arduino\libraries\espsoftwareserial\src/SoftwareSerial.h:395:5: error: 'Delegate' does not name a type
  395 |     Delegate<void(), void*> m_rxHandler;
      |     ^~~~~~~~

exit status 1

Compilation error: exit status 1