{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":1257084,"defaultBranch":"master","name":"phobos","ownerLogin":"dlang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2011-01-15T07:00:06.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/565913?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714072271.0","currentOid":""},"activityList":{"items":[{"before":"4b2ea30979d3cc48f39ea5b7119004ace6df96ac","after":"54eb95c139e09f6e7f8da3beed8407817ba184c1","ref":"refs/heads/master","pushedAt":"2024-04-26T05:07:35.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"ibuclaw","name":"Iain Buclaw","path":"/ibuclaw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/397929?s=80&v=4"},"commit":{"message":"Merge pull request #8988 from ibuclaw/merge_stable\n\nmerge stable","shortMessageHtmlLink":"Merge pull request #8988 from ibuclaw/merge_stable"}},{"before":"e669d3ec6ccdfed47a5e9b52f1bcc03ae8164140","after":"4b2ea30979d3cc48f39ea5b7119004ace6df96ac","ref":"refs/heads/master","pushedAt":"2024-04-22T14:29:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thewilsonator","name":"Nicholas Wilson","path":"/thewilsonator","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6802489?s=80&v=4"},"commit":{"message":"Remove std.conv import from createStorageAndFields","shortMessageHtmlLink":"Remove std.conv import from createStorageAndFields"}},{"before":"375f738b0c797c5730b89c40403febaf0d61dff8","after":"e669d3ec6ccdfed47a5e9b52f1bcc03ae8164140","ref":"refs/heads/master","pushedAt":"2024-04-22T09:39:58.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"dkorpel","name":"Dennis","path":"/dkorpel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14114684?s=80&v=4"},"commit":{"message":"Merge pull request #8985 from dkorpel/bigint-remove-subsimple\n\nstd.bigint: remove subSimple","shortMessageHtmlLink":"Merge pull request #8985 from dkorpel/bigint-remove-subsimple"}},{"before":"eca29522551f321e33a536d2758bcd19c73aff2e","after":"375f738b0c797c5730b89c40403febaf0d61dff8","ref":"refs/heads/master","pushedAt":"2024-04-21T22:57:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add FieldNames, FieldSymbols, and FieldTypes to phobos.sys.traits. (#8986)\n\nFieldNames is roughly equivalent to std.traits' FieldNameTuple, and\r\nFieldTypes is roughly equivalent to std.traits' Fields (which used to be\r\nFieldTypeTuple).\r\n\r\nThe primary difference implementation-wise is that the phobos.sys.traits\r\nversions require that the types that they're given be aggregate types.\r\nFor some reason, the std.traits versions accept any type and then try to\r\ngive a result that at least sort of make sense when they're given a type\r\nwhich isn't an aggregate type (even though they really can't, because a\r\ntype which isn't an aggregate type has no fields, making any choice kind\r\nof arbitrary).\r\n\r\nFor types which aren't aggregate types, Fields gives the type back in an\r\nAliasSeq, and FieldNameTuple gives AliasSeq!\"\". Neither makes any sense\r\nto me. I assume that it was done so that those traits could be used in\r\ngeneric code and work with any type, but realistically, if you want to\r\ndo anything sane with them, you need to already have verified that\r\nyou're dealing with an aggregate type, since it's just going to be\r\nerror-prone to do stuff like Fields!int and then get AliasSeq!int back\r\nas if it had a single field of type int (or FieldNameTuple!int and get\r\nan empty string as the name). So, the phobos.sys.traits versions simply\r\nrequire that you give them aggregate types to avoid that entire mess.\r\n\r\nFieldNames evaluates to the names of the fields as strings. The \"Tuple\"\r\nin the name of the std.traits version is an artifact from when AliasSeqs\r\nwere called TypeTuples, so I didn't keep that.\r\n\r\nFieldTypes evaluates to the types for the fields. It's FieldTypes rather\r\nthan Fields for clarity, since it's not at all obvious what Fields is\r\nsupposed to give you (if I'd had to guess, I would have guessed the\r\nsymbols, not the types).\r\n\r\nFieldSymbols is new. Its usefulness is questionable, since it does\r\nalmost exactly the same thing that tupleof does. However, I've included\r\nit because of the subtle issues that you get with nested structs -\r\nnamely that tupleof includes a context pointer in its result, which you\r\nprobably don't want (though that obviously depends on what you're\r\ndoing), and FieldNames and FieldTypes don't include it (just like their\r\nstd.traits counterparts don't), so it seemed like it would make it less\r\nerror-prone to have FieldSymbols for the cases where symbols are needed.\r\nThe documentation explains (and the examples show) the difference\r\nbetween FieldSymbols and tupleof so that the programmer can decide which\r\nmakes more sense for their particular use case.","shortMessageHtmlLink":"Add FieldNames, FieldSymbols, and FieldTypes to phobos.sys.traits. (#…"}},{"before":"5d6eacc0c46594d292b857b9a4ee6b4e339c564c","after":"eca29522551f321e33a536d2758bcd19c73aff2e","ref":"refs/heads/master","pushedAt":"2024-04-19T16:06:55.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Merge pull request #8984 from Inkrementator/master\n\nFix broken links in std.range.chain\n\nSigned-off-by: Dennis \nMerged-on-behalf-of: Jonathan M Davis ","shortMessageHtmlLink":"Merge pull request #8984 from Inkrementator/master"}},{"before":"7740a857f3e0cba3e4d675e0efc73fc8b881cc19","after":"5d6eacc0c46594d292b857b9a4ee6b4e339c564c","ref":"refs/heads/master","pushedAt":"2024-04-18T22:44:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add isAggegregateType and isInstantiationOf to phobos.sys.traits. (#8981)\n\nisAggregateType is the same as isAggregateType from std.traits but with\r\ntweaked documentation and examples.\r\n\r\nisInstantiationOf is the equivalent of std.traits' isInstanceOf. The\r\ndocumentation and tests have been updated, and an overload for partial\r\ninstantiation has been added.\r\n\r\nThe reason for the name change is that \"instance\" is not normally used\r\nwith templates (instantiation is typically considered to be the correct\r\nterm). Rather, instance is normally used to indicate that a value is an\r\ninstance of a particular type. So, using isInstanceOf to check whether a\r\ntype is an instantiation of a particular template seems like a misuse of\r\nthe term and like it could easily cause confusion. The downside of\r\ncourse is that the new name is longer and harder to type, but while it's\r\na trait that is necessary in some situations, IMHO, it's not needed\r\nfrequently enough for the longer name to be a problem - particularly\r\nwhen it's a clearer name.\r\n\r\nI did try to simplify isInstantationOf's implementation so that it\r\ndidn't need an alias overload, but I failed, because apparently, when\r\ntypeof is used on the instantiation of a function template, the fact\r\nthat it's a template instantation is lost. So, unfortunately, we're\r\nforced to operate on the function's symbol rather than its type to\r\ndetect whether it's an instantation of a particular template. The\r\ndocumentation has been updated to include that information.\r\n\r\nI also tried to then make the alias overload not need a helper template\r\nso that fewer template instantiations would be needed, but that didn't\r\nwork either, because the alias overload needs a template specialization\r\nto work, and I couldn't find a way to write an is expression that would\r\nhave the same effect. So maybe, someone can improve the implementation\r\nlater if they can figure that out, but since it's the same\r\nimplementation as std.traits, we're not any worse off. And the overload\r\nwhich operates on aggregate types probably sees a lot more use anyway.","shortMessageHtmlLink":"Add isAggegregateType and isInstantiationOf to phobos.sys.traits. (#8981"}},{"before":"80235ea0568caaa8993e2d4fc6e3b7daa102bd6c","after":"7740a857f3e0cba3e4d675e0efc73fc8b881cc19","ref":"refs/heads/master","pushedAt":"2024-04-17T09:45:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"[std/net/isemail] Fix foreach ref index\n\nSee https://github.com/dlang/dmd/pull/16381.","shortMessageHtmlLink":"[std/net/isemail] Fix foreach ref index"}},{"before":"2fd8aae43890078f32b81c0491af9d52342aab9c","after":"80235ea0568caaa8993e2d4fc6e3b7daa102bd6c","ref":"refs/heads/master","pushedAt":"2024-04-17T09:27:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Add `@nogc nothrow` to randomUUID","shortMessageHtmlLink":"Add @nogc nothrow to randomUUID"}},{"before":"c489361e71e7d1075f07a855316a7acdb95687ee","after":"2fd8aae43890078f32b81c0491af9d52342aab9c","ref":"refs/heads/master","pushedAt":"2024-04-15T17:03:44.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"dkorpel","name":"Dennis","path":"/dkorpel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14114684?s=80&v=4"},"commit":{"message":"Merge pull request #8979 from ntrel/path-for\n\nFix ref foreach range variable","shortMessageHtmlLink":"Merge pull request #8979 from ntrel/path-for"}},{"before":"0663564600edb3cce6e0925599ebe8a6da8c20fd","after":"c489361e71e7d1075f07a855316a7acdb95687ee","ref":"refs/heads/master","pushedAt":"2024-04-13T00:09:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add OriginalType, KeyType, and ValueType to phobos.sys.traits. (#8978)\n\nThey're each the same as their std.traits counterparts, though the\r\ndocumentation and tests have been updated.\r\n\r\nI considered renaming KeyType and ValueType to AAKeyType and AAValueType\r\nfor increased clarity, but that seems pretty ugly, and while \"value\r\ntype\" could mean other things depending on the context, I don't know\r\nwhat else it could mean in this context. So, I left the names the same.","shortMessageHtmlLink":"Add OriginalType, KeyType, and ValueType to phobos.sys.traits. (#8978)"}},{"before":"95a9d9f1227866e526ebe4f6c2b6fedf578bc8d3","after":"0663564600edb3cce6e0925599ebe8a6da8c20fd","ref":"refs/heads/master","pushedAt":"2024-04-09T10:20:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add And, Not, and Or to phobos.sys.meta. (#8977)\n\nThese correspond to templateAnd, templateNot, and templateOr from\r\nstd.meta. The names have been shortened and made PascalCase to make them\r\nconsistent with our normal naming rules. It's PascalCase rather than\r\ncamelCase, because the result is a template rather than a value, and we\r\ndon't normally prefix symbols with \"template\" just because they're\r\ntemplates.\r\n\r\nThe implementation of Not is unchanged. However, unlike their std.meta\r\ncounterparts, And and Or do not short-circuit their evaluation. This makes\r\nthem consistent with the rest of phobos.sys.meta (whereas std.meta is\r\ninconsistent about whether its templates short-circuit their evaluation),\r\nbut it's also because they're implemented to be iterative rather than\r\nrecursive, which should make them more efficient.","shortMessageHtmlLink":"Add And, Not, and Or to phobos.sys.meta. (#8977)"}},{"before":"fc7273b0a38dead8433d5d352b99b8de0d844859","after":"34ff27e58d83e7a6135af56af2eb34ba3a6d7252","ref":"refs/heads/stable","pushedAt":"2024-04-09T07:08:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Work around bugzilla issue 24415 - only doesn't work with elements with a copy constructor.\n\nSince the compiler is treating the auto-generated copy-constructor for\nOnlyResult as private (thus rendering it useless outside of\nstd.range.package), this commit adds an explicit one and makes it\npublic. Once the dmd bug has been fixed, the explicit copy constructor\nshould be removed.","shortMessageHtmlLink":"Work around bugzilla issue 24415 - only doesn't work with elements wi…"}},{"before":"92dc5a4e98591a0e6b0af4ff0f84f096fea09016","after":"fc7273b0a38dead8433d5d352b99b8de0d844859","ref":"refs/heads/stable","pushedAt":"2024-04-09T06:31:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thewilsonator","name":"Nicholas Wilson","path":"/thewilsonator","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6802489?s=80&v=4"},"commit":{"message":"Remove dscanner check for const/immutable variables in unit tests.\n\nThis appears to be the check which is making\nhttps://github.com/dlang/phobos/pull/8924 fail the style check with\nwarnings such as\n\nstd/internal/test/range.d(43:14)[warn]: Variable b is never modified and could have been declared const or immutable.\n\nIt makes no sense to require that unit tests follow such a rule, and it\nis actually detrimental when tests involve stuff like copy constructors,\nbecause then the type of the target variable matters as part of the\ntest.\n\nHonestly, I think that it should probably not be checked at all, since\nit's a pretty questionable requirement in many cases given how strict\nD's const and immutable are, but that's more debatable, whereas this\ncheck really makes no sense with unit tests, so I'm just disabling it\nfor unit tests for now. We can disable it more generally later if it\nturns out that it's causing problems for normal code.","shortMessageHtmlLink":"Remove dscanner check for const/immutable variables in unit tests."}},{"before":"aeace12de6f6a4e9ab96c7ed52b5f6fcd91e740f","after":"95a9d9f1227866e526ebe4f6c2b6fedf578bc8d3","ref":"refs/heads/master","pushedAt":"2024-04-08T01:36:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Adds Instantiate, ApplyLeft, and ApplyRight to phobos.sys.meta.\n\nThis also makes it so that isImplicitlyConvertible and\nisQualifierConvertible in phobos.sys.traits can be partially\ninstantiated, since I missed that before.\n\nInstantiate is basically identical to the one in std.meta\nimplementation-wise, but the documentation and unit tests have been\nimproved.\n\nApplyLeft and ApplyRight should be functionally the same as their\nstd.meta counterparts, but they have a simpler implementation than their\nstd.meta counterparts (I'm pretty sure that the extra complexity in the\nold implementation is to work around built-in types not working with\naliases, which was fixed a while ago). Of course, their documentation\nand tests have also been improved.","shortMessageHtmlLink":"Adds Instantiate, ApplyLeft, and ApplyRight to phobos.sys.meta."}},{"before":"23e5d21d38462c9dd85a8007394b04e5ea9ce29c","after":"aeace12de6f6a4e9ab96c7ed52b5f6fcd91e740f","ref":"refs/heads/master","pushedAt":"2024-04-08T01:36:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Add lvalueOf and rvalueOf to phobos.sys.traits.\n\nThese are straight from std.traits but with improvements to the\ndocumentation and unit tests.\n\nThe __InoutWorkaroundStruct bit is kind of ugly, but it does seem to be\nnecessary due to how inout works.","shortMessageHtmlLink":"Add lvalueOf and rvalueOf to phobos.sys.traits."}},{"before":"77adcadf7961dbe1177aa79be381311404a81d46","after":"23e5d21d38462c9dd85a8007394b04e5ea9ce29c","ref":"refs/heads/master","pushedAt":"2024-04-05T20:28:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add isEqual and EnumMembers to phobos.sys.traits. (#8970)\n\nEnumMembers is obviously needed and does the same thing as its\r\nstd.traits counterpart.\r\n\r\nisEqual is new, and it really shouldn't be used in many circumstances,\r\nbut it's needed in conjunction with Unique to be able to do what\r\nNoDuplicates from std.meta does when given an AliasSeq of enum members.\r\nSo, if you need the list of enum members to have no duplicate values\r\n(e.g. when creating a final switch), then you would now do\r\nUnique!(isEqual, EnumMembers!E) instead of NoDuplicates!(EnumMembers!E).\r\n\r\nAs part of isEqual's documentation, I added a list of examples which\r\nhighlight the difference between operating on the list of enum members\r\nas an AliasSeq and operating on them as a dynamic array, since that's\r\nnot something that's at all obvious - and it shows why you might need to\r\nuse isEqual with Unique to weed out duplicate values instead of doing\r\nsomething like [EnumMembers!E].sort().unique() to weed them out. For\r\ndocumentation purposes, I just assumed that uniq would be renamed to\r\nunique, but the documentation can be fixed later if need be once we have\r\nthe actual functions in Phobos v3.","shortMessageHtmlLink":"Add isEqual and EnumMembers to phobos.sys.traits. (#8970)"}},{"before":"8729740e3221cd6dcccdbbbb12b452d0ee9c1ee1","after":"77adcadf7961dbe1177aa79be381311404a81d46","ref":"refs/heads/master","pushedAt":"2024-04-03T13:52:12.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"dkorpel","name":"Dennis","path":"/dkorpel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14114684?s=80&v=4"},"commit":{"message":"Merge pull request #8968 from dkorpel/csv-index-error\n\nFix bugzilla 24478 - std.csv array out of bounds when row size exceed…","shortMessageHtmlLink":"Merge pull request #8968 from dkorpel/csv-index-error"}},{"before":"d1cb5ca5858464e9a6ae8622848563e89c427703","after":"8729740e3221cd6dcccdbbbb12b452d0ee9c1ee1","ref":"refs/heads/master","pushedAt":"2024-04-02T09:16:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thewilsonator","name":"Nicholas Wilson","path":"/thewilsonator","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6802489?s=80&v=4"},"commit":{"message":"Mark `endianToNativeImpl` `@trusted`","shortMessageHtmlLink":"Mark endianToNativeImpl @trusted"}},{"before":"14b23633b762cfd7b03614dca4c6b0cafa1016e5","after":"d1cb5ca5858464e9a6ae8622848563e89c427703","ref":"refs/heads/master","pushedAt":"2024-04-01T22:02:32.000Z","pushType":"pr_merge","commitsCount":8,"pusher":{"login":"ibuclaw","name":"Iain Buclaw","path":"/ibuclaw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/397929?s=80&v=4"},"commit":{"message":"Merge pull request #8966 from ibuclaw/merge_stable\n\nmerge stable","shortMessageHtmlLink":"Merge pull request #8966 from ibuclaw/merge_stable"}},{"before":"7858069343679401fea49a48bcaf965b7f22dde0","after":"92dc5a4e98591a0e6b0af4ff0f84f096fea09016","ref":"refs/heads/stable","pushedAt":"2024-04-01T20:12:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ibuclaw","name":"Iain Buclaw","path":"/ibuclaw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/397929?s=80&v=4"},"commit":{"message":"purge changelog","shortMessageHtmlLink":"purge changelog"}},{"before":"9f735fd8bfb75e3e51b04b10e09ded57299b5700","after":"7858069343679401fea49a48bcaf965b7f22dde0","ref":"refs/heads/stable","pushedAt":"2024-04-01T18:15:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Fix bugzilla #24465: Make Tuple work with copy constructors\n\nIf there's a constructor that looks like a copy constructor except that\nit takes an rvalue instead of taking the argument by ref, then that type\ncan't have a copy constructor, and one of Tuple's constructors was\ncausing that problem. So, this fixes it so that it doesn't.","shortMessageHtmlLink":"Fix bugzilla #24465: Make Tuple work with copy constructors"}},{"before":"8e76f07ace35f4e0cae1ece0b9dc67306c5677a3","after":"9f735fd8bfb75e3e51b04b10e09ded57299b5700","ref":"refs/heads/stable","pushedAt":"2024-04-01T18:15:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Fix alignment of buffers in kernighan_ritchie unittests.","shortMessageHtmlLink":"Fix alignment of buffers in kernighan_ritchie unittests."}},{"before":"eeffdfe525ba41a0d367802d27af0eb058ccf262","after":"14b23633b762cfd7b03614dca4c6b0cafa1016e5","ref":"refs/heads/master","pushedAt":"2024-03-31T21:52:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"thewilsonator","name":"Nicholas Wilson","path":"/thewilsonator","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6802489?s=80&v=4"},"commit":{"message":"[std.traits] Improve FunctionTypeOf docs","shortMessageHtmlLink":"[std.traits] Improve FunctionTypeOf docs"}},{"before":"a2ade9dec49e70c6acd447df52321988a4c2fb9f","after":"8e76f07ace35f4e0cae1ece0b9dc67306c5677a3","ref":"refs/heads/stable","pushedAt":"2024-03-31T19:39:35.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"dkorpel","name":"Dennis","path":"/dkorpel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14114684?s=80&v=4"},"commit":{"message":"Merge pull request #8961 from MrcSnm/patch-1\n\nFix Bugzilla Issue 24458 - Mac M3 associative array keys on std.net.curl gets overwritten","shortMessageHtmlLink":"Merge pull request #8961 from MrcSnm/patch-1"}},{"before":"ec0857574c40839fc152a24ccb228565c1330d0f","after":"eeffdfe525ba41a0d367802d27af0eb058ccf262","ref":"refs/heads/master","pushedAt":"2024-03-28T08:18:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Add Stride and Unique to phobos.sys.meta.\n\nStride is basically the same as std.meta's Stride aside from some\nimprovements to the tests and documentation.\n\nUnique is the equivalent of std.meta's NoDuplicates except that it's been\nupdated in the same fashion as indexOf. So, instead of checking for\nwhether the elements are \"the same\" based on some complicated rules,\nUnique takes a predicate which it uses to compare the elements for\nequality (essentially making it the AliasSeq equivalent of\nstd.algorithm's uniq, though uniq requires that the range be sorted, and\nUnique has no such requirement). So, the programmer can decide what kind\nof comparison is used.","shortMessageHtmlLink":"Add Stride and Unique to phobos.sys.meta."}},{"before":"a613e8f7147ecbffffb5bf32b5c52e4591cf5fd8","after":"ec0857574c40839fc152a24ccb228565c1330d0f","ref":"refs/heads/master","pushedAt":"2024-03-27T09:33:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add isSameSymbol and isSameType to v3 traits and indexOf to v3 meta. (#8960)\n\nindexOf is phobos.sys.meta's version of std.meta's staticIndexOf.\r\n\r\nThe name was changed to better match our naming scheme. Because the\r\nresult of the template is a value and not a type or AliasSeq, it is\r\ncorrect for it to be camelCased, but we don't normally prepend templates\r\nwith static, making it inconsistent to do so in the case of indexOf.\r\n\r\nThis might result in some symbol conflicts with indexOf from the\r\nalgorithm modules (assuming that we retain that function and its name\r\nfor Phobos v3), but a quick test showed that importing both\r\nphobos.sys.meta and std.algorithm didn't result in a symbol conflict\r\nwhen using the one from phobos.sys.meta. And even if we do get symbol\r\nconflicts in some situations, the module system is designed to allow us\r\nto deal with that.\r\n\r\nAs for the implementation, I've both made indexOf more flexible and more\r\nstraightforward.\r\n\r\nstaticIndexOf looks for an element in the AliasSeq which is \"the same\"\r\nas the first argument, and that results in a big mess, since what \"the\r\nsame\" is varies considerably depending on what the elements are, and\r\nstaticIndexOf makes it even more complicated by evaluating some symbols\r\nat CTFE if it can (e.g. evaluating a no-arg function that returns an int\r\nto try to compare it to an integer literal) while not evaluating them in\r\nother cases. Not only did trying to document the current behavior make\r\nit clear that it's just way too confusing, but even trying to come up\r\nwith a sane simplification of how the comparison works was just too\r\nmessy, because it's trying to be able to compare just about anything\r\nwhich you can stick in an AliasSeq. So, I punted on it by taking the\r\ncomparison out of the equation entirely.\r\n\r\nindexOf now takes a template predicate. So, rather than looking for an\r\nelement which is the same, it looks for an element which matches the\r\npredicate. This allows indexOf to be used in more cases than\r\nstaticIndexOf can be, _and_ it allows the programmer using it to decide\r\nhow the comparison works by choosing a predicate that matches what they\r\nwant.\r\n\r\nSo, in conjuction with that I added isSameSymbol and isSameType to\r\nphobos.sys.traits, since those should correspond to the most common\r\nsearches that someone would be trying to do with staticIndexOf, but\r\nsince those traits are very specific in what they search for rather than\r\nsearching for an element which is \"the same\" in some nebulous sense, the\r\ncode should end up being much clearer and cleaner. And if someone wants\r\nto do something completely different like indexOf!(isInteger, Types),\r\nthen they can, unlike with staticIndexOf.","shortMessageHtmlLink":"Add isSameSymbol and isSameType to v3 traits and indexOf to v3 meta. (#…"}},{"before":"676710c7b83472d54c2339cfa89f182fb0cfb71f","after":"a613e8f7147ecbffffb5bf32b5c52e4591cf5fd8","ref":"refs/heads/master","pushedAt":"2024-03-27T01:11:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add all and any to phobos.sys.meta. (#8959)\n\nall is the same as std.meta's allSatisfy, and any is the same as\r\nstd.meta's anySatisfy. However, their documentation and examples have\r\nbeen tweaked.","shortMessageHtmlLink":"Add all and any to phobos.sys.meta. (#8959)"}},{"before":"e10c49f528dec9e79fe6e63fbd81a5f55f4463b9","after":"676710c7b83472d54c2339cfa89f182fb0cfb71f","ref":"refs/heads/master","pushedAt":"2024-03-23T22:38:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"std/math/hardware.d: use an alternative register naming ...\n\n... for LoongArch64 so that LDC/LLVM can recognize certain fp\ninstructions","shortMessageHtmlLink":"std/math/hardware.d: use an alternative register naming ..."}},{"before":"2fc0991cf9c3c1c0bea9563dcdad3526312b32b0","after":"e10c49f528dec9e79fe6e63fbd81a5f55f4463b9","ref":"refs/heads/master","pushedAt":"2024-03-22T22:45:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dlang-bot","name":"The Dlang Bot","path":"/dlang-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15698993?s=80&v=4"},"commit":{"message":"Add Filter and Reverse to phobos.sys.meta.\n\nThey're the same as their std.meta counterparts, albeit with tweaked\ndocumentation and examples.\n\nI also fixed the casing on Map's parameters. They're supposed to be\ntypes (or a template in the case of the template that it's applying to\nthe other arguments), so they should be PascalCased.","shortMessageHtmlLink":"Add Filter and Reverse to phobos.sys.meta."}},{"before":"fb24ef3d0ef1f021ce608502f4f90cf0d24c8fea","after":"2fc0991cf9c3c1c0bea9563dcdad3526312b32b0","ref":"refs/heads/master","pushedAt":"2024-03-22T21:52:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"LightBender","name":"Adam Wilson","path":"/LightBender","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1262302?s=80&v=4"},"commit":{"message":"Add isImplicitlyConvertible and isQualifierConvertible to phobos v3. (#8955)\n\nBoth traits do exactly the same thing as their std.traits counterparts,\r\nthough these have far more documentation and examples.\r\n\r\nI'm not a big fan of isImplicitlyConvertible, since it's usually a bad\r\nidea to test for implicit conversions in template constraints, and the\r\nis expression is incredibly simple to boot, but a trait _is_ needed when\r\na template predicate is needed (e.g. for the templates in\r\nphobos.sys.meta), and having isImplicitlyConvertible allows for a good\r\nplace to put documentation on implicit conversions in general (as well\r\nas to warn against testing for them in template constraints).\r\n\r\nisQualifierConvertible isn't actually used much in Phobos v2 right now\r\n(in most cases right now, Unqual is used with an is expression instead),\r\nbut it is used by the range traits, and there probably are a number of\r\ncases where it would be better to use it than Unqualified or Unconst\r\nwith an is expression. But it's new enough that I don't think that many\r\nof us have really thought through how best to use it yet. Either way, if\r\nwe want to be able to do something like isInputRange!(R, const char),\r\nthen it's a good trait to have.","shortMessageHtmlLink":"Add isImplicitlyConvertible and isQualifierConvertible to phobos v3. (#…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEOs9lLQA","startCursor":null,"endCursor":null}},"title":"Activity · dlang/phobos"}