{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":88188361,"defaultBranch":"master","name":"Arraymancer","ownerLogin":"mratsim","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-04-13T17:10:19.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/22738317?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1716926389.0","currentOid":""},"activityList":{"items":[{"before":"ba9dd187ebdfe24cd667508f263e4b4d9144c30b","after":"dcc9546fc791584ed4317be1aeef68d9248c4d6c","ref":"refs/heads/master","pushedAt":"2024-05-29T10:48:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Improve fix for issue 637 (#654)\n\n* Improve fix for issue #637 (https://github.com/mratsim/Arraymancer/issues/637)\r\n\r\nThe previous fix was incomplete. We could still assert if the input was an empty _tensor_.\r\n\r\nThis change also improves the handling of empty, rank-0 tensors. Up until now we would assert with the wrong message (talking about higher than rank-1 tensors not being supported). Now we don't assert and the code does the right thing.\r\n\r\n* Improve the docs of `append` (use a code block for the examples)","shortMessageHtmlLink":"Improve fix for issue 637 (#654)"}},{"before":"549472f55f90e489997c5d8c545ea0e244128144","after":"ba9dd187ebdfe24cd667508f263e4b4d9144c30b","ref":"refs/heads/master","pushedAt":"2024-05-28T19:59:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"update changelog, push v0.7.31","shortMessageHtmlLink":"update changelog, push v0.7.31"}},{"before":"ce971667b66133c0cd62b869569ed302d991fc3e","after":"549472f55f90e489997c5d8c545ea0e244128144","ref":"refs/heads/master","pushedAt":"2024-05-28T19:57:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Type check accessors `[]`, `[]=` and add `index_select` for multiple values (#653)\n\n* add code to perform type checking on `[]`, `[]=` accessors\r\n\r\n* clean up `index_fill` implementations by reusing common logic\r\n\r\n* add `index_fill` taking sequence / array / tensor\r\n\r\nTo allow\r\n\r\n```nim\r\nt[[0, 2]] = [1, 2] # optionally seq or tensor\r\nt[@[0, 2]] = [1, 2]\r\nt[toTensor [0, 2]] = [1, 2]\r\n```\r\n\r\nfilling multiple indices at same time from a array/seq/tensor.\r\n\r\nPreviously this only supported to set all indices given to the same value.\r\n\r\n* fix `replaceSymsByIdents` for non `nnkSym`\r\n\r\n* [tests] add test case for type safe accessor & index_select w/ seq/array\r\n\r\n* use `len` for both openArray and Tensor in selectors","shortMessageHtmlLink":"Type check accessors [], []= and add index_select for multiple …"}},{"before":"13af280c06da92f2cd773c8bdf2f1691ec6bbd66","after":"ce971667b66133c0cd62b869569ed302d991fc3e","ref":"refs/heads/master","pushedAt":"2024-05-26T11:33:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"update changelog, push v0.7.30\n\nAlso updates the wrong dates of the previous 2 tags :)","shortMessageHtmlLink":"update changelog, push v0.7.30"}},{"before":"534ea98c1ddd2012b276b6c6b6215b3f6e183df9","after":"13af280c06da92f2cd773c8bdf2f1691ec6bbd66","ref":"refs/heads/master","pushedAt":"2024-05-23T09:02:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Improve the performance of convolve (and correlate) (#650)\n\n* Improve the performance of convolve (and correlate)\r\n\r\nThe exising implementation of `convolve` (which is also used for `correlate`) was pretty slow. The slowness was due to the fact that we were using regular tensor element access in the inner loop of the convolution, which was very expensive.\r\n\r\nThe solution was to ensure that the input tensors were contiguous (by cloning them if necessary) and then using `unsafe_raw_buf` for all the tensor element accesses, which is safe because we know that the indexes are all within the tensor boundaries.\r\n\r\nOn my system this change makes a large convolution go from ~1.5 seconds in release mode and ~0.25 seconds in danger mode down to ~65 usecs in both modes (i.e. a x23 reduction in release mode and a x3.8 reduction in danger mode)!\r\n\r\n* Fix small typo in `gemm_strided` comment\r\n\r\n* Further improvements to the convolution / correlation speed by using GEMM\r\n\r\nChange the algorithm used to calculate the convolution and the correlation to one based on using the \"gemm\" blas operation. This is around 3 times faster than the previous \"fast\" algorithm for float and complex input tensors. For integer tensors this new algorithm is as fast as the previous algorithm. The reason it is not faster is that for integers we do not use BLAS' gemm function.\r\n\r\nBy using this new algorithm we were also able to add support for a new `down` argument for the `convolute` and `correlate` procedures. This will be useful to implement an efficient `upfirdn` function in the future.\r\n\r\nThis commit also adds many new tests for the `convolute` and `correlate` procedures. These are needed because to use the gemm based algorithm must handle differently the case in which the first input tensor is shorter than the second input tensor. Another set of tests are added because handling the different convolution / correlation modes using gemm is a bit tricky.\r\n\r\nThanks to @mratsim for the suggestion, and specially to @Vindaar for reviewing these changes and fixing multiple issues.\r\n\r\n* Add an upsample procedure\r\n\r\nThis basic procedure which is missing from Matlab complements the `down` argument of `convolve` and `correlate` (as well as the slicing syntax which can be used to downsample a tensor).","shortMessageHtmlLink":"Improve the performance of convolve (and correlate) (#650)"}},{"before":"2c4f2cd5dfd0d9c2eec10c6de9f6075d48ec5627","after":"534ea98c1ddd2012b276b6c6b6215b3f6e183df9","ref":"refs/heads/master","pushedAt":"2024-05-23T08:08:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Add versions of `toTensor` that take a type as their second argument (#652)\n\nThese are convenience functions which are equivalent to calling the regular `toTensor` followed by `asType`. This makes code that uses this relatively common idiom less verbose.","shortMessageHtmlLink":"Add versions of toTensor that take a type as their second argument (#…"}},{"before":"8faa9cea77db4724cfddc96d9828f7722b8fcdc3","after":"c77c0a90c78fc0434fe2c0c5101e68088d43bf29","ref":"refs/heads/gh-pages","pushedAt":"2024-05-12T14:01:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"b2027098cf2c1c06ad859b24b564340a4cc4d04f","after":"2c4f2cd5dfd0d9c2eec10c6de9f6075d48ec5627","ref":"refs/heads/master","pushedAt":"2024-05-12T13:53:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"More missing numpy and matlab (#649)\n\n* Add a `union` procedure\r\n\r\n`union` returns the unique, unsorted Tensor of values that are found in either of the two input Tensors.\r\n\r\nNote that an equivalent function exists both in `numpy` (where it is called `union1d`) and in `Matlab` (where it is called `union1d`). However, those functions always sort the output, while Arraymancer's version does not. To replicate the same behavior, simply apply `sort` to the output of this function.\r\n\r\n* Add a version of `toTensor` that takes SomeSet as its input\r\n\r\nThis will let us avoid having to convert HashSets into seqs before converting them into tensors.\r\n\r\nNote that this also improves a little the docstrings of a couple of the existing `toTensor` procedures.\r\n\r\n* Add an `intersection` procedure\r\n\r\n`intersection` returns the \"intersection\" of 2 Tensors as an unsorted rank-1 Tensor.\r\n\r\nNote that an equivalent function exists both in `numpy` (where it is called `intersect1d`) and in `Matlab` (where it is called `intersect`). However, those functions always sort the output, while Arraymancer's version does not. To replicate the same behavior, simply apply `sort` to the output of this function.\r\n\r\nAlso note that to implement this feature we moved (and made public) the existing, private toHashSet procedure from spatial/distances.nim into tensor/initialization.nim.\r\n\r\n* Add a `setDiff` procedure\r\n\r\n`setDiff` returns the (symmetric or non symmetric) \"difference\" between 2 Tensors as an unsorted rank-1 Tensor.\r\n\r\nNote that an equivalent function exists both in `numpy` (where it is called `setdiff1d`) and in `Matlab` (where it is called `setdiff`). However, those functions always sort the output, while Arraymancer's version does not. To replicate the same behavior, simply apply `sort` to the output of this function.\r\n\r\n* Add a `contains` function (and thus add support for `in` and `notin`)\r\n\r\n`find` (which is used to implement `contains`) was already supported (since `system.find` is generic and works with Tensors) but was untested, so this also adds a test for it.\r\n\r\n* Add support for `almostEqual`\r\n\r\nThis was a useful std/math function that we did not support yet.\r\n\r\n* Update src/arraymancer/laser/tensor/initialization.nim\r\n\r\nFix typo in export comment & add alternative for reader\r\n\r\n---------\r\n\r\nCo-authored-by: Vindaar ","shortMessageHtmlLink":"More missing numpy and matlab (#649)"}},{"before":"085a9acdce897d0673efea3957fbabd381184452","after":"8faa9cea77db4724cfddc96d9828f7722b8fcdc3","ref":"refs/heads/gh-pages","pushedAt":"2024-05-08T07:43:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"53afa73ff382d8bbf9e6071e2749c2290c1e0ba5","after":"b2027098cf2c1c06ad859b24b564340a4cc4d04f","ref":"refs/heads/master","pushedAt":"2024-05-08T07:35:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mratsim","name":"Mamy Ratsimbazafy","path":"/mratsim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22738317?s=80&v=4"},"commit":{"message":"Add Angel Ezquerra to contributors list (#651)","shortMessageHtmlLink":"Add Angel Ezquerra to contributors list (#651)"}},{"before":"091a1b9f1bc8372e0305c4484f2bf8599cdd5bda","after":"085a9acdce897d0673efea3957fbabd381184452","ref":"refs/heads/gh-pages","pushedAt":"2024-05-07T10:29:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"14486980c7bc46bd688467d80216d9a55844e3f3","after":"53afa73ff382d8bbf9e6071e2749c2290c1e0ba5","ref":"refs/heads/master","pushedAt":"2024-05-07T10:21:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Add `tile` and `repeat_values` procedures (#648)\n\n* Add a (set of) `repeat_values` procedures\r\n\r\nThese procedures let you repeat the values of a Tensor multiple times. This functionality exists both in numpy (`repeat`) and in Matlab (`repelem`).\r\nA different name was chosen here to avoid confusion with nim's `repeat` function, which behaves differently (it repeats the whole input sequence, like numpy's `tile` or Matlab's `repmat` functions), and to make the name more self explanatory.\r\n\r\nThere are two versions of this procedure (with multiple overloads):\r\n\r\n- One that repeats all values the same amount of times over a given axis.\r\n- One that repeats each value a different amount of times, but returns a rank-1 tensor.\r\n\r\nNote that the second one is implemented as 2 procs with different argument types (openArray[int] and Tensor[int]).\r\n\r\nI measured the performance using the timeit library. The results show that the performance is comparable to numpy's `repeat` function. In particular, a small example which takes numpy's `repeat` ~2-3 usec per iteration, takes ~4 usec in --d:release mode, and ~1-2 usec in --d:danger mode.\r\n\r\n* Add a `tile` procedure\r\n\r\nThis procedure lets you construct a new tensor by repeating the input tensor a number of times on one or more axes. This is similar to numpy's `tile` and Matlab's `repmat` functions.\r\n\r\nI measured the performance using the `timeit` library. The results show that the performance is comparable to (but not as good as) numpy's `tile`. In particular, a small example which takes numpy's `tile` ~3-4 usec per iteration, takes ~8-9 usec in --d:release mode, and ~5-6 usec in --d:danger mode.\r\n\r\nI believe that the performance could be improved further by preallocating the result Tensor before the tiling operation. The current implementation is not as efficient as it could be because it is based on calling `concat` multiple times, which requires at least as many tensor allocations (of increasing size).\r\n\r\n* fix docstring typo\r\n\r\n---------\r\n\r\nCo-authored-by: Vindaar ","shortMessageHtmlLink":"Add tile and repeat_values procedures (#648)"}},{"before":"93688e719bebc763a1271a1f584c1f30f21c3204","after":"091a1b9f1bc8372e0305c4484f2bf8599cdd5bda","ref":"refs/heads/gh-pages","pushedAt":"2024-04-17T08:46:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"05ae0498fab99ee47c41966a47eef5a13dd03cd6","after":"14486980c7bc46bd688467d80216d9a55844e3f3","ref":"refs/heads/master","pushedAt":"2024-04-17T08:38:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Add `unique` functions to algorithms.nim (#645)\n\nThese functions are similar to but not as fully featured as `numpy.unique`.\r\nThey are missing a way to count the number or returning the indexes of the unique elements.\r\nHowever, they make it possibel to (optionally) sort the output, or to use a more efficient algorithm if the input is already sorted.","shortMessageHtmlLink":"Add unique functions to algorithms.nim (#645)"}},{"before":"c438b6f3ee3ccbf0e8fba0a3b53cb0ec755f47d1","after":"93688e719bebc763a1271a1f584c1f30f21c3204","ref":"refs/heads/gh-pages","pushedAt":"2024-04-15T16:33:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"d21362a7fd3ee58eeeb9dcee02ec9bb6c1590eb5","after":"05ae0498fab99ee47c41966a47eef5a13dd03cd6","ref":"refs/heads/master","pushedAt":"2024-04-15T16:25:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"push v0.7.29","shortMessageHtmlLink":"push v0.7.29"}},{"before":"9f0ba2cbac377a9dd6ea8cea5b0ff6e689bfafa3","after":"c438b6f3ee3ccbf0e8fba0a3b53cb0ec755f47d1","ref":"refs/heads/gh-pages","pushedAt":"2024-04-15T09:39:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"3e9f368486f58dc96121bc99a76fb2f578845673","after":"9f0ba2cbac377a9dd6ea8cea5b0ff6e689bfafa3","ref":"refs/heads/gh-pages","pushedAt":"2024-04-15T09:36:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"9867253974559413ba85840973e94f623a1c3087","after":"d21362a7fd3ee58eeeb9dcee02ec9bb6c1590eb5","ref":"refs/heads/master","pushedAt":"2024-04-15T09:32:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Add `reshape_infer` procedure (#646)\n\nUnlike numpy, `reshape` does not support having dimensions with value -1 to infer their value. To do so a new `reshape_infer` is added.\r\n\r\nThis is added as a separate procedure to avoid the (small) cost this adds on top of the usual reshape (which could be called relatively frequently).","shortMessageHtmlLink":"Add reshape_infer procedure (#646)"}},{"before":"2ff2431e6ff2939d3e750cd26c70e782561bc261","after":"9867253974559413ba85840973e94f623a1c3087","ref":"refs/heads/master","pushedAt":"2024-04-15T09:28:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Missing special matrices (#647)\n\n* Add `circulant` special matrix\r\n\r\nA circulant matrix is a square matrix in which each column (or row) is a cyclic shift of the previous column (or row). This is missing from numpy / scipy.\r\n\r\n* Add way to construct hankel matrices\r\n\r\nA Hankel matrix has constant anti-diagonals, with c as its first column and r as its last row (note that `r[0]` is ignored but _should_ be the same as `c[^1])`. This was missing from numpy / scipy.\r\n\r\n* Add way to construct toeplitz matrices\r\n\r\nA Toeplitz matrix has constant diagonals, with c as its first column and r as its first row (note that r[0] is ignored but should be the same as c[^1]). This was missing from numpy / scipy.\r\n\r\nThere is also a single input version.","shortMessageHtmlLink":"Missing special matrices (#647)"}},{"before":"e80ffe1c3ff9c33d247ca07d71363d8e2f67803e","after":"3e9f368486f58dc96121bc99a76fb2f578845673","ref":"refs/heads/gh-pages","pushedAt":"2024-03-26T11:40:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"d6acd3a93875e067f9f1da2750ee22b4cc632eba","after":"2ff2431e6ff2939d3e750cd26c70e782561bc261","ref":"refs/heads/master","pushedAt":"2024-03-26T11:32:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"properly gensym shim templates in p_accessors (#642)\n\nFor code like:\r\n\r\n```nim\r\nwhen foo():\r\n let data = ...\r\nelse:\r\n template data: untyped = ...\r\n```\r\n\r\nin a template, since the `let data` is automatically gensym'd, the `template data` must also be marked as `gensym`, since routines are injected by default in templates. Due to a bug in the Nim compiler (https://github.com/nim-lang/Nim/issues/23326) the `template data` here was forced to being gensym due to the previous `let data` symbol. This behavior might not change, but the `template data` can be marked as gensym anyway for clarity.","shortMessageHtmlLink":"properly gensym shim templates in p_accessors (#642)"}},{"before":"25eb446e123691283664f188e4a84848d631d550","after":"e80ffe1c3ff9c33d247ca07d71363d8e2f67803e","ref":"refs/heads/gh-pages","pushedAt":"2024-03-26T08:59:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"ec90c0d12fce8f1d9a217fda71a88c8364217298","after":"d6acd3a93875e067f9f1da2750ee22b4cc632eba","ref":"refs/heads/master","pushedAt":"2024-03-26T08:52:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Fix \"imported and not used: 'datatypes' [UnusedImport]\" warning (#644)\n\nThe warning is fixed by only importing KnownSupportsCopyMem from datatypes when in nimdoc mode.","shortMessageHtmlLink":"Fix \"imported and not used: 'datatypes' [UnusedImport]\" warning (#644)"}},{"before":"4f39a9cb3d2c953533879a157e2b5af22c534b48","after":"25eb446e123691283664f188e4a84848d631d550","ref":"refs/heads/gh-pages","pushedAt":"2024-03-22T11:06:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}},{"before":"9cf5b41083083266e038f6d2dab25474f95bd70c","after":"ec90c0d12fce8f1d9a217fda71a88c8364217298","ref":"refs/heads/master","pushedAt":"2024-03-22T10:59:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"reinsert `KnownSupportsCopyMem` in `gemm` for docgen (#641)","shortMessageHtmlLink":"reinsert KnownSupportsCopyMem in gemm for docgen (#641)"}},{"before":"7ad99037e4d8ef4db6aeaf4d3cc75fe6f32b1320","after":"9cf5b41083083266e038f6d2dab25474f95bd70c","ref":"refs/heads/master","pushedAt":"2024-03-22T09:00:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Fix issue 639 (#640)\n\n* Make newTensorUninit[T]() create a rank-1 empty tensor\r\n\r\nSimilar to same change done to `newTensor` on the previous commit.\r\n\r\n* Make newTensor[T]() create a rank-1 empty tensor\r\n\r\nUp until now calling newTensor without arguments would create a rank-0 tensor which does not work well (e.g. it reports its size as size 0)! Instead we now create a rank-1 empty tensor when no shape is provided.\r\n\r\nIt is still possible to explicitly create a rank-0 tensor by explicitly passing an empty shape (i.e. `[]`) to newTensor (e.g. `newTensor[float]([])`). This can be useful to create \"sentinel\" values for procedures that take tensors as arguments.\r\n\r\n* Fix issue #639 (`size` returns 1 for rank-0 tensors)\r\n\r\nThis fixes https://github.com/mratsim/Arraymancer/issues/639.\r\n\r\nWhile this adds an extra check to `size` which might be called frequently, I have not seen a major difference on several of the benchmarks.","shortMessageHtmlLink":"Fix issue 639 (#640)"}},{"before":"115dacca2d8476241e586eef0acbe5e08df2eabf","after":"7ad99037e4d8ef4db6aeaf4d3cc75fe6f32b1320","ref":"refs/heads/master","pushedAt":"2024-03-22T08:59:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Add a few more items to .gitignore (#636)","shortMessageHtmlLink":"Add a few more items to .gitignore (#636)"}},{"before":"454c8fe7bf33b401b88fd8d65286f32b97aee132","after":"115dacca2d8476241e586eef0acbe5e08df2eabf","ref":"refs/heads/master","pushedAt":"2024-03-22T08:58:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Vindaar","name":null,"path":"/Vindaar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7742232?s=80&v=4"},"commit":{"message":"Some warning removals (#635)\n\n* Remove \"A custom '=destroy' hook which takes a 'var T' parameter is deprecated\" warning from tensor\\datatypes.nim\r\n\r\nNote that there is still another similar warning left in:\r\n\r\n\\laser\\primitives\\matrix_multiplication\\gemm_tiling.nim(321, 3)\r\n\r\n* Fix typo in comment\r\n\r\n* Fix several `imported and not used [UnusedImport]` warnings\r\n\r\nIn particular:\r\n- Warning: imported and not used: 'datatypes'\r\n- Warning: imported and not used: 'complex'\r\nWarning: imported and not used: 'math'\r\n\r\n* Remove a ` conversion from string to itself` hint\r\n\r\nRemoved from `examples\\ex06_shakespeare_generator.nim`.\r\n\r\n* Remove `Deprecated since 1.5; TaintedString is deprecated` warning\r\n\r\n* Do not crash when no argument is passed to ex06_shakespeare_generator\r\n\r\n* Disable the remaining `'=destroy' hook which takes a 'var T' parameter is deprecated` warning\r\n\r\nWe cannot really fix that warning because it is due to the fact that (as for 2.0.2) nim creates a var destructor when `new X, T` is called. Since we cannot fix it we simply disable it.\r\n\r\n* Normalize all std imports to use `import std / xxx`\r\n\r\nThis also removes a few unnecessary imports of the complex and math modules (which are automatically exported by arraymancer). The test touches a lot funtions but the changes are minimal and simple (basically changing things like `import unittest, os` into `import std / [unittest, os]` and so on).\r\n\r\n* Remove `imported and not used: 'sequninit' [UnusedImport]` warning\r\n\r\nThis warning only happens with devel. The fix is to make sequninit.nim \"used\" when newSeqUninit is not needed.","shortMessageHtmlLink":"Some warning removals (#635)"}},{"before":"490dc8eb7e7e544c8827b5b713ad065375c75441","after":"4f39a9cb3d2c953533879a157e2b5af22c534b48","ref":"refs/heads/gh-pages","pushedAt":"2024-03-21T10:43:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Deploy to GitHub pages","shortMessageHtmlLink":"Deploy to GitHub pages"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVtNLkAA","startCursor":null,"endCursor":null}},"title":"Activity · mratsim/Arraymancer"}