C++ 中文周刊 第71期

2022-09-08 12:05:12 浏览数 (2)

C 中文周刊 第71期

从reddit/hackernews/lobsters/meetingcpp摘抄一些c 动态

周刊项目地址|在线地址 |知乎专栏

腾讯云 社区

弄了个qq频道,手机qq点击进入

欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue

2022 07 15


资讯

CPPcon 2022要开始了。2021我还没有看完

标准委员会动态/ide/编译器信息放在这里

编译器信息最新动态推荐关注hellogcc公众号 本周更新 2022-07-13 第158期

文章

  • C 异步:structured concurrency实现解析

值得一看

  • C 异步:libunifex的scheduler实现!

值得一看

  • asio如何处理eof错误

了解一下asio的背景

  • C 20 约束 constraint 元对象化: detector 设计模式

上面这四篇都是purecpp公众号的。大家也可以去公众号看看

  • Programming PCA From Scratch In C
  • Calculating SVD and PCA in C

感兴趣的看下吧。数学和图形学?看不懂

  • Processing a ValueSet or PropertySet even in the face of possible mutation, part 1
  • Processing a ValueSet or PropertySet even in the face of possible mutation, part 2
  • Processing a ValueSet or PropertySet even in the face of possible mutation, part 3

手把手教你写代码,考虑各种场景

  • New std::optional Checks in Visual Studio 2022 version 17.3 Preview 3

介绍msvc特性

  • Filtering numbers faster with SVE on Graviton 3 processors

arm的特性。现在arm的机器越来越多了。省钱 代码长这样。有兴趣的可以看看,我看不懂

代码语言:javascript复制
void remove_negatives(const int32_t *input, int64_t count, int32_t *output) {
  int64_t j = 0;
  const int32_t* endPtr = input   count;
  const uint64_t vl_u32 = svcntw();

  svbool_t all_mask = svptrue_b32();
  while(input <= endPtr - (4*vl_u32))
  {
      svint32_t in0 = svld1_s32(all_mask, input   0*vl_u32);
      svint32_t in1 = svld1_s32(all_mask, input   1*vl_u32);
      svint32_t in2 = svld1_s32(all_mask, input   2*vl_u32);
      svint32_t in3 = svld1_s32(all_mask, input   3*vl_u32);

      svbool_t pos0 = svcmpge_n_s32(all_mask, in0, 0);
      svbool_t pos1 = svcmpge_n_s32(all_mask, in1, 0);
      svbool_t pos2 = svcmpge_n_s32(all_mask, in2, 0);
      svbool_t pos3 = svcmpge_n_s32(all_mask, in3, 0);

      in0 = svcompact_s32(pos0, in0);
      in1 = svcompact_s32(pos1, in1);
      in2 = svcompact_s32(pos2, in2);
      in3 = svcompact_s32(pos3, in3);

      svst1_s32(all_mask, output   j, in0);
      j  = svcntp_b32(all_mask, pos0);
      svst1_s32(all_mask, output   j, in1);
      j  = svcntp_b32(all_mask, pos1);
      svst1_s32(all_mask, output   j, in2);
      j  = svcntp_b32(all_mask, pos2);
      svst1_s32(all_mask, output   j, in3);
      j  = svcntp_b32(all_mask, pos3);

      input  = 4*vl_u32;
  }

  int64_t i = 0;
  count = endPtr - input;

  svbool_t while_mask = svwhilelt_b32(i, count);
  do {
    svint32_t in = svld1_s32(while_mask, input   i);
    svbool_t positive = svcmpge_n_s32(while_mask, in, 0);
    svint32_t in_positive = svcompact_s32(positive, in);
    svst1_s32(while_mask, output   j, in_positive);
    i  = svcntw();
    j  = svcntp_b32(while_mask, positive);
    while_mask = svwhilelt_b32(i, count);
  } while (svptest_any(svptrue_b32(), while_mask));
}
  • Clang Debugging C Coroutines

目测协程还是不太成熟,clang的文档可以看看

  • Notes: folly::ThreadLocalPtr

讲folly实现的。值得一看

  • The magic of bits “Bitwise”

讲位运算的。不如看hacker‘s delight

视频

  • C Weekly- Ep 332 - C Lambda vs std::function vs Function Pointer

抽象程度 std::function callable,是个能存的对象,能存lambda lambda只是一个能call的对象。右值。比函数对象能灵活点,匿名函数对象 函数指针也是个能存的,但是比std::function残废,不能保存有状态的lambda,比如有捕获的lambda

  • Many an any - Alisdair Meredith - ACCU 2022

手把手教你写any

  • Principia Mathematica: The Foundations of Arithmetic in C - Lisa Lippincott - CppNow 2022

讲的整型约束。这个在cppcoin 2021上讲过。听不动。很困

开源项目需要人手

  • asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群384042845和作者对线
  • pika 一个nosql 存储, redis over rocksdb,非常需要人贡献代码胖友们, 感兴趣的欢迎加群294254078前来对线

新项目介绍/版本更新

  • unordered_dense hashmap实现,flatmap
  • tinylisp 99行c实现lisp

工作招聘

有没有小卖铺缺收银员


看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!

本文永久链接

代码语言:txt复制
     This site is open source. [Improve this page](https://github.com/wanghenshui/cppweeklynews/edit/dev/posts/071.md).

0 人点赞