diff options
Diffstat (limited to 'contrib/bc/project')
-rw-r--r-- | contrib/bc/project/README.md | 32 | ||||
-rw-r--r-- | contrib/bc/project/gitea.db | bin | 0 -> 86016 bytes | |||
-rw-r--r-- | contrib/bc/project/github_issues.json | 3667 | ||||
-rw-r--r-- | contrib/bc/project/github_prs.json | 7729 | ||||
-rw-r--r-- | contrib/bc/project/issue10.md | 104 |
5 files changed, 11532 insertions, 0 deletions
diff --git a/contrib/bc/project/README.md b/contrib/bc/project/README.md new file mode 100644 index 000000000000..9086bb2e9270 --- /dev/null +++ b/contrib/bc/project/README.md @@ -0,0 +1,32 @@ +# `bc` Project Management History + +This directory has the project management history of `bc`. This `README` exists +to explain what the files are. + +* `gitea.db` + + Because I (Gavin Howard, the main author) do not trust big companies, I moved + `bc` to a self-hosted Gitea instance. This is what's left of the database from + that instance. Obviously, I wiped of personal identifying information as much + as possible, but it still has the comments on issues and pull requests, as + well as the issues and pull requests themselves (whatever matters anyway). + +* `github_issues.json` + + This is information about issues reported on GitHub. I used the GitHub CLI to + export *all* of the available information, since it's public. + +* `github_prs.json` + + This is information about pull requests opened on GitHub. I used the GitHub + CLI to export *all* of the available information, since it's public. + +* `issue10.md` + + When I first started self-hosting Gitea, I was not a good sysadmin. On top of + that, I was learning how to use OpenZFS, and Gitea was stored in a ZFS + dataset. + + This is the best I could do to reproduce an actual issue that was reported and + got erased when I rolled back to a ZFS snapshot. It was originally `#10` on + Gitea, hence the file name. diff --git a/contrib/bc/project/gitea.db b/contrib/bc/project/gitea.db Binary files differnew file mode 100644 index 000000000000..c63c79ff928f --- /dev/null +++ b/contrib/bc/project/gitea.db diff --git a/contrib/bc/project/github_issues.json b/contrib/bc/project/github_issues.json new file mode 100644 index 000000000000..3ee05206a3e9 --- /dev/null +++ b/contrib/bc/project/github_issues.json @@ -0,0 +1,3667 @@ +[ + { + "assignees": [], + "author": { + "id": "U_kgDOCpvj3Q", + "is_bot": false, + "login": "Palafitas", + "name": "Palafitas" + }, + "body": "I'm using 'bc' to perform a calculation in a shell script and I'm getting the incorrect result from a simple calculation...\n\n80 - (30 * 0) / 50 - (80 / 100) * 38\n\nbc returns value 80\n\nReal value is 49.6\n\n\nOBS.: Can use the calculation direct in bc command to see output\nOBS.: bc version is 1.07.1", + "closed": true, + "closedAt": "2025-02-25T19:10:08Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6f65pc", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Two things.\n\nFirst, `bc` is not like other calculators that figure out what precision they need. Instead, `bc` requires you to set the precision before doing any calculation.\n\nThe way to do this is to set the special variable `scale` to an integer value, and then calculations will be done to at least that precision, in digits after the decimal point.\n\nOne quirk of `bc` is that `scale` is set to 0 by default, which means integer-only math.\n\nApplying integer-only math to the expression you gave, we get:\n\n```\n80 - (30 * 0) / 50 - (80 / 100) * 38\n80 - 0 / 50 - (80 / 100) * 38\n80 - 0 - (80 / 100) * 38\n80 - (80 / 100) * 38\n80 - 0 * 38\n80\n```\n\nNotice that `80 / 100` simplifies to 0 with integer-only arithmetic. That is expected.\n\nNow, watch what happens when we set `scale` to 1 first:\n\n```\nscale = 1\n80 - (30 * 0) / 50 - (80 / 100) * 38\n80 - 0 / 50 - (80 / 100) * 38\n80 - 0 - (80 / 100) * 38\n80 - (80 / 100) * 38\n80 - 0.8 * 38\n80 - 30.4\n49.6\n```\n\nAnd that is the value you expected.\n\nSo there is no calculation error; just be sure to set the precision with `scale` before running a calculation.\n\nSecond, this `bc` has never had a `1.07.1` version. That is, in fact, the latest version of the [GNU `bc`][1], so you are not even running this `bc`. So I am closing this issue as invalid.\n\n[1]: https://www.gnu.org/software/bc/", + "createdAt": "2025-02-25T19:10:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/87#issuecomment-2683017820", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6f9KsZ", + "author": { + "login": "Palafitas" + }, + "authorAssociation": "NONE", + "body": "Thanks, i solved the problem with '-l' to 'bc'\n\ne.g:\necho '1 + 1' | bc -l", + "createdAt": "2025-02-26T00:44:54Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/87#issuecomment-2683611929", + "viewerDidAuthor": false + } + ], + "createdAt": "2025-02-25T17:57:06Z", + "id": "I_kwDOCL0xJc6rnKtq", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 87, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Calculation error", + "updatedAt": "2025-02-26T00:44:54Z", + "url": "https://github.com/gavinhoward/bc/issues/87" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjI2Nzg4ODg=", + "is_bot": false, + "login": "shpati", + "name": "" + }, + "body": "Hi! \r\nI am trying to load multiple .bc files stored in the same directory as the program (from your modified function files from Carl's collection) but bc will not load them. \r\n\r\nThe command I give is: \r\n`bc -l *.bc`\r\n\r\nThe error I get is: \r\n```\r\nFatal error: cannot open file: *.bc\r\n 0: (main)\r\n```\r\nLoading files separately works, e.g. bc -l file1.bc file2.bc\r\nLoading files using wildcards works in the gnu bc, and it is practical. \r\n\r\nI am using the windows 10 terminal. ", + "closed": true, + "closedAt": "2024-11-10T14:27:05Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6TB7mr", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Hello.\r\n\r\nI am actually really surprised that GNU `bc` will load the files in the Windows 10 terminal, and that is because, as far as I know, wildcard expansion is done by the shell, not the program. So GNU `bc` doesn't actually do it, or so I thought.\r\n\r\nIf you were to run my `bc` with that command under bash on Linux, it would work fine because bash would expand the wildcard into a list of file names and pass that to my `bc`. It seems the Windows 10 terminal does not do that, but passes the wildcard to my `bc`, which does not know how to expand it.\r\n\r\nUnfortunately, wildcard expansion is a heavy feature, not one I can implement in an afternoon. I think it is out of scope for my `bc`, and I don't plan on implementing it.\r\n\r\nThere might be some way to get the Windows 10 terminal to do wildcard expansion, but if that doesn't work, you can run my `bc` under bash using the Windows Subsystem for Linux.", + "createdAt": "2024-11-10T14:27:05Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/85#issuecomment-2466757035", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6TC19F", + "author": { + "login": "shpati" + }, + "authorAssociation": "NONE", + "body": "Thanks a lot for the detailed answer Gavin! It seems like the solution is simple and does not need any change in code. You only need to change the linker used during compiling, like this: \r\n\r\n`cl example.c /link setargv.obj`\r\n\r\nCan you try it please? 🙂\r\n\r\nSource: https://learn.microsoft.com/en-us/cpp/c-language/expanding-wildcard-arguments?view=msvc-170", + "createdAt": "2024-11-11T00:00:13Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/85#issuecomment-2466996037", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6UKlNz", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I tried adding `setargv.obj` to the linker command (next to `bcrypt.lib`), and that didn't work.\r\n\r\nIf you can get it working, feel free to send me a PR, and I will probably accept it.", + "createdAt": "2024-11-19T14:00:38Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/85#issuecomment-2485801843", + "viewerDidAuthor": true + } + ], + "createdAt": "2024-11-10T09:58:36Z", + "id": "I_kwDOCL0xJc6dxwXg", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 85, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "NOT_PLANNED", + "title": "Does not load multiple .bc files using * wildcard", + "updatedAt": "2024-11-19T14:00:40Z", + "url": "https://github.com/gavinhoward/bc/issues/85" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjgyNzIwNQ==", + "is_bot": false, + "login": "DanielRuf", + "name": "Daniel Ruf" + }, + "body": "I'm new to C and I try to create a PHP extension of bc with SWIG, but as direct replacement for `eval()` in PHP.\r\n\r\nWhat is the **correct function from the bc code to parse a string** and return the calculation result or some error / null when parsing fails?\r\n\r\nI tried looking at the code, but didn't find the right one.", + "closed": true, + "closedAt": "2025-02-16T13:40:55Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6LSQRq", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I'm not sure what you're asking. `bc` is a program, not a library, and even though I *do* have a library, it does not include expression parsing.\r\n\r\nAre you wanting a library that can parse `bc` expressions? Unfortunately, this `bc` cannot do that, and to do so would require refactoring that I don't have time for.", + "createdAt": "2024-09-08T20:42:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336818282", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6LSRDF", + "author": { + "login": "DanielRuf" + }, + "authorAssociation": "NONE", + "body": "Understood, so I can not do some `bc_parse(some-string-from-stdin)` with that and I have to resort to some other solution then.\r\n\r\nWhere can I find the current logic of the CLI? Maybe I can do something with that.", + "createdAt": "2024-09-08T20:56:06Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336821445", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6LSRiv", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You are correct.\r\n\r\nHowever, what is easiest depends on what you are trying to do. Do you need the full `bc` language? Or do you just need simple expressions? Or something else?\r\n\r\nIf you need the full language, the best solution would be to run `bc` as a child process and just feed it data.\r\n\r\nIf you need simple expression parsing, then you could implement the parsing with Lex and Yacc, and then use `bcl`, the `bc` library, to do the math.\r\n\r\nIf you need something else, we can see what might work best.", + "createdAt": "2024-09-08T21:03:51Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336823471", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6LSSix", + "author": { + "login": "DanielRuf" + }, + "authorAssociation": "NONE", + "body": "> Or do you just need simple expressions? Or something else?\r\n\r\nJust basic calculations like `eval(1+2/3*4-5)`.\r\n\r\n> If you need the full language, the best solution would be to run bc as a child process and just feed it data.\r\n\r\nUnfortunately this brings much overhead, I already tested that with `exec(\"bc ...\")` in PHP.\r\n\r\n> If you need simple expression parsing, then you could implement the parsing with Lex and Yacc, and then use bcl, the bc library, to do the math.\r\n\r\nThis sounds more like what I am looking for, even though I wanted to avoid Yacc.", + "createdAt": "2024-09-08T21:19:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336827569", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6LSSw-", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "While refactoring to bring the full `bc` parser into the library may be too much, I may be able to whip a small expression parser in a few hours.\r\n\r\nDo you just need the four basic arithmetic operators? Do you need parentheses? Do you need square root?\r\n\r\nLet me know what you need. I may need a week to get it to you.", + "createdAt": "2024-09-08T21:22:48Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336828478", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6LSTkN", + "author": { + "login": "DanielRuf" + }, + "authorAssociation": "NONE", + "body": "I will check that and let you know in the next days. At least parentheses are also needed.\r\n\r\nIf there is at least one function (like sqrt or max) implemened, then I can check the implementation and contribute some of my time to implement more or at least I can help with that.", + "createdAt": "2024-09-08T21:35:19Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336831757", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6LSUHv", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "`sqrt()` is already builtin; I'll add parsing for it. I can also add parsing for `max()` and `min()`.\r\n\r\nYou can see everything that's builtin [here](https://github.com/gavinhoward/bc/blob/master/manuals/bcl.3.md).", + "createdAt": "2024-09-08T21:44:30Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2336834031", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6LTBjd", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Ack! I'm sorry! I just had something come up in my personal life that will take a lot of time to resolve!\r\n\r\nSo despite hoping to help with the parsing, I can't even help with a simple thing anymore.\r\n\r\nHowever, I can point you in the right direction. Use the [Shunting-Yard Algorithm](https://en.wikipedia.org/wiki/Shunting-yard_algorithm) like [this](https://softwareengineering.stackexchange.com/questions/254074/how-exactly-is-an-abstract-syntax-tree-created/254075#254075) to make an abstract syntax tree, and then do a post-order traversal.\r\n\r\nIf you need examples of how to use `bcl`, then [its test code](https://github.com/gavinhoward/bc/blob/master/tests/bcl.c) is a good start.\r\n\r\nAgain, I'm really sorry about this, but I figured it would be better to tell you sooner rather than later.", + "createdAt": "2024-09-09T03:03:41Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2337020125", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6LTUUy", + "author": { + "login": "DanielRuf" + }, + "authorAssociation": "NONE", + "body": "No problem and thanks for letting me know. I will try to understand and solve it.", + "createdAt": "2024-09-09T04:37:26Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/83#issuecomment-2337097010", + "viewerDidAuthor": false + } + ], + "createdAt": "2024-09-08T20:22:38Z", + "id": "I_kwDOCL0xJc6Vwp4y", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 83, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "what function to call for parsing string expressions", + "updatedAt": "2025-02-16T13:40:55Z", + "url": "https://github.com/gavinhoward/bc/issues/83" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOBqIXaQ", + "is_bot": false, + "login": "GregTonoski", + "name": "Greg Tonoski" + }, + "body": "Would you like to add elliptic curve point multiplication (https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication) to math library, perhaps?", + "closed": true, + "closedAt": "2024-08-31T18:09:54Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6Kdiqk", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I have wanted to, but I haven't *despite* wanting to. And there is a good reason: someone is going to use my `bc` to implement cryptography with vulnerabilities.\r\n\r\nIf my `bc` ships the elliptic curve arithmetic to do that, I will feel responsible. If they write the arithmetic themselves, well, they are responsible.\r\n\r\nOf course, there are other reasons to want it, but because of cryptography, I hesitate to add it.\r\n\r\nSorry!", + "createdAt": "2024-08-31T18:09:54Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/82#issuecomment-2322999972", + "viewerDidAuthor": true + } + ], + "createdAt": "2024-08-31T07:57:25Z", + "id": "I_kwDOCL0xJc6U72YL", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 82, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Feature request: elliptic curve point multiplication", + "updatedAt": "2024-08-31T18:09:55Z", + "url": "https://github.com/gavinhoward/bc/issues/82" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOBqIXaQ", + "is_bot": false, + "login": "GregTonoski", + "name": "Greg Tonoski" + }, + "body": "", + "closed": true, + "closedAt": "2024-08-30T14:14:44Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6KXcRi", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you so much for the compliment! I hardly get them nowadays. You made my day!\r\n\r\nI presume \"EOM\" means \"End of Message\" which means there is no bug? So I'm going to close this now, but if you do have a bug, feel free to reopen.", + "createdAt": "2024-08-30T14:14:44Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/80#issuecomment-2321400930", + "viewerDidAuthor": true + } + ], + "createdAt": "2024-08-30T07:30:14Z", + "id": "I_kwDOCL0xJc6UzPqQ", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 80, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Excellent. Works fine. Thank you. [EOM]", + "updatedAt": "2024-08-30T14:14:44Z", + "url": "https://github.com/gavinhoward/bc/issues/80" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjU3MDY1NjU3", + "is_bot": false, + "login": "exikyut", + "name": "" + }, + "body": "Was just playing around and happened to get my stack out of sync:\r\n\r\n```\r\n1\r\n+\r\n\r\nRuntime error: stack has too few elements\r\n 0: (main)\r\n```\r\n\r\nBut I noticed this cleared the stack:\r\n\r\n<pre>\r\nf\r\n<i>(no output)</i>\r\n</pre>\r\n\r\nTrying to improve my edge-case-fu spidey sense :) I thought I'd check how other dc implementations behave.\r\n\r\nGNU `dc` immediately showed me something might be up:\r\n\r\n```\r\n1\r\n+\r\ndc: stack empty\r\nf\r\n1\r\nq\r\n$ _\r\n```\r\n\r\nHuh.\r\n\r\nOpenBSD `dc` produced byte-identical output to the above.\r\n\r\nOK... what should arbitrate as reference here? I guess some form of going back to the beginning.\r\n\r\nHow far can we go back?\r\n\r\nApparently the first version of `dc` was written in B while UNIX was being ported. Man that would be fun to play with. Perhaps there's a printout of it starting on page 9,576 of an OCR-averse PDF on bitsavers just waiting to be found :smile: \r\n\r\nhttp://takahirox.github.io/pdp11-js/unixv6.html and http://pdp11.aiju.de/ both emulate UNIX v6 in-browser, which is nice and accessible. The `dc` in both of these has the same size and timestamp; copying from the second emulator for fun, which emulates an uppercase teletype, we get:\r\n\r\n```\r\n# DC\r\n1\r\n+\r\n( +) ?\r\nF\r\n1\r\nQ\r\n# # \r\n```\r\n\r\nHrm. That's V6 UNIX. Can we go further back?\r\n\r\nYes and no, as far as I can manage.\r\n\r\nIt looks like a V1+V2 amalgamation was put together using surviving source code and tape dumps: https://www.in-ulm.de/~mascheck/various/ancient/\r\n\r\nThe project appears to have been quietly migrated to https://github.com/DoctorWkt/unix-jun72, with terrifying instructions to \"now run `make`\" underneath a wall of \"last modified: 16 years ago\" :melting_face:, but I discovered some pre-built SIMH images at https://code.google.com/archive/p/unix-jun72/downloads, which is where the project previously lived (and is what the page in the previous paragraph links to), which still work perfectly - you just run `pdp11 simh.cfg`.\r\n\r\nUnfortunately, while the system is already saying `:login:` before you can even blink and figure out whether it worked, and the distribution includes `dc`, its `f` command appears to be broken... even though I see references to support for an `f` command [on line 949 in dc1.s](https://github.com/DoctorWkt/unix-jun72/blob/1d438bd5874ec628157fbeab370c8e3f3a3ecb8b/src/cmd/dc1.s#L949) (the source is distributed across [dc2.s](https://github.com/DoctorWkt/unix-jun72/blob/1d438bd5874ec628157fbeab370c8e3f3a3ecb8b/src/cmd/dc2.s), [dc3.s](https://github.com/DoctorWkt/unix-jun72/blob/1d438bd5874ec628157fbeab370c8e3f3a3ecb8b/src/cmd/dc3.s), [dc4.s](https://github.com/DoctorWkt/unix-jun72/blob/1d438bd5874ec628157fbeab370c8e3f3a3ecb8b/src/cmd/dc4.s) and [dc5.s](https://github.com/DoctorWkt/unix-jun72/blob/1d438bd5874ec628157fbeab370c8e3f3a3ecb8b/src/cmd/dc5.s), presumably due to memory constraints). I'm not sure if I'm falling through a `default: exit(0);`, a segfault, or a case of mismatching binary/source.\r\n\r\nThe path forward there would be figuring out how to recompile the `dc` implementation; I think this might be possible but it's beyond the scope of the cursory level of interest I approached this with.\r\n\r\nIf anyone wants a rainy day project, I would be really interested to learn more about the result of others' digging around to get the earliest surviving copies of `dc` running.\r\n\r\nZooming back out to the topic, it would **seem** that current consensus is that errors *of this type* don't consume the stack; they leave it alone. But it would be nice to formally qualify this situation better. How should that be framed? Parser consumption expectations? Stack effects by errors in general?\r\n\r\nThis bugreport is somewhat of a thought experiment. I don't have any authoritative ideas or suggestions myself.", + "closed": true, + "closedAt": "2024-08-23T03:03:02Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6Bc1ec", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for digging up the history!\r\n\r\nYou are correct that my `dc` clears the stack. When I was implementing `bc` and `dc`, I wanted to minimize the possibility that an error could screw up code later.\r\n\r\nHence, my `bc` and `dc` both [\"reset\"][1] on error, which means they clear everything and try to start completely fresh.\r\n\r\nThat said, the documentation could be clearer on that; I could make it say that errors clear the stack too. (And they do clear the stack because they have to clear the stack in `bc` since the stack is implicit.)\r\n\r\nHowever, this could go both ways:\r\n\r\n* I could declare this as a mere *documentation bug*, since `dc` is *not* standardized. In that case, I would just update the manual.\r\n* Or I could declare this a *conformance bug*, because while there is no standard, all other `dc` implementations do the opposite. In this case, I would make the change and fix the bugs that pop up.\r\n\r\nQuite frankly, I'm not looking forward to doing a full release cycle, which includes 2 weeks of fuzzing (during which my machine is unusable) and 24 hours of tests, possibly repeated. This means I want to fix the docs and call it a day, but going off of what I *want* to do is not rational.\r\n\r\nI don't know if anyone watches this repo, but this is one case where I'd like to hear comments from users.\r\n\r\n[1]: https://github.com/gavinhoward/bc/blob/master/manuals/bc/A.1.md#reset", + "createdAt": "2024-06-16T19:15:40Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2171819932", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6BfXEg", + "author": { + "login": "exikyut" + }, + "authorAssociation": "NONE", + "body": "> You are correct that my `dc` clears the stack. When I was implementing `bc` and `dc`, I wanted to minimize the possibility that an error could screw up code later.\r\n> \r\n> Hence, my `bc` and `dc` both [\"reset\"](https://github.com/gavinhoward/bc/blob/master/manuals/bc/A.1.md#reset) on error, which means they clear everything and try to start completely fresh.\r\n\r\nHuh. That makes pedagogical sense, upon consideration.\r\n\r\n> That said, the documentation could be clearer on that; I could make it say that errors clear the stack too.\r\n\r\nThat would probably be a good idea, both because `gh-dc` deviates from the norm, and because there *is* no norm; this would be the first point at which this particular graph edge / state machine transition is properly documented. Until now it's lived as an edge case in UB land.\r\n\r\n> (And they do clear the stack because they have to clear the stack in `bc` since the stack is implicit.)\r\n\r\nHuh. I wonder how other `bc`->`dc` architectural approaches have handled this situation?\r\n\r\n> However, this could go both ways:\r\n> \r\n> * I could declare this as a mere _documentation bug_, since `dc` is _not_ standardized. In that case, I would just update the manual.\r\n> * Or I could declare this a _conformance bug_, because while there is no standard, all other `dc` implementations do the opposite. In this case, I would make the change and fix the bugs that pop up.\r\n> \r\n> Quite frankly, I'm not looking forward to doing a full release cycle, which includes 2 weeks of fuzzing (during which my machine is unusable) and 24 hours of tests, possibly repeated. This means I want to fix the docs and call it a day, but going off of what I _want_ to do is not rational.\r\n\r\nGood net question. Hmm.\r\n\r\n> I don't know if anyone watches this repo, but this is one case where I'd like to hear comments from users.\r\n\r\nI am too.\r\n\r\nBut I'll add my 2¢:\r\n\r\n- Nobody has screamed until now, but `gh-dc` adoption is still rising.\r\n\r\n- Taking on the complexity of making this a `./configure`able option doesn't sound reasonable in practice.\r\n\r\n- I can only imagine a `dc` script generating different results after being switched to this implementation after some sort of upgrade process that presumably has capable humans involved in it. It would follow that said humans would presumably classify the deviation in output as the result of logic bugs and then fix them, so keeping this architectural approach is theoretically a net positive.\r\n\r\n- Applying to make `dc` a POSIX standard would make for an interesting 180-season TV series that would be excellent mid-afternoon watching while having a nap (and dreaming of how to make `dc` count to infinity twice). I'd definitely seed all 4,961 episodes.\r\n\r\n- Given that `gh-dc` is now in FreeBSD, it may well meet the theoretical/implicational interpretation (and possibly beyond) of \"significant user base\" required to [apply for OSS-Fuzz](https://google.github.io/oss-fuzz/getting-started/accepting-new-projects/) which would subject it to continual analysis and, if accepted, probably provide a slow trickle of genuinely interesting feedback. It also sounds like it would unblock a significant burnout barrier to commoditizing the process of cutting new releases - opting to letting new versions sit in OSS-Fuzz for a fortnight before releasing them (a cool strategy, and if only everything was architecturally simple enough that this could be applied everywhere) would no longer have a local performance impact.\r\n", + "createdAt": "2024-06-17T07:21:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2172481824", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6BmRt8", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> Nobody has screamed until now, but `gh-dc` adoption is still rising.\r\n\r\nYes, I agree. In fact, I initially wanted to dismiss your report as \"only one user,\" but I did not for this reason.\r\n\r\n> Taking on the complexity of making this a `./configure`able option doesn't sound reasonable in practice.\r\n\r\nI do not want that to be a build-time option. I have too many as it is.\r\n\r\n> I can only imagine a `dc` script generating different results after being switched to this implementation after some sort of upgrade process that presumably has capable humans involved in it. It would follow that said humans would presumably classify the deviation in output as the result of logic bugs and then fix them, so keeping this architectural approach is theoretically a net positive.\r\n\r\nTrue, although people would be better served to switch to `bc` since it's standard and portable.\r\n\r\n> Applying to make `dc` a POSIX standard would make for an interesting 180-season TV series that would be excellent mid-afternoon watching while having a nap (and dreaming of how to make dc count to infinity twice). I'd definitely seed all 4,961 episodes.\r\n\r\nThe [rationale in the `bc` standard][1] says these two things:\r\n\r\n> `dc` was not selected to be part of this volume of POSIX.1-2017 because `bc` was thought to have a more intuitive programmatic interface.\r\n\r\n> The consensus of the standard developers was that `dc` is a fundamentally less usable language and that that would be far too severe a penalty for avoiding the issue of being similar to but incompatible with C.\r\n\r\nYes, that is from the 2017 standard, but that language goes back to the beginning, I believe. This means that standardizing `dc` will not happen, barring some rich fellow deciding that it's his life mission to make it happen.\r\n\r\n> Given that `gh-dc` is now in FreeBSD, it may well meet the theoretical/implicational interpretation (and possibly beyond) of \"significant user base\" required to [apply for OSS-Fuzz](https://google.github.io/oss-fuzz/getting-started/accepting-new-projects/) which would subject it to continual analysis and, if accepted, probably provide a slow trickle of genuinely interesting feedback. It also sounds like it would unblock a significant burnout barrier to commoditizing the process of cutting new releases - opting to letting new versions sit in OSS-Fuzz for a fortnight before releasing them (a cool strategy, and if only everything was architecturally simple enough that this could be applied everywhere) would no longer have a local performance impact.\r\n\r\nI agree with this, so [I have applied][2]. We'll see where that goes.\r\n\r\n[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html#tag_20_09_18\r\n[2]: https://github.com/google/oss-fuzz/pull/12078", + "createdAt": "2024-06-17T19:45:51Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2174294908", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6BpTwG", + "author": { + "login": "exikyut" + }, + "authorAssociation": "NONE", + "body": "> > Nobody has screamed until now, but `gh-dc` adoption is still rising.\r\n> \r\n> Yes, I agree. In fact, I initially wanted to dismiss your report as \"only one user,\" but I did not for this reason.\r\n\r\n(Sentiment of appreciation)\r\n\r\n> > Taking on the complexity of making this a `./configure`able option doesn't sound reasonable in practice.\r\n> \r\n> I do not want that to be a build-time option. I have too many as it is.\r\n\r\nI was genuinely surprised at the number of configurable options :) completely agree there haha\r\n\r\n> > I can only imagine a `dc` script generating different results after being switched to this implementation after some sort of upgrade process that presumably has capable humans involved in it. It would follow that said humans would presumably classify the deviation in output as the result of logic bugs and then fix them, so keeping this architectural approach is theoretically a net positive.\r\n> \r\n> True, although people would be better served to switch to `bc` since it's standard and portable.\r\n> \r\n> > Applying to make `dc` a POSIX standard would make for an interesting 180-season TV series that would be excellent mid-afternoon watching while having a nap (and dreaming of how to make dc count to infinity twice). I'd definitely seed all 4,961 episodes.\r\n> \r\n> The [rationale in the `bc` standard](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html#tag_20_09_18) says these two things:\r\n> \r\n> > `dc` was not selected to be part of this volume of POSIX.1-2017 because `bc` was thought to have a more intuitive programmatic interface.\r\n\r\nThanks for the TIL! I should have expected there to be extant discussion on the matter...\r\n\r\n> > The consensus of the standard developers was that `dc` is a fundamentally less usable language and that that would be far too severe a penalty for avoiding the issue of being similar to but incompatible with C.\r\n> \r\n> Yes, that is from the 2017 standard, but that language goes back to the beginning, I believe. This means that standardizing `dc` will not happen, barring some rich fellow deciding that it's his life mission to make it happen.\r\n\r\nI see. Thanks very much for the insight.\r\n\r\n> \r\n> > Given that `gh-dc` is now in FreeBSD, it may well meet the theoretical/implicational interpretation (and possibly beyond) of \"significant user base\" required to [apply for OSS-Fuzz](https://google.github.io/oss-fuzz/getting-started/accepting-new-projects/) which would subject it to continual analysis and, if accepted, probably provide a slow trickle of genuinely interesting feedback. It also sounds like it would unblock a significant burnout barrier to commoditizing the process of cutting new releases - opting to letting new versions sit in OSS-Fuzz for a fortnight before releasing them (a cool strategy, and if only everything was architecturally simple enough that this could be applied everywhere) would no longer have a local performance impact.\r\n> \r\n> I agree with this, so [I have applied](https://github.com/google/oss-fuzz/pull/12078). We'll see where that goes.\r\n\r\n**YOU GOT ACCEPTED :D :face_holding_back_tears:**\r\n\r\nI forgot that it ships in macOS, and TIL it ships in Android as well. OSS-Fuzz's scope tries to extend beyond Google-immediate interests, so this broader status quo (incl. FreeBSD) constitutes a meaningful precedent of relevance – potentially represented by the speed with which the project was accepted without further question (basically 45 minutes).", + "createdAt": "2024-06-18T06:03:35Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2175089670", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6B3Zis", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> YOU GOT ACCEPTED :D 🥹\r\n\r\nYes, unfortunately, I [ran into problems integrating fuzzers][1], and I don't know what to do next, so I have to put OSS-Fuzz on the back plate. Thus, we're back to where we started.\r\n\r\nThank you for the suggestion, though.\r\n\r\n[1]: https://github.com/google/oss-fuzz/pull/12098", + "createdAt": "2024-06-19T13:54:56Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2178783404", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6C-bO7", + "author": { + "login": "spatula75" + }, + "authorAssociation": "NONE", + "body": "I also noticed this behavioral change, because on occasion I need to add a long list of numbers in `dc`, and rather than count how many numbers I have and issuing the right number of `+` operators, I have a habit of just entering way more `+` operators than I need and then grabbing the stack top value afterward. e.g.:\r\n```\r\n1 7 8 6 4 9 1 2 3 6 4 + + + + + + + + + + + + + + + + + + p\r\n```\r\nHistorically, and with other implementations of `dc`, this would result in a lot of `dc: stack empty` messages followed by the sum at the end. Now it results in a clear stack with no result.\r\n\r\nI can certainly see the merit of returning to a clean slate on an error condition when running in an \"automated\" fashion - blowing the stack in this case would generally mean you did something wrong and the results might not be trustworthy.\r\n\r\nI guess what frustrates me is that in interactive mode, this is a significant change from historical behavior that caught me off-guard and also blows up my use case, requiring me to now count how many numbers I have on the stack, and then to supply N-1 operators to get to the result I want. It's also making my stack more \"fragile\" in the sense that I now have to be very careful about my interactions with `dc`.\r\n\r\nI agree that changing behavior based on configuration-time options sounds like overkill and a lot of added complexity, especially when some users of a system might find the new behavior desirable.\r\n\r\nI see a few other possibilities:\r\n- A command line switch to either enable or disable stack clearing when running in `dc` mode, so a user can be explicit about whether they want the new behavior or the historical behavior. Whether the switch enables the old behavior, or enables the new behavior doesn't matter much to me; I'd just add a shell alias if I needed to always supply a switch.\r\n- A rule that when running in interactive mode (ie, from a keyboard not from a pipe or a file), you get the historical (non-clearing) behavior, but in non-interactive mode you always get the new (stack-clearing) behavior.\r\n- Some hybrid of the two: maybe in interactive mode you get the historical behavior _unless_ you supply a command-line switch\r\n\r\nOf course I realize that all of these options add complexity too, but hopefully not altogether too much. Any one of them would make me a happy camper.", + "createdAt": "2024-06-28T17:58:14Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2197402555", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6DCMZY", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I am not a fan of having different behavior in interative mode vs non-interactive mode.\r\n\r\nHowever, I think `dc` implementations tend to exit on any error in non-interactive mode anyway. At least GNU `dc` does, IIRC. This one definitely does, and this behavior is documented.\r\n\r\nSo this change would only affect interactive uses anyway.\r\n\r\nI will go ahead and make the change. I will start fuzzing as well. If few or no problems appear, I will make a release.", + "createdAt": "2024-06-30T00:55:05Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 2 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2198390360", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6JdDT8", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Okay, it took me a long time to have the time for fuzzing and testing, but this change made it into 7.0.0.\r\n\r\nI think I can close this report now, but if there are still problems, feel free to reopen.", + "createdAt": "2024-08-23T03:03:02Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/79#issuecomment-2306094332", + "viewerDidAuthor": true + } + ], + "createdAt": "2024-06-16T10:02:06Z", + "id": "I_kwDOCL0xJc6MaBsK", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 79, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Stack-consumption-on-error headscratch in comparison to other `dc`s", + "updatedAt": "2024-08-23T03:03:02Z", + "url": "https://github.com/gavinhoward/bc/issues/79" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjI2NjI1MTQx", + "is_bot": false, + "login": "freebrowser1", + "name": "" + }, + "body": "Excellent software !\r\n\r\nThis `bc` is MUCH faster than the bc supplied to Linux distros. I downloaded the source package, compiled under Ubuntu ARM and it worked. I did the same on Termux on an Android cellphone (which also has the slow 1.7 version) and it was blazingly fast as well !\r\nIt can be used for other bases up till sixteen. I changed it (locally, not on this Github site) to max base 36.\r\nMaybe that can be an option to publish it here.", + "closed": true, + "closedAt": "2024-05-15T15:52:29Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc59oi_N", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for your compliments!\r\n\r\nAs it turns out, it's the accompanying `dc` that only goes up to base 16. `bc` goes up to base 36.\r\n\r\nThere is a reason for base 36: according to the `bc` standard, it must be possible to set all input bases with a one character number. This is so any input base could be set no matter the *current* input base.\r\n\r\nFor example, say you write a function that should work in multiple bases. What if it temporarily has to set a new input base. How does it do that when the input base could be anything from binary to hexadecimal?\r\n\r\nThe answer is [here][1] (scroll down to where it says, \"When either ibase or obase is assigned a single digit value...\").\r\n\r\nNow my `bc` does take that up to base 35, which is the base you can reach by using `Z` as the single digit value.\r\n\r\nTo test this, try this code:\r\n\r\n```\r\n$ bc\r\n>>> obase=Z\r\n>>> 35\r\n01 00\r\n>>> quit\r\n```\r\n\r\nI hope this helps.\r\n\r\n[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html#tag_20_09_13_03", + "createdAt": "2024-05-13T14:35:35Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/78#issuecomment-2107781069", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc59sMoG", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I realize I forgot to include an example with `ibase`.\r\n\r\n```\r\n$ bc\r\n>>> ibase=Z\r\n>>> 10\r\n35\r\n>>> ibase=6*6\r\n>>> 10\r\n36\r\n>>> quit\r\n```\r\n\r\nSo yes, my `bc` already goes up to base 36 for `ibase` too, although you do need some special way, like `6*6`, to get it.", + "createdAt": "2024-05-13T20:24:59Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/78#issuecomment-2108738054", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5978rz", + "author": { + "login": "freebrowser1" + }, + "authorAssociation": "NONE", + "body": "I have changed a few source files (find in the files in the accompanied zip lines with //!!).\r\nThis allows using max base 36 with all digits and all UPPERCASE letters. When I and O are not wanted, use `export NO_I_O_DIGITS=1` (or any value) before executing bc and 34 = @, 35 = #.\r\n\r\n[src.zip](https://github.com/gavinhoward/bc/files/15323750/src.zip)\r\n", + "createdAt": "2024-05-15T15:31:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/78#issuecomment-2112867059", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc598Hyk", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You did not read my comments. My `bc` already supports up to base 36.\r\n\r\nYour changes are not needed.\r\n\r\nClosing.", + "createdAt": "2024-05-15T15:52:29Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/78#issuecomment-2112912548", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5-Emcm", + "author": { + "login": "freebrowser1" + }, + "authorAssociation": "NONE", + "body": "I checked again, downloaded the source kit, compiled it (Ubuntu arm64) and ran this:\r\n' bin/bc -l <<< \"ibase=obase=24; 2^G;\"'\r\nThis results in `04 17 18 16`, i.e. decimal numbers as 'digits' which should only appear with base above 36.\r\nAfter applying my changes, it issues the correct value '4HIG'.\r\n", + "createdAt": "2024-05-16T12:35:20Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/78#issuecomment-2115135270", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5-E7EK", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "This cannot be changed.\r\n\r\nThere is a [standard for `bc`][1], and in that standard, it says,\r\n\r\n> For bases greater than 16, each digit shall be written as a separate multi-digit decimal number. Each digit except the most significant fractional digit shall be preceded by a single <space>. For bases from 17 to 100, bc shall write two-digit decimal numbers; for bases from 101 to 1000, three-digit decimal strings, and so on.\r\n\r\nSo no, as much as I would like to change it, it cannot be changed.\r\n\r\n[1]: https://pubs.opengroup.org/onlinepubs/009696799/utilities/bc.html", + "createdAt": "2024-05-16T13:15:39Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/78#issuecomment-2115219722", + "viewerDidAuthor": true + } + ], + "createdAt": "2024-05-13T07:31:19Z", + "id": "I_kwDOCL0xJc6Infdz", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 78, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "NOT_PLANNED", + "title": "Not an issue, but a change proposal", + "updatedAt": "2024-05-16T13:15:40Z", + "url": "https://github.com/gavinhoward/bc/issues/78" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOB00gDQ", + "is_bot": false, + "login": "oliverkwebb", + "name": "Oliver Webb" + }, + "body": "First I'd like to thank you for the work and care in making bc.\r\n\r\nI replaced GNU bc with your bc on my system, and ran into a error trying to run bc with some external bc libraries that define functions such as `abs()`\r\n\r\nThis is because your bc already has a built in `abs()`, and unlike the functions in the -l math library, will not let you redefine it because it appear to not just be a function, but also a lexer tokens/keyword.\r\n\r\nIs this a problem that you've ran into or considered before? ", + "closed": true, + "closedAt": "2024-05-08T17:39:46Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc59O96s", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yup! And my `bc` already has a solution:\r\n\r\n```\r\n$ bc -r abs <other_args...>\r\n```\r\n\r\nSee [here][1], scroll to the `-r`/`--redefine` option.\r\n\r\nIn short, it allows you to \"redefine\" keywords as functions, variables, or arrays.\r\n\r\nOf course, if that doesn't fix your problem, then it is a bug.\r\n\r\n[1]: https://github.com/gavinhoward/bc/blob/master/manuals/bc/A.1.md#options", + "createdAt": "2024-05-08T17:34:29Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/77#issuecomment-2101075628", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc59O_7j", + "author": { + "login": "oliverkwebb" + }, + "authorAssociation": "NONE", + "body": "Putting `-r abs` in my function arguments will run the library.\r\n\r\nThank you for your help", + "createdAt": "2024-05-08T17:39:46Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/77#issuecomment-2101083875", + "viewerDidAuthor": false + } + ], + "createdAt": "2024-05-08T17:29:50Z", + "id": "I_kwDOCL0xJc6IQwkm", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 77, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Allowing redefinition of builtin function such as abs() for compatibility with bc scripts", + "updatedAt": "2024-05-08T17:39:46Z", + "url": "https://github.com/gavinhoward/bc/issues/77" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjc0MzM1NDcx", + "is_bot": false, + "login": "mogando668", + "name": "" + }, + "body": "Dear Mr. Howard,\r\n\r\nFor gigantic `obase`s, like those below the line, even though they're clearly beyond the hard-coded `obase `max of `2,147,483,647`,`bc` appears to calculate the expression to full precision before erroring out, thus undermining any early exit criteria that ensure built-in named variables are within designated limits. I haven't tested against `ibase` but I suspect something similar would plague it, i.e. the right hand side expression is being calculated to full precision before any attempts to check them against caps.\r\n\r\nThe full `zsh`-based testing code and output are attached below.\r\n\r\nYours Sincerely\r\nJason K\r\n\r\nps : I've noticed the same issue plagues both `gnu-bc` I've installed via Homebrew as well as the macOS built-in `bc`. \r\n\r\n```\r\n 2 ^ 8 ^ 1 := 2 ^ 8\r\n 2 ^ 8 ^ 2 := 2 ^ 64\r\n 2 ^ 8 ^ 3 := 2 ^ 512\r\n 2 ^ 8 ^ 4 := 2 ^ 4096\r\n 2 ^ 8 ^ 5 := 2 ^ 32768\r\n 2 ^ 8 ^ 6 := 2 ^ 262144\r\n 2 ^ 8 ^ 7 := 2 ^ 2097152\r\n----------------------------\r\n 2 ^ 8 ^ 8 := 2 ^ 16777216\r\n 2 ^ 8 ^ 9 := 2 ^ 134217728\r\n 2 ^ 8 ^ 10 := 2 ^ 1073741824\r\n```\r\n\r\n\r\n```\r\nbc 1.07.1\r\nCopyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.\r\n\r\nDarwin m1mx4CT 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:37 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T6000 arm64\r\n\r\ngbc is /usr/local/bin/gbc\r\n\r\nBC_BASE_MAX = 2147483647\r\nBC_DIM_MAX = 16777215\r\nBC_SCALE_MAX = 2147483647\r\nBC_STRING_MAX = 2147483647\r\nMAX Exponent = 9223372036854775807\r\nNumber of vars = 32767\r\n\r\n```\r\n\r\n`for __ in $( jot 10 ); do ( time ( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --preserve-status --foreground 8 dash -c 'for __; do echo \"$__\" | gbc; done' _ ) ); echo \"\\f ----------\\n\\t finished 2^8^$__ with exit status $? ... \\n --------\"; done`\r\n\r\n```\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.01s system 86% cpu 0.008 total\r\n\r\n ----------\r\n\t finished 2^8^1 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.01s system 58% cpu 0.012 total\r\n\r\n ----------\r\n\t finished 2^8^2 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.00s system 82% cpu 0.007 total\r\n\r\n ----------\r\n\t finished 2^8^3 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.00s system 84% cpu 0.008 total\r\n\r\n ----------\r\n\t finished 2^8^4 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.01s user 0.00s system 90% cpu 0.012 total\r\n\r\n ----------\r\n\t finished 2^8^5 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.14s user 0.01s system 98% cpu 0.143 total\r\n\r\n ----------\r\n\t finished 2^8^6 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 3.64s user 0.01s system 99% cpu 3.654 total\r\n\r\n ----------\r\n\t finished 2^8^7 with exit status 0 ... \r\n --------\r\ntimeout: sending signal TERM to command ‘dash’\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.00s system 0% cpu 8.009 total\r\n\r\n ----------\r\n\t finished 2^8^8 with exit status 0 ... \r\n --------\r\ntimeout: sending signal TERM to command ‘dash’\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.00s system 0% cpu 8.008 total\r\n\r\n ----------\r\n\t finished 2^8^9 with exit status 0 ... \r\n --------\r\nRuntime warning (func=(main), adr=13): obase too large, set to 2147483647\r\ntimeout: sending signal TERM to command ‘dash’\r\n( printf 'obase=2^8^%d\\0' \"$__\" | xargs -0 -n 1 -P 24 timeout -v --foregroun) 0.00s user 0.01s system 0% cpu 8.011 total\r\n\r\n ----------\r\n\t finished 2^8^10 with exit status 0 ... \r\n --------\r\n```", + "closed": true, + "closedAt": "2024-01-27T20:24:51Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5yCwr9", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "In general, this problem is unsolvable. It's a consequence of the limits of computing. (The technical term is \"Turing-completeness.\")\r\n\r\nFor example, to us it's obvious that `2^8^10` is out of range. But computers do not understand any \"concept\" of math, so they can't tell.\r\n\r\nAll they can do is execute the code that they are given.\r\n\r\nYou'd see an different execution time if you did this:\r\n\r\n```\r\nobase = 104438888141315250669175271071662438257996424904738378038423348328395390\\\r\n797155745684882681193499755834089010671443926283798757343818579360726323\\\r\n608785136527794595697654370999834036159013438371831442807001185594622637\\\r\n631883939771274567233468434458661749680790870580370407128404874011860911\\\r\n446797778359802900668693897688178778594690563019026094059957945343282346\\\r\n930302669644305902501597239986771421554169383555988529148631823791443449\\\r\n673408781187263949647510018904134900841706167509366833385055103297208826\\\r\n955076998361636941193301521379682583718809183365675122131849284636812555\\\r\n022599830041234478486259567449219461702380650591324561082573183538008760\\\r\n862210283427019769820231316901767800667519548507992163641937028537512478\\\r\n401490715913545998279051339961155179427110683113409058427288427979155484\\\r\n978295432353451706522326906139490598769300212296339568778287894844061600\\\r\n741294567491982305057164237715481632138063104590291613692670834285644073\\\r\n044789997190178146576347322385026725305989979599609079946920177462481771\\\r\n844986745565925017832907047311943316555080756822184657174637329688491281\\\r\n952031745700244092661691087414838507841192980452298185733897764810312608\\\r\n590300130241346718972667321649151113160292078173803343609024380470834040\\\r\n3154190336\r\n```\r\n\r\ninstead of this:\r\n\r\n```\r\nobase = 2^8^4\r\n```\r\n\r\nAgain, the computer has no idea that `2^8^4` cannot work until it calculates it. We can see it by eye (\"`8^4` is definitely greater than 64, and `2^64` is the max\"), but the computer doesn't think that like. It sees:\r\n\r\n```\r\nconstant 2\r\nconstant 8\r\nconstant 4\r\nx = exponentiation 8 4\r\nexponentiation 2 x\r\n```\r\n\r\nI hope this makes sense.", + "createdAt": "2024-01-27T20:24:51Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/75#issuecomment-1913326333", + "viewerDidAuthor": true + } + ], + "createdAt": "2024-01-27T19:16:44Z", + "id": "I_kwDOCL0xJc59ZJcH", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 75, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "bc attempts to first calculate gigantic obase before erroring out", + "updatedAt": "2024-01-27T20:24:51Z", + "url": "https://github.com/gavinhoward/bc/issues/75" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOCGPbwA", + "is_bot": false, + "login": "shuang886", + "name": "Steven Huang" + }, + "body": "Hi, just want to make sure I'm not missing something glaringly obvious...\r\n\r\nI'm trying to build just the library on macOS, so:\r\n\r\n```\r\n% ./configure -a\r\nTesting for FreeBSD...\r\nNot on FreeBSD. Using _POSIX_C_SOURCE and _XOPEN_SOURCE.\r\n\r\nTesting for Mac OSX...\r\nOn Mac OSX. Using _DARWIN_C_SOURCE.\r\n\r\nTesting for OpenBSD...\r\nNot on OpenBSD.\r\n\r\nVersion: 6.7.2\r\nBuilding bc\r\nBuilding dc\r\n\r\nBC_ENABLE_LIBRARY=1\r\n\r\nBC_ENABLE_HISTORY=0\r\nBC_ENABLE_EXTRA_MATH=1\r\nBC_ENABLE_NLS=0\r\n\r\nBC_ENABLE_AFL=0\r\n\r\nBC_NUM_KARATSUBA_LEN=32\r\n\r\nCC=c99\r\nCFLAGS= -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0\r\nHOSTCC=c99\r\nHOSTCFLAGS=\r\nCPPFLAGS=-DNDEBUG -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700\r\nLDFLAGS=-s \r\nPREFIX=/usr/local\r\nBINDIR=/usr/local/bin\r\nINCLUDEDIR=/usr/local/include\r\nLIBDIR=/usr/local/lib\r\nDATAROOTDIR=/usr/local/share\r\nDATADIR=/usr/local/share\r\nMANDIR=/usr/local/share/man\r\nMAN1DIR=/usr/local/share/man/man1\r\nMAN3DIR=/usr/local/share/man/man3\r\nNLSPATH=\r\nPC_PATH=/opt/homebrew/lib/pkgconfig\r\nEXECSUFFIX=\r\nEXECPREFIX=\r\nDESTDIR=\r\nLONG_BIT=\r\nGEN_HOST=1\r\nGEN_EMU=\r\n\r\nSetting Defaults\r\n================\r\nbc.banner=0\r\nbc.sigint_reset=1\r\ndc.sigint_reset=1\r\nbc.tty_mode=1\r\ndc.tty_mode=0\r\nbc.prompt=1\r\ndc.prompt=0\r\nbc.expr_exit=1\r\ndc.expr_exit=1\r\nbc.digit_clamp=0\r\ndc.digit_clamp=0\r\n```\r\n\r\nseems to be happy, but it doesn't actually build:\r\n\r\n```\r\n% make\r\nmkdir -p bin\r\nc99 -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=HN -DEXECPREFIX= -DMAINEXEC=bc -D_DARWIN_C_SOURCE -DBC_NUM_KARATSUBA_LEN=32 -DBC_ENABLE_NLS=0 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=0 -DBC_ENABLE_LIBRARY=1 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DNDEBUG -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -o src/args.o -c ./src//args.c\r\n./src//args.c:62:6: error: use of undeclared identifier 'vm'\r\n if (vm->exprs.v == NULL)\r\n ^\r\n./src//args.c:64:16: error: use of undeclared identifier 'vm'\r\n bc_vec_init(&vm->exprs, sizeof(uchar), BC_DTOR_NONE);\r\n ^\r\n...lots more...\r\n```\r\n\r\n`vm` appears to be defined in `src/vm.c` but inside a `#if !BC_ENABLE_LIBRARY`, while a lot of code in `src/args.c` are not correspondingly enclosed. I tried to sprinkle in some `#if !BC_ENABLE_LIBRARY` directives but that just exposed more code that needed to be `#ifdef`ed out.\r\n\r\nBuilding the executables (i.e., just plain `./configure`) compiles and runs fine.\r\n\r\nWould you mind clarifying if there's more needed than `./configure -a`? I couldn't find anything that helps in the build manual, and I get the sense that `args.c` should not have been in the `Makefile` at all...\r\n\r\nThanks!", + "closed": true, + "closedAt": "2023-11-27T21:30:42Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5s_tei", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You're not missing something glaringly obvious. That is a bug because it should build with no errors.\r\n\r\nI think I fixed it in 7807eead159b80b51b8c81680608f8187284971e; can you pull and test for me?\r\n\r\nIf that *is* the fix, then the problem was an extra slash in a path; apparently Mac OSX does not clean paths when doing a string comparison. Oops.", + "createdAt": "2023-11-27T21:24:37Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/71#issuecomment-1828640674", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5s_vWb", + "author": { + "login": "shuang886" + }, + "authorAssociation": "NONE", + "body": "Works now, thanks!", + "createdAt": "2023-11-27T21:30:42Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/71#issuecomment-1828648347", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5s_vvD", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You're welcome. I'll put out a new release with the fix.", + "createdAt": "2023-11-27T21:31:57Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/71#issuecomment-1828649923", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5s_y9T", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Ah! I made a mistake! Could you pull 7eaa40ab8cac29893155471076c621c2f9929d33 and see if that works?", + "createdAt": "2023-11-27T21:41:25Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/71#issuecomment-1828663123", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5s_zsO", + "author": { + "login": "shuang886" + }, + "authorAssociation": "NONE", + "body": "Yup, still works.", + "createdAt": "2023-11-27T21:43:29Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/71#issuecomment-1828666126", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5s_0Ig", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you, and I'm sorry.", + "createdAt": "2023-11-27T21:44:49Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "HEART", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/71#issuecomment-1828667936", + "viewerDidAuthor": true + } + ], + "createdAt": "2023-11-27T17:48:32Z", + "id": "I_kwDOCL0xJc53-Mb1", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 71, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Build errors after ./configure -a", + "updatedAt": "2023-11-27T21:44:50Z", + "url": "https://github.com/gavinhoward/bc/issues/71" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOBZsPsA", + "is_bot": false, + "login": "STSMHQ", + "name": "STSM" + }, + "body": "Hi, @gavinhoward,\r\n\r\nI read the [documentation file](https://git.gavinhoward.com/gavin/bc/src/branch/master/manuals/bc/A.1.md) and it seems that arrays can only old a single value per each index (a number or a string). Is there any workaround to be able to store more than one single value in an array?\r\n\r\n```shell\r\n# This works\r\nbc_example[0] = 1;\r\n\r\n# This doesn't\r\nbc_example[1] = [1, 2, 3];\r\nbc_example[2] = [1, \"Random\", 3, \"Another\"];\r\n\r\nprint bc_example[2][1] # Random\r\n```\r\n\r\nAs I already stated before in another issue, I'm using your amazing tool to keep track of my expenses and it would be amazing to be able to create a \"matrix\" or an \"array of arrays\" as people often call it. Although I know that my use case isn't the general one and that the type of feature that I'm requesting doesn't make much sense considering the main goal/purpose of this tool, I'm opening this issue to know if what I want is somehow possible using any syntax workaround not documented in the above file.", + "closed": true, + "closedAt": "2023-11-13T16:02:39Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5ruIip", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Unfortunately, there is not any workaround, and that is on purpose. The `bc` language is just too restricted to go any further without *serious* work.\r\n\r\nIt is *possible*, yes. However, I believe that would be a mistake.\r\n\r\nI once said this:\r\n\r\n> Good software design includes putting whatever complexity must exist where it *best fits*.\r\n>\r\n> -- [\"Justifying a Backwards Design Decision for Yao][1]\r\n\r\nSo one of the skills of a good programmer is knowing *where* complexity should go.\r\n\r\nIf you need multiple values in one array slot, it sounds like you need structs, objects, or some other compound data thing. That sort of complexity should live in a \"proper\" programming language.\r\n\r\nSo I suggest that you use a \"proper\" programming language with arbitrary-precision numbers, like Python.\r\n\r\nThat said, I don't want to just hang you out to dry with no solution!\r\n\r\nYou're using my `bc` because it was the best for the job until now, right? Can you tell me why that is?\r\n\r\nYou've mentioned that you use it for finances; unlike most other math, finances basically require base 10 math, so is that why my `bc` was best?\r\n\r\nIf so, I might have a solution for you.\r\n\r\nDo you know Python?\r\n\r\nIf so, I could learn how to create a C extension for Python, and then I could use my [`bc`'s library form][2] to create a Python extension to use my `bc`'s library. That way, you could use Python, but still have the decimal-based math you need for finances, and I wouldn't have to do a ton of work to add multi-values to `bc` while also adding my `bc` to Python.\r\n\r\nAs an extra bonus, if you use Python, you could then have your files be output to JSON or another well-known format. And hey, I may even be able to help you convert your scripts to Python if you send them to me. (Do it through email, not this bug report!)\r\n\r\nWill that work for you?\r\n\r\n[1]: https://gavinhoward.com/2023/02/justifying-a-backwards-design-decision-for-yao/#designing-for-lsp\r\n[2]: https://github.com/gavinhoward/bc/blob/master/manuals/bcl.3.md", + "createdAt": "2023-11-12T22:06:36Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/70#issuecomment-1807255721", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5rytlH", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "Hi, @gavinhoward,\r\n\r\nI'm using your `bc` tool for over a year to keep track of my expenses and everything related to my personal finances. The main reason behind this decision is what you just said, generally speaking, finances use base 10 math and `bc-gh` allows me to have arbitrary-precision numbers on it. The second big reason is **you**. The passion you put into your projects is truly amazing. I know that as long as you're alive and well, you'll keep this project running and that's a important thing for me. Also, your support as shown here in this issue is very, very good. To end, I'm a follower of your [blog](https://gavinhoward.com/) since the beginning of 2022.\r\n\r\nI don't know Python. I could learn it but I don't like much its' syntax and the biggest part of its' design choices. I'll probably take this chance to improve my NuShell knowledge and try to integrate `bc-gh` into it. With NuShell, I know that I can work with well-known formats like JSON/YAML/TOML in order to be able to implement my desired workflow. Thank you for everything and keep up the excellent work.\r\n\r\n", + "createdAt": "2023-11-13T16:02:39Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/70#issuecomment-1808456007", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5ry87l", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You flatter me! :) But more seriously, thank you for the compliments; I struggle to see worth in my code, and that helps a lot.\r\n\r\nI'm sorry I couldn't help more. But feel free to ask any questions to help with your port to NuShell. I'm happy to help with that since I was not much help here!", + "createdAt": "2023-11-13T16:35:41Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/70#issuecomment-1808518885", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5r93lR", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "> You flatter me! :) But more seriously, thank you for the compliments; I struggle to see worth in my code, and that helps a lot.\r\n\r\nYour code and your blog posts truly make a difference to my life 💙\r\n\r\n> I'm sorry I couldn't help more. But feel free to ask any questions to help with your port to NuShell. I'm happy to help with that since I was not much help here!\r\n\r\nYou don't have to be sorry. I read the documentation of NuShell and I think I'm able to implement my current workflow with `bc-gh` on it pretty easily. Thank you for all your spent time and help offered. Have a nice rest of week!", + "createdAt": "2023-11-14T21:51:18Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/70#issuecomment-1811380561", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5sEd4h", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You're welcome.\r\n\r\nHey, when you finish your NuShell implementation, I would love it if you could email it to me; I'm almost done with my new language, and I'd love to use it as a test application.", + "createdAt": "2023-11-15T19:12:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/70#issuecomment-1813110305", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5sIRpw", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "I'm still studying it. As NuShell didn't reach yet the first ever stable level, I don't know if I should implement all of my workflow directly using it. Currently, I'm just exploring the data processing pipeline features that they have against a workflow using `sed`/`awk` and your `bc-gh`, for instance. All I'm doing is pretty much pick a JSON file, iterate over it, apply some editions/additions using your `bc-gh` and then save it again to a JSON file. Hope you like NuShell as much as I do and one day in the future, it can have the same popularity as `zsh`.\r\n\r\nIf in the future I implement something that I'm proud of, I'll happily share it with you, Gavin.", + "createdAt": "2023-11-16T09:48:33Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/70#issuecomment-1814108784", + "viewerDidAuthor": false + } + ], + "createdAt": "2023-11-12T18:51:58Z", + "id": "I_kwDOCL0xJc52lbxv", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 70, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Array - Multiple values ", + "updatedAt": "2023-11-16T09:48:33Z", + "url": "https://github.com/gavinhoward/bc/issues/70" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ4MjY5Mzk5", + "is_bot": false, + "login": "TediusTimmy", + "name": "Thomas" + }, + "body": "Greetings,\r\n\r\nI am going to start with some pleasantries and BS and work from there.\r\n\r\nHello. I also like bc. I have some bc-related repos: https://github.com/TediusTimmy/GNU_bc_with_GMP and https://github.com/TediusTimmy/OpenBSD_bc_with_GMP . The first one is an example of how fast bc can be, if we just use GMP. I also fixed as many of the crashes as I was aware of (admittedly, by fixing the back-end to be more robust rather than fixing the garbage generated by the front-end; if you find a crash, please let me know). In the second repo, I have a comparison of the speed of several implementations of bc (based on my own benchmark), including yours. I found it to be roughly comparable to, but still slightly slower than, OpenBSD's bc (except on one specific task, where it even beat GMP). I also wrote a spreadsheet program to use bc-like numbers: https://github.com/TediusTimmy/BC-DeciCalc (which I _really_ need to work on the documentation for).\r\n\r\nAs for those bug-fixes in GNU bc: I really haven't been able to get ahold of Phil, or Ken. Thankfully, there were some really helpful people at Debian, and maybe one day, either https://salsa.debian.org/debian/bc/-/merge_requests/4 will be merged in, or they will just use a better bc implementation, like yours.\r\n\r\nFinally, are you aware of this: https://www.php.net/manual/en/book.bc.php ? They have forked the GNU bc code for number.c and include it in their builds. Maybe they could use the library version of your code? (My only concern would be https://bugs.php.net/bug.php?id=66364 )\r\n\r\n\r\nOn to the issue: I'm not a big fan of your `p(x,y)` function. Let me explain by way of a contrived example: `p(1024,32.1)`. Now `1024` is `2^10`, so this SHOULD give us `2^10^32.1` which is `2^(10*32.1)` or `2^321`. And that's an integer, so it should be exact. But, when we do this we find that only the first 18 digits are correct with the default scale of 20. As you manipulate the scale variable, you find a correlation between the scale variable and the number of correct digits. So, in order to compute this result to 20 digits of scale, you would need to compute the log and exponential to around 117 digits of scale. I don't think that I'm out of line to expect that when you increase the scale of a computation that maybe the last three digits change and you then get extra new good digits. With this implementation of `p(x,y)`, a good chunk of the number changes.\r\n\r\nAs I was thinking about this, four cases came up:\r\n1) If we are raising a number greater than one to a positive power, then we want to bump the scale by the length of the integer part.\r\n2) If we are raising a number greater than one to a negative power, then we can probably use `e(y*l(x))` as that result goes to zero.\r\n3) Conversely, if we are raising a number less than one to a positive power, then we can probably use `e(y*l(x))` as the result goes to zero.\r\n4) Finally, if if we are raising a number less than one to a negative power, then we need to be extra careful. We need to use the reciprocal to find the integer part, but want the reciprocal to the increased scale to have an accurate result (in my testing, it removed a problem in the unit in the last place).\r\n\r\nSo, my final function to improve `p(x,y)`, then commentary:\r\n```\r\ndefine pow(x,y){\r\n\tauto a,i,s,z\r\n\tif(0==y)return 1@scale\r\n\tif(0==x){\r\n\t\tif(y>0)return 0\r\n\t\treturn 1/0\r\n\t}\r\n\ta=y$\r\n\tif(y==a)return(x^a)@scale\r\n\tz=0\r\n\tif(x<1){\r\n\t\ty=-y\r\n\t\ta=-a\r\n\t\tz=x\r\n\t\tx=1/x\r\n\t}\r\n\tif(y<0){\r\n\t\treturn e(y*l(x))\r\n\t}\r\n\ti=x^a\r\n\ts=scale\r\n\tscale+=length(i)\r\n\tif(z){\r\n\t\tx=1/z\r\n\t\ti=x^a\r\n\t}\r\n\ti*=e((y-a)*l(x))\r\n\tscale=s\r\n\treturn i@scale\r\n}\r\n```\r\nI started with your `p(x,y)` function and then added code. We begin with some special case handling for zeros, because people will complain (I didn't realize that bc already defines `0^0==1`). Next is the detection for the easy case of an integer exponent that you already had. We then handle if x is between zero and one: we save x and proceed with the reciprocal, while negating the exponent. Remember that `l(x)==-l(1/x)`. I specifically ignore if x is negative, because we will eventually call `l(x)`, which will return an erroneous value if x is negative. If the exponent is now negative, we fall back on `e(y*l(x))`: that number is going to zero anyway. Next, we compute the integral portion of the exponent and use it to get the working scale for the fractional part of the exponent. After that, if we took the reciprocal of x, recompute the reciprocal and the integral part of the exponent at this higher scale to ensure that both are accurate. Penultimately, compute the fractional part of the exponent and multiply it by the integral part to get the complete exponent. Finally, return a result at the desired scale.\r\n", + "closed": true, + "closedAt": "2023-08-19T06:38:17Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5kV35W", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Hello.\r\n\r\n> As for those bug-fixes in GNU bc: I really haven't been able to get ahold of Phil, or Ken. Thankfully, there were some really helpful people at Debian, and maybe one day, either https://salsa.debian.org/debian/bc/-/merge_requests/4 will be merged in, or they will just use a better bc implementation, like yours.\r\n\r\nMaybe I'm selfish here, but I think they should just use mine. I tested my `bc` against all of the items at <https://lists.debian.org/debian-devel/2022/08/msg00035.html> and <https://bugs.launchpad.net/ubuntu/+source/bc/+bug/1775776>, and not only does my `bc` not crash, ASan, UBSan, and Valgrind report no errors, not even memory leaks. (Yay for fuzzing!) If you know how I might submit a request for them to do so, please let me know. I'll even build the Debian package myself!\r\n\r\n> Finally, are you aware of this: https://www.php.net/manual/en/book.bc.php ? They have forked the GNU bc code for number.c and include it in their builds. Maybe they could use the library version of your code? \r\n\r\nI *am* aware, actually. This was in the back of my mind when I accepted a request from my FreeBSD contact to implement the `bcl` library. But I don't know how to contact them and convince them to use my library.\r\n\r\n> (My only concern would be https://bugs.php.net/bug.php?id=66364 )\r\n\r\nUnfortunately, the PHP authors are wrong; that behavior is well-documented in the [POSIX standard for `bc`][1], which says about multiplication:\r\n\r\n> The result shall be the product of the two expressions. If a and b are the scales of the two expressions, then the scale of the result shall be:\r\n>\r\n> `min(a+b,max(scale,a,b))`\r\n\r\nSo their fix for that bug report is wrong, in my opinion. Thus, I don't think they'll adopt my library because I won't patch my library for their \"bug.\"\r\n\r\n> On to the issue: I'm not a big fan of your `p(x,y)` function...\r\n\r\nYour criticisms are absolutely fair. Fair enough that I took your code (with style fixes), documented it, and pushed it as the `better_pow` branch in this repo.\r\n\r\nCan you take a look to check if the code is correct, that it works for you, and that the documentation I added in `manuals/algorithms.md` is correct? I documented it in my own words, to make sure I understood the code.\r\n\r\nFinally, last item: do you think that you'll open more issues on `bc` in the future? If so, I'll add an account for you on my website; I just need an email address.\r\n\r\n[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html#tag_20_09_13_03", + "createdAt": "2023-08-18T07:09:12Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1683455574", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5kV5_7", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Forgot to say this:\r\n\r\n> In the second repo, I have a comparison of the speed of several implementations of bc (based on my own benchmark), including yours. I found it to be roughly comparable to, but still slightly slower than, OpenBSD's bc (except on one specific task, where it even beat GMP).\r\n\r\nThose benchmarks make sense to me, except plain OpenBSD `bc` being faster than mine; it uses plain `char` for digits, so mine should be faster. My guess is that it is parsing without many error checks.\r\n\r\nAlso, I store constants as strings, like GNU. This is because someone could change the `ibase` at any time, and if they do, that constant needs to be interpreted according to the new `ibase`. But I know for a fact that the OpenBSD `bc` has a different behavior: it will interpret the number according to the digits, no matter if the digits are invalid for the `ibase`. This allows it to precalculate, where GNU and I cannot.", + "createdAt": "2023-08-18T07:17:28Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1683464187", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5kbO1o", + "author": { + "login": "TediusTimmy" + }, + "authorAssociation": "NONE", + "body": "Many apologies. I posted that improvement and went straight to bed last night, and then life got in the way of me responding. And I am going to go straight to bed tonight, also.\r\n\r\n> If you know how I might submit a request for them to do so, please let me know.\r\n\r\nHonestly, when it comes to Debian, Philip Hands was a godsend (but, he isn't the maintainer). I tried emailing Phil Nelson and Ken Pizzini and Ryan Kavanagh, but those probably went into spam filters. Eventually, I emailed the debian-devel mailing list and someone who helps first-time contributors (Hands) picked it up and ran with it. Like any large open-source project, it has an inscrutable political organization to outsiders like us. I was lucky that they even have a merge request for the changes (which has been open for over a year).\r\n\r\nThe real problem is that GNU bc is \"good enough\". It has vulnerabilities that no one is known to have exploited (if they even are exploitable). People complain, but not loud enough to get things done. It works for its purpose, and doesn't seem to have a large user base.\r\n\r\n> But I don't know how to contact them and convince them to use my library.\r\n\r\nAgain: inscrutable political organization. I don't actually program with PHP, I also am just aware of this extension. Looking at this bug report ( https://github.com/php/php-src/issues/10967 ), maybe the internal mailing list or the RFC process is what you want. \r\n\r\n> the PHP authors are wrong\r\n\r\nYeah. Thought, looking at it again, they could have fixed the issue here ( https://github.com/php/php-src/blob/master/ext/bcmath/bcmath.c#L258 ) instead of where they did. You could convince them that this is the better place for a bodge between their code and the bc library (as the behavior is standards-driven). Though, even Debian has a bug for this: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=610988\r\n\r\n> with style fixes\r\n\r\nWhat did you change? Oh, that. I get that from a former workplace.\r\n\r\n> it uses plain char for digits\r\n\r\nIt uses the OpenSSL BIGNUM library, which is binary words ( https://github.com/openbsd/src/blob/master/usr.bin/dc/bcode.h#L24 and https://github.com/openbsd/src/blob/master/lib/libcrypto/bn/bn_local.h#L121 ). For every 64 bits of a number, they are operating on all 64 bits, and you are operating on a little over 63 bits of it and have a normalization step. The trade-off rears its ugly head when numbers get converted to/from decimal.\r\n\r\n> do you think that you'll open more issues on bc in the future\r\n\r\nI don't have any plans. This was a spur-of-the-moment thing. I had \"finished\" a pow function for the spreadsheet, and decided to rewrite it in bc. (And then, I spent a bunch of time rewriting it again, as I realized that I had missed some corner cases). I don't plan to make a habit of this.\r\n\r\nAs for reviewing things:\r\n\r\n> being non-zero is a flag for later and a value to be used\r\n\r\nI did that, didn't I? Bad me.\r\n\r\nI don't know if the algorithm needs this much detail. It is probably good to give the impression that someone put thought and care into making sure the results were accurate. Though, really it was just some rando who kept doing really large exponents and wanted some numerical stability as he cranked up the precision while looking at numbers like https://www.youtube.com/watch?v=BdHFLfv-ThQ.", + "createdAt": "2023-08-19T06:38:17Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1684860264", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5kbPwt", + "author": { + "login": "TediusTimmy" + }, + "authorAssociation": "NONE", + "body": "And I forgot to say something: I understand that the frustrating thing about the bcmath extension to PHP is that you have something that is _just better_. And you have no idea how to make things better.", + "createdAt": "2023-08-19T06:46:55Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1684864045", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5kcbqC", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> Eventually, I emailed the debian-devel mailing list and someone who helps first-time contributors (Hands) picked it up and ran with it. Like any large open-source project, it has an inscrutable political organization to outsiders like us.\r\n\r\nYeah, that sounds exhausting. Not worth it to me at the moment.\r\n\r\n> The real problem is that GNU bc is \"good enough\". It has vulnerabilities that no one is known to have exploited (if they even are exploitable). People complain, but not loud enough to get things done. It works for its purpose, and doesn't seem to have a large user base.\r\n\r\nThis is true.\r\n\r\n> Yeah. Thought, looking at it again, they could have fixed the issue here ( https://github.com/php/php-src/blob/master/ext/bcmath/bcmath.c#L258 ) instead of where they did. You could convince them that this is the better place for a bodge between their code and the bc library (as the behavior is standards-driven).\r\n\r\nEh, probably not worth it.\r\n\r\n> Though, even Debian has a bug for this: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=610988\r\n\r\nYikes. People don't read, do they? Okay, I *really* don't care about getting into Debian.\r\n\r\n> It uses the OpenSSL BIGNUM library, which is binary words\r\n\r\nOh, that was not what I understood. Oops. Those benchmarks make sense then.\r\n\r\n> I don't have any plans. This was a spur-of-the-moment thing.\r\n\r\nOkay.\r\n\r\n> As for reviewing things...I did that, didn't I? Bad me.\r\n\r\nWell, that `bc` code goes straight into the binary as a string. Using `z` as a flag and a value is useful to reduce the number of bytes used. I kept it for a reason.\r\n\r\n> I don't know if the algorithm needs this much detail. It is probably good to give the impression that someone put thought and care into making sure the results were accurate.\r\n\r\n*I* need that much detail. I *have* to understand every bit of code in this repo.\r\n\r\nTake, for example, the comment [here][1]. That was me explaining, *to myself*, an algorithm that someone else coded up. If there was a bug in that algorithm when I got it (and there was), there was no way for me to debug it unless I knew what it was supposed to be doing.\r\n\r\nIf there is a bug in your code, I need to understand your code to debug it.\r\n\r\nThat's why there is a wealth of information for developers; it's for *me*.\r\n\r\nSo I'm glad to know that the explanation is correct, but I'll keep all of it. :)\r\n\r\nI may wait a while to release a new version (I have a new PR about adding CMake support), but I will release a new version with your code within a reasonable time.\r\n\r\nThank you.\r\n\r\n[1]: https://github.com/gavinhoward/bc/blob/75cf2e3358b5a76780db0d448c02cf6f61065921/src/num.c#L3077-L3113", + "createdAt": "2023-08-20T04:43:10Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1685174914", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5nZ8wq", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "There is now a version (`6.6.1`) with your `p()` implementation. Thank you very much!", + "createdAt": "2023-09-26T05:30:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1734855722", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5nnXnb", + "author": { + "login": "TediusTimmy" + }, + "authorAssociation": "NONE", + "body": "You are welcome. I hope it is as useful for your other users as it is to me and not a maintenance burden on you.", + "createdAt": "2023-09-28T03:11:48Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1738373595", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5nnXzO", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "None at all now that I understand it, thanks to you!", + "createdAt": "2023-09-28T03:13:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/69#issuecomment-1738374350", + "viewerDidAuthor": true + } + ], + "createdAt": "2023-08-18T05:29:27Z", + "id": "I_kwDOCL0xJc5uoYUw", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 69, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Incoherent rambling followed by a suggestion for an improvement.", + "updatedAt": "2023-09-28T03:13:15Z", + "url": "https://github.com/gavinhoward/bc/issues/69" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjI5MDIyNQ==", + "is_bot": false, + "login": "mhorowitz", + "name": "" + }, + "body": "platform: MacOS Ventura 13.2.1 (m1 max)\r\ncompiler: c99 from Xcode 14.2.0\r\nversion: https://git.gavinhoward.com/gavin/bc.git 55a6c05b280fbfb6873e42a5825403c17417029a\r\n\r\nBuild fails:\r\n```\r\n$ ./configure -O3\r\n<success>\r\n$ make\r\nc99 -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=32 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DNDEBUG -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -o src/program.o -c ./src//program.c\r\n./src//program.c:2994:6: error: use of undeclared identifier 'SIGWINCH'\r\n if (BC_SIG_INTERRUPT(vm))\r\n ^\r\n./include/status.h:698:45: note: expanded from macro 'BC_SIG_INTERRUPT'\r\n BC_UNLIKELY((vm)->sig != 0 && (vm)->sig != SIGWINCH)\r\n ^\r\n./src//program.c:3724:6: error: use of undeclared identifier 'SIGWINCH'\r\n if (BC_SIG_INTERRUPT(vm))\r\n ^\r\n./include/status.h:698:45: note: expanded from macro 'BC_SIG_INTERRUPT'\r\n BC_UNLIKELY((vm)->sig != 0 && (vm)->sig != SIGWINCH)\r\n ^\r\n2 errors generated.\r\nmake: *** [src/program.o] Error 1\r\n```\r\nI think ideally, configure.sh would detect this, and apply an appropriate set of flags, or the source would be changed appropriately.\r\n\r\nAs a workaround, this allows a successful build:\r\n```\r\nCFLAGS=-D_DARWIN_C_SOURCE ./configure -O3\r\n```", + "closed": true, + "closedAt": "2023-03-31T17:44:43Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5Y4XHV", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Stupid GitHub, closing the issue just because I mention the number in a commit...\r\n\r\nAnyway, yes, this is a bug, and yes, `configure.sh` should detect this.\r\n\r\nI've added 29b4b6a4f27b07c4a176258aaf831a5208d4e116 in an attempt to fix this. Unfortunately, I don't have a Mac, so you'll need to test this for me. Would you please do that? Thank you.", + "createdAt": "2023-03-31T01:36:32Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/67#issuecomment-1491169749", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5Y8585", + "author": { + "login": "mhorowitz" + }, + "authorAssociation": "NONE", + "body": "> I've added https://github.com/gavinhoward/bc/commit/29b4b6a4f27b07c4a176258aaf831a5208d4e116 in an attempt to fix this. Unfortunately, I don't have a Mac, so you'll need to test this for me. Would you please do that? Thank you.\r\n\r\nI tested it. ./configure.sh output includes\r\n\r\n On Mac OSX. Using _DARWIN_C_SOURCE.\r\n\r\nAnd make completes without error. Thanks for the quick fix!", + "createdAt": "2023-03-31T17:44:43Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/67#issuecomment-1492361017", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5Y867a", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for testing! And thank you for the report. I rely on users like you to help me with Mac OSX!", + "createdAt": "2023-03-31T17:46:45Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "ROCKET", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/67#issuecomment-1492365018", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5c_2t2", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Release `6.6.0` is out with the fix. Thank you!", + "createdAt": "2023-05-23T23:11:04Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/67#issuecomment-1560243062", + "viewerDidAuthor": true + } + ], + "createdAt": "2023-03-30T22:25:15Z", + "id": "I_kwDOCL0xJc5iQKue", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 67, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Build fails on macOS", + "updatedAt": "2023-05-23T23:11:20Z", + "url": "https://github.com/gavinhoward/bc/issues/67" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOBZsPsA", + "is_bot": false, + "login": "STSMHQ", + "name": "STSM" + }, + "body": "Hi, there,\r\n\r\nI love your command line tool and your blog (I read all your posts). You're an amazing developer. I hope one day I can be like you.\r\nI'm opening this issue to ask you if there is any way to bypass the `Math error: overflow: number cannot fit` error on your calculator. I would like to test it for benchmark purposes against Julia REPL (for example), but your `bc` gives me this error when the number has too many digits.\r\n\r\nExample Calculation: `((169287^137)^920)^13256118217109`.\r\n\r\nRegards,\r\n**STSM**", + "closed": true, + "closedAt": "2023-03-21T17:06:49Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5XyVJh", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Hello,\r\n\r\nThank you for the compliments!\r\n\r\n> I'm opening this issue to ask you if there is any way to bypass the `Math error: overflow: number cannot fit` error on your calculator.\r\n\r\nIt depends.\r\n\r\nOn the particular example you gave, my machine did not give the error. (I am running an `x86_64` Linux machine.)\r\n\r\nThe error happens in this case because `bc` limits exponents to the maximum that can fit in the `unsigned long` type. There are good reasons for this, not least of which calculating a power with an exponent larger than that takes a long time.\r\n\r\nFor example, I started running the example calculation you gave seven hours ago, and it's still going.\r\n\r\nThe other reason is that the exponent needs to be converted into an `unsigned long` to do the actual calculation, which involves running a loop.\r\n\r\nBy the way, this is also the reason that exponents need to be integers.\r\n\r\nAnyway, one way to get around the limit would be to get a computer with a 64-bit `unsigned long` type. Machines that may *not* have that could include Windows (even if 64-bit) or 32-bit machines with any OS.\r\n\r\nAs an example, here are the limits for my machine (found by the `limits` keyword):\r\n\r\n```\r\n$ bc\r\n>>> limits\r\nBC_LONG_BIT = 64\r\nBC_BASE_DIGS = 9\r\nBC_BASE_POW = 1000000000\r\nBC_OVERFLOW_MAX = 18446744073709551615\r\n\r\nBC_BASE_MAX = 1000000000\r\nBC_DIM_MAX = 18446744073709551614\r\nBC_SCALE_MAX = 18446744073709551614\r\nBC_STRING_MAX = 18446744073709551614\r\nBC_NAME_MAX = 18446744073709551614\r\nBC_NUM_MAX = 18446744073709551614\r\nBC_RAND_MAX = 18446744073709551615\r\nMAX Exponent = 18446744073709551615\r\nNumber of vars = 18446744073709551614\r\n>>> quit\r\n```\r\n\r\nThere are two to notice: `BC_LONG_BIT` and `MAX Exponent`.\r\n\r\n`BC_LONG_BIT` is 64, which means `bc` was built assuming a 64-bit `unsigned long` type. `MAX Exponent` is the actual limit to the exponent, which equals `(2^64)-1`, which is `ULONG_MAX` on a machine with a 64-bit `unsigned long`.\r\n\r\nHowever, if I tell my `bc` to assume a 32-bit `unsigned long` when I build it, using:\r\n\r\n```\r\n$ LONG_BIT=32 ./configure <args>\r\n$ make\r\n```\r\n\r\nThen the limits look different:\r\n\r\n```\r\n$ bin/bc\r\n>>> limits\r\nBC_LONG_BIT = 32\r\nBC_BASE_DIGS = 4\r\nBC_BASE_POW = 10000\r\nBC_OVERFLOW_MAX = 4294967295\r\n\r\nBC_BASE_MAX = 10000\r\nBC_DIM_MAX = 4294967294\r\nBC_SCALE_MAX = 4294967294\r\nBC_STRING_MAX = 4294967294\r\nBC_NAME_MAX = 4294967294\r\nBC_NUM_MAX = 4294967294\r\nBC_RAND_MAX = 4294967295\r\nMAX Exponent = 4294967295\r\nNumber of vars = 18446744073709551614\r\n>>> quit\r\n```\r\n\r\n`BC_LONG_BIT` is now 32, and `MAX Exponent` is now 4294967295, which is `(2^32)-1`. Notice that 4294967295 is less than the last exponent (13256118217109) in your example calculation. This means that if 4294967295 is your `MAX Exponent`, you will get that error. And I *do* get that error when trying your example computation with that build.\r\n\r\nNow, there *is* still a way around it, but it requires some math knowledge.\r\n\r\nYou must know one fact: `(x^y)*(x^z) == x^(y+z)`.\r\n\r\nIn essence, if you multiply two powers of one number, the effect is the same as adding the exponents of those powers and then calculating the power from the sum of those exponents.\r\n\r\nUsually, you would want to just add the exponents and then calculate the power because multiplications would be much more expensive. However, in this case, we can do the opposite: split the exponent (13256118217109) into several numbers and then multiply all of those numbers together.\r\n\r\nLet's decide on one exponent to use, which I'll call `E`. I can divide 13256118217109 by `E`, and the result is the number of times that I need to multiply the power by itself. However, that will not be quite right because `E` almost certainly does not divide 13256118217109 evenly, so `13256118217109%E` won't be 0. In that case, we'll want to multiply the end result by the power where the exponent is equal to `13256118217109%E`.\r\n\r\nIt will all look like this (in `bc` code):\r\n\r\n```\r\nscale = 0\r\ns = ((169287^137)^920)\r\nn = s^E\r\nr = n\r\nt = 13256118217109 / E\r\nm = 13256118217109 % E\r\n\r\nfor (i = 1; i < t; ++i)\r\n{\r\n r *= n\r\n}\r\n\r\nr *= s^m\r\n```\r\n\r\nBut even then, we can make it faster. Since we are just multiplying the value by itself many times, we can use power again. This time, the exponents (3086 and 6172) are back within limits, so we're safe.\r\n\r\nIf we do that, we get:\r\n\r\n```\r\nscale = 0\r\ns = ((169287^137)^920)\r\nt = 13256118217109 / E\r\nm = 13256118217109 % E\r\nn = s^E\r\nr = n^t\r\nr *= s^m\r\n```\r\n\r\nAnd that should give us our answer.\r\n\r\nWe should set those exponents as best as we can to make it as efficient as possible.\r\n\r\nI know that my `bc` uses the binary representation of the exponent to calculate power. Every bit that's a 1 has an extra multiply.\r\n\r\nSo if I set one of the powers to `(2^32)-1`, I know every single bit will be 1, meaning that there will be extra multiplications. However, it will also mean I need to use an exponent of 3086 (`13256118217109/((2^32)-1)`), whereas if I set one of the powers to be `2^31`, there will only be a single 1 bit, but I will need to use an exponent of 6172.\r\n\r\nAn exponent of 6172 has the same amount of 1 bits as 3086 (it's just 3086 times 2), so it will require only one more multiply. However, `2^31` will require 30 less multiplies than `(2^32)-1`, so we'll go with that.\r\n\r\nThat gives us this code:\r\n\r\n```\r\nscale = 0\r\ne = 2^31\r\ns = ((169287^137)^920)\r\nt = 13256118217109 / e\r\nm = 13256118217109 % e\r\nn = s^e\r\nr = n^t\r\nr *= s^m\r\n```\r\n\r\nI haven't tested the above code because it will take forever. If there are problems, please let me know.\r\n\r\n> I would like to test it for benchmark purposes against Julia REPL (for example)\r\n\r\nMy `bc` will be slower than Julia. I am confident of that.\r\n\r\nThis is because my `bc` does not use the full range of hardware-native integers in order to use decimal-based math. I bet Julia does use the full range and uses binary-based math.\r\n\r\nAlso, since it's taken seven hours on my `bc` on a 64-bit machine, I am *wildly* confident that Julia will be better.\r\n\r\nYou may want a benchmark with a smaller exponent.", + "createdAt": "2023-03-16T22:04:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1472811617", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5X2u-Q", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "First of all, I just want to let you know that you're really, really amazing. The passion that you've for your project(s) and for the people that interact with them is something that melts my heart. I hope one day I can be a programmer as good as you and also, more important, have the same amount of passion that you have.\r\n\r\nEnglish is not my primary language, so this may not make any sense.\r\n\r\n> Anyway, one way to get around the limit would be to get a computer with a 64-bit unsigned long type. Machines that may not have that could include Windows (even if 64-bit) or 32-bit machines with any OS.\r\n\r\nI'm using a x64 Windows Machine, that's the reason, so. I'll start compiling your `bc` on Linux using WSL.\r\n\r\n> You must know one fact: `(x^y)*(x^z) == x^(y+z)`.\r\n> \r\n> In essence, if you multiply two powers of one number, the effect is the same as adding the exponents of those powers and then calculating the power from the sum of those exponents.\r\n\r\nI knew that, but somehow I didn't think about it. Thanks for the recap.\r\n\r\n> My `bc` will be slower than Julia. I am confident of that.\r\n>\r\n> This is because my `bc` does not use the full range of hardware-native integers in order to use decimal-based math. I bet Julia does use the full range and uses binary-based math.\r\n\r\nWell, that's kinda \"chinese\" to me. I'm not as good as you to understand that low-level programming stuff\r\n\r\n> You may want a benchmark with a smaller exponent.\r\n\r\nI'll.\r\n\r\nOn another topic, I'm using your tool to keep track of my expenses. Before closing this issue, I would like to ask you if there is any way that I can use \"import\" statements in your `bc` ecosystem.\r\n\r\nI know that I can work with more than one file at the same time using the `-f`/`-c` flags, but I'm wondering if is possible to access multiple files by only importing one - and use data from other files inside it.\r\n\r\nMy goal (if that can help you answering it) is to have a single file with functions/operations and then a bunch of other files only with data (expenses and gains) - like a local mini database - that I can call in the \"main\" `bc` file and work with.\r\n", + "createdAt": "2023-03-17T14:54:05Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1473965968", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5X5p-w", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for your compliment!\r\n\r\nJust so you know, I have [not always had this passion][1]. But I firmly believe that software is meant to serve people. That's why I focus so much on helping others.\r\n\r\nIt makes me really happy that you noticed!\r\n\r\n> I'm using a x64 Windows Machine, that's the reason, so. I'll start compiling your `bc` on Linux using WSL.\r\n\r\nYeah, sorry about that. Windows is dumb in that they decided that the `unsigned long` type should remain 32 bits. It was a stupid decision.\r\n\r\n> Well, that's kinda \"chinese\" to me. I'm not as good as you to understand that low-level programming stuff\r\n\r\nI apologize. I'll try again.\r\n\r\nUnder the hood, `bc` uses 32-bit unsigned integers (on 64-bit) as \"digits\". It turns out that the highest power of 10 that 32 bits can contain is `10^9`, or 1,000,000,000. This is one more than the maximum value that `bc` allows in each 32-bit integer. If it goes higher than this, `bc` will detect that it went higher and add the extra to the next \"digit\". This keeps each digit below 1,000,000,000.\r\n\r\nHowever, that is not optimal. I did that because `bc` needs to have decimal-based math. (In other words, the math needs to be in base 10.) If you can have your math in binary, base 2, it's much cheaper because then you can make your limit `2^32`, which is much higher than `10^9` (4,294,967,296 vs. 1,000,000,000).\r\n\r\nJulia uses base 2. This means that each \"digit\" can store more, which means the numbers are smaller (in number of digits). And smaller numbers mean faster execution.\r\n\r\nI hope that made sense.\r\n\r\n> On another topic, I'm using your tool to keep track of my expenses.\r\n\r\nI admit that's *terrifying* to me. I mean, technically, it should be safe, as long as you don't do any division or modulus in your scripts. But I don't want to screw up your finances with `bc`.\r\n\r\nI hope you remember there's **no warranty**. If there is a bug, I'll try to help, but I can't guarantee that your financial records will be correct in the presence of bugs.\r\n\r\nI *will* guarantee, though, that I know of no bugs. I have fixed all of the ones I am aware of.\r\n\r\n> Before closing this issue, I would like to ask you if there is any way that I can use \"import\" statements in your bc ecosystem.\r\n\r\nSort of.\r\n\r\n> I know that I can work with more than one file at the same time using the `-f`/`-c` flags, but I'm wondering if is possible to access multiple files by only importing one - and use data from other files inside it.\r\n\r\nWell, that's the only way.\r\n\r\nActually, it's even simpler than that. `bc` runs scripts in the order given on the command-line. For example, you could run this:\r\n\r\n```\r\n$ bc funcs.bc database.bc main.bc\r\n```\r\n\r\nAnd `bc` will run `funcs.bc`, then `database.bc`, then `main.bc`.\r\n\r\nThis means that anything in `funcs.bc` can affect the execution of `database.bc`, and anything in `funcs.bc` and `database.bc` can affect the execution of `main.bc`.\r\n\r\nThis means that you can chain together scripts in a way that acts like import. Sort of. If you would only import at the top of a file.\r\n\r\nBasically, this would mean that if `bc` had an `import` statement, the above would be equivalent to putting:\r\n\r\n```\r\nimport funcs.bc\r\nimport database.bc\r\n```\r\n\r\nat the *top* of `main.bc`.\r\n\r\nI do this myself; I have a math research project, and when I get new ideas, I start a new script. But I have all of my common functions in a `lib.bc` script, so I run it like this:\r\n\r\n```\r\n$ bc lib.bc <current_script>\r\n```\r\n\r\nThis even works for global variables; if you set a variable `food_expenses` to say `101.00` at the top level of a script, that variable will equal `101.00` in later scripts.\r\n\r\nSo if I were you, I would have a `funcs.bc` script that defines all of the functions. Then I would have a `database.bc` script that has the current values of all of your expenses. It should look something like this:\r\n\r\n```\r\nfood_expenses = 101.00\r\nentertainment_expenses = 45.50\r\n```\r\n\r\nand so on.\r\n\r\nThen, in the last script, I would have the code to actually update the database, but instead of directly updating, I would have it print the new \"version\" of `database.bc` to `stdout`.\r\n\r\nThen you would run it like this:\r\n\r\n```\r\n$ bc funcs.bc database.bc main.bc > temp.bc\r\n```\r\n\r\nThen check that `temp.bc` is correct. If it is, you can remove `database.bc` and rename `temp.bc` to `database.bc`:\r\n\r\n```\r\n$ rm database.bc\r\n$ mv temp.bc database.bc\r\n```\r\n\r\nTo make the example more concrete, let's assume that you have a `funcs.bc` that looks like this:\r\n\r\n```\r\ndefine void add_to_food_expenses(expense) {\r\n # If you don't put `food_expenses` in an `auto` statement,\r\n # then the global variable will be affected.\r\n food_expenses += expense\r\n # The global `total_expenses` is also affected with an `auto`.\r\n total_expenses += expense\r\n}\r\n\r\ndefine void print_new_database() {\r\n print \"food_expenses = \", food_expenses, \"\\n\"\r\n print \"total_expenses = \", total_expenses, \"\\n\"\r\n}\r\n```\r\n\r\nThen perhaps you have a `database.bc` that looks like this:\r\n\r\n```\r\nfood_expenses = 101.00\r\ntotal_expenses = 404.40\r\n```\r\n\r\nThen you have a `main.bc` that looks like this:\r\n\r\n```\r\n# read() reads from stdin.\r\nexpense = read()\r\n\r\nadd_to_food_expenses(expense)\r\n\r\nprint_new_database()\r\n```\r\n\r\nThen running the following:\r\n\r\n```\r\n$ echo \"35.75\" | bc funcs.bc database.bc main.bc\r\n```\r\n\r\nwill print:\r\n\r\n```\r\nfood_expenses = 136.75\r\ntotal_expenses = 440.15\r\n```\r\n\r\nwhich if you redirect to `temp.bc`:\r\n\r\n```\r\n$ echo \"35.75\" | bc funcs.bc database.bc main.bc > temp.bc\r\n```\r\n\r\nwill make `temp.bc` a valid replacement for `database.bc`.\r\n\r\n(While it may be safe to redirect straight to `database.bc`, I would not suggest doing so. If `funcs.bc` has any print statements that run, `database.bc` will be overwritten before it is ever read.)\r\n\r\n> My goal (if that can help you answering it) is to have a single file with functions/operations and then a bunch of other files only with data (expenses and gains) - like a local mini database - that I can call in the \"main\" `bc` file and work with.\r\n\r\nI *think* I answered according to your goal. I hope that helps, but please come back with any questions you have.\r\n\r\n[1]: https://gavinhoward.com/2021/12/is-it-even-worth-working-on-foss-anymore/", + "createdAt": "2023-03-18T05:48:18Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1474731952", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5YHLzP", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "Hi. Sorry for the delay replying.\r\n\r\n> It makes me really happy that you noticed!\r\n\r\nOf course. I'm lacking motivation for programming - even in my university project (I'm currently in my last year of my master degree) -, specially now with all the improvements made in the IA field, but reading your blog posts and messages like this one, somehow, gives me motivation to continue.\r\n\r\nI would like to suggest, if possible, a way to interact with you in your blog (like a comments section, for example). \r\n\r\n> I hope that made sense.\r\n\r\nIt did. I studied it in my first year at university, but I didn't know that specifically, so thank you.\r\n\r\n> I hope you remember there's **no warranty**. If there is a bug, I'll try to help, but I can't guarantee that your financial records will be correct in the presence of bugs.\r\n> \r\n> I *will* guarantee, though, that I know of no bugs. I have fixed all of the ones I am aware of.\r\n\r\nAnd that's all that matters for me. There is nothing that compares to the support that you offer.\r\n\r\n> I think I answered according to your goal. I hope that helps, but please come back with any questions you have.\r\n\r\nYou did. Thanks again for the time spent on this. I use a different set of files, but the information that you gave me is going to help me improve my system. So, thanks (one more time xD).", + "createdAt": "2023-03-21T17:06:49Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1478278351", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5YIXfA", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> Sorry for the delay replying.\r\n\r\nNo worries!\r\n\r\n> Of course. I'm lacking motivation for programming - even in my university project (I'm currently in my last year of my master degree)\r\n\r\nOh, cool, what is your project? (I dropped out of a Master's; I'm kind of jealous.)\r\n\r\n> I would like to suggest, if possible, a way to interact with you in your blog (like a comments section, for example).\r\n\r\nI have thought about this many times and have always rejected the idea due to the amount of spam-busting and moderation required, at least as told by other bloggers. Oh, and I don't want people to see a buggy site if they have JavaScript turned off as comments nearly always require JavaScript.\r\n\r\nHowever, your suggestion has made me look at it again, and I had an idea.\r\n\r\nOne of the best pieces of software, at least for forums, is the software underpinning <https://lobste.rs/>. While I have been banned from that site, I appreciate the software for its moderation capabilities. This includes invite-only registration, which would help a lot to only allow people who want to interact with me and others in a good way.\r\n\r\nI've also always wanted to run a forum site where Free Speech was honored as much as possible because [I think Free Speech is necessary to find the truth][1].\r\n\r\nSo in response to your suggestion, if the lobste.rs software will work for my purposes, I'll spin up an instance at <https://forum.gavinhoward.com/> (or something similar), and I'll send you an invite, along with anyone else whose opinions I trust. And every time I post something new, I'll put it on the instance and link to it from the post. That should allow me to have a \"comments section\" while not interfering with my current site.\r\n\r\nI think I'll also allow others to post stuff too. Maybe I'll make its theme to be anything that is intellectually stimulating. I don't know; I'm just spitballing here.\r\n\r\n> I studied it in my first year at university, but I didn't know that specifically, so thank you.\r\n\r\nYou're welcome!\r\n\r\n> And that's all that matters for me.\r\n\r\nThank goodness!\r\n\r\n> There is nothing that compares to the support that you offer.\r\n\r\nYou're welcome! And thank you. I am overjoyed to hear this, actually.\r\n\r\nI'm starting a business right now, and my product is support for Open Source software that I have written. I was wondering if that would be a good product, but if my support is good, it might work. So I'm *thrilled* that you think so!\r\n\r\n(Don't worry; I'll always support `bc` for free; it's my gift to the world. The software that I'll be supporting for pay is at <https://git.yzena.com/Yzena/Yc>.)\r\n\r\nFull disclosure: this is also why I took your suggestion for a comments section more seriously; it would be a good way for me to network with potential clients. I apologize for having less than perfect motives.\r\n\r\nAlso, to take it one step further, can I point to this interaction we had as an example of the support I will give? I think it would be great material to advertise with. No offense if you don't want that though; I know that's a selfish motive.\r\n\r\n> You did. Thanks again for the time spent on this. I use a different set of files, but the information that you gave me is going to help me improve my system. So, thanks (one more time xD).\r\n\r\nYou're welcome! Glad I could help!\r\n\r\n[1]: https://gavinhoward.com/2019/11/recommendations-and-radicalization/", + "createdAt": "2023-03-21T21:13:49Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1478588352", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5YLZeg", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "> Oh, cool, what is your project? (I dropped out of a Master's; I'm kind of jealous.)\r\n\r\nYou don't need to be. You seem to have the required knowledge to be a teacher on my university. I'm from Portugal, btw.\r\n\r\nMy project is about telemetry. I'm building a telemetry solution using OpenTelemetry and multiple analysis backends for a health company. The problem is that such project is inside DevOps field and that's not my expertice or even the field that I want to work on. I want to be a programmer, a system programmer to be more precise.\r\n\r\n> This includes invite-only registration, which would help a lot to only allow people who want to interact with me and others in a good way.\r\n\r\nThat seems a good way to implement it. I didn't know about that specific website, but after a brief usage of it, I can say that I liked the way that it works.\r\n\r\n> So in response to your suggestion, if the lobste.rs software will work for my purposes, I'll spin up an instance at https://forum.gavinhoward.com/ (or something similar), and I'll send you an invite, along with anyone else whose opinions I trust. And every time I post something new, I'll put it on the instance and link to it from the post. That should allow me to have a \"comments section\" while not interfering with my current site.\r\n\r\nThat makes a lot of sense. I appreciate the consideration for my opinion xD\r\n\r\nWhen that instance is online, let me know, please.\r\n\r\n> I'm starting a business right now, and my product is support for Open Source software that I have written. I was wondering if that would be a good product, but if my support is good, it might work. So I'm thrilled that you think so!\r\n\r\nI see.. something like the commercial support that Daniel Stenberg offers for cURL?\r\n\r\n> (Don't worry; I'll always support bc for free; it's my gift to the world. The software that I'll be supporting for pay is at https://git.yzena.com/Yzena/Yc.)\r\n\r\nThat's nice to read. I'm planning to use `bc` for a very long time :d\r\n\r\n> Full disclosure: this is also why I took your suggestion for a comments section more seriously; it would be a good way for me to network with potential clients. I apologize for having less than perfect motives.\r\n\r\nIt wasn't necessary to make that disclosure. You're too kind just for considering having to do it. \r\n\r\n> Also, to take it one step further, can I point to this interaction we had as an example of the support I will give? I think it would be great material to advertise with. No offense if you don't want that though; I know that's a selfish motive.\r\n\r\nOf course you can. I'm flattered to be part of that.\r\n\r\n> You're welcome! Glad I could help!\r\n\r\nYou always do. Thanks (one more time)!", + "createdAt": "2023-03-22T11:20:57Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1479382944", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5YagqG", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> The problem is that such project is inside DevOps field and that's not my expertice or even the field that I want to work on. I want to be a programmer, a system programmer to be more precise.\r\n\r\nOuch. I feel for you, and I feel lucky.\r\n\r\nI know this may not help, but I have personally found that my system programming skills (dev) got better after I learned system admininstration (ops).\r\n\r\nSystem administration is important to me for another reason: without it, I can't host my code or the forum that I mentioned.\r\n\r\nOnce you get your Master's, maybe you can try to do what I have done: build excellent system software and support it. That may give you the room you need to make it a career. If it is going to work for me, it will surely work for you too!\r\n\r\n> When that instance is online, let me know, please.\r\n\r\nIt's up at <https://forum.gavinhoward.com/>, but email is not working, so I need to wait. Please send me an email using the email listed at <https://gavinhoward.com/contact/>, and I'll send you an invite once email is working.\r\n\r\n> I see.. something like the commercial support that Daniel Stenberg offers for cURL?\r\n\r\nYes, basically.\r\n\r\n> Of course you can. I'm flattered to be part of that.\r\n\r\nThank you!", + "createdAt": "2023-03-24T20:02:20Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1483344518", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5YtkJ8", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "Sorry for the delay replying (again).\r\n\r\n> I know this may not help, but I have personally found that my system programming skills (dev) got better after I learned system admininstration (ops).\r\n\r\nI hope you're right.\r\n\r\n> Once you get your Master's, maybe you can try to do what I have done: build excellent system software and support it. That may give you the room you need to make it a career. If it is going to work for me, it will surely work for you too!\r\n\r\nI'm trying to learn Rust on my free time, but it's been hard - I know your opinion about Rust xD -, let's see. \r\n\r\n> It's up at https://forum.gavinhoward.com/, but email is not working, so I need to wait. Please send me an email using the email listed at https://gavinhoward.com/contact/, and I'll send you an invite once email is working.\r\n\r\nThe [forum](https://forum.gavinhoward.com/) returns a 500 error code to me and the [contact page](https://gavinhoward.com/contact/) shows me that your e-mail is `<my_first_name>@<this_website>`. I'll send an email to `<redacted>` and hope it works.\r\n\r\n> Yes, basically.\r\n\r\nI see. Well, good luck for your new project. I'm pretty sure that people will love your support as much as I do.", + "createdAt": "2023-03-29T10:27:50Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1488339580", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5YwWgF", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> I'm trying to learn Rust on my free time, but it's been hard - I know your opinion about Rust xD -, let's see.\r\n\r\nRemember that my Rust opinion is personal; Rust is pretty good in general.\r\n\r\n> The [forum](https://forum.gavinhoward.com/) returns a 500 error code to me and the [contact page](https://gavinhoward.com/contact/) shows me that your e-mail is `<my_first_name>@<this_website>`.\r\n\r\nI'm having trouble with the forum. In fact, it turns out that sending email just doesn't work. My email provider is blaming the lobste.rs software, but the software has the right settings, so...\r\n\r\nI'm probably just going to have to write my own forum software. Sorry for the delay. It may be a year or so.\r\n\r\n> I'll send an email to `<redacted>` and hope it works.\r\n\r\nThat is the correct address. I've redacted it because I don't want it machine-readable (to avoid spam), but it is correct.\r\n\r\n> I see. Well, good luck for your new project. I'm pretty sure that people will love your support as much as I do.\r\n\r\nThank you!", + "createdAt": "2023-03-29T18:07:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1489070085", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5Y0Yev", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "> Remember that my Rust opinion is personal; Rust is pretty good in general.\r\n\r\nI hope it is here to stay for the long run.\r\n\r\n> I'm probably just going to have to write my own forum software. Sorry for the delay. It may be a year or so.\r\n\r\nNo problem. I'll put a reminder on my calendar, so. See you in a year (or so). Have a nice week!", + "createdAt": "2023-03-30T11:18:53Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1490126767", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5kIVVh", + "author": { + "login": "TediusTimmy" + }, + "authorAssociation": "NONE", + "body": "Hey, I realize that you asked this five months ago, but I just saw this and I wanted to chime in, because I love REALLLY BIG NUMBERS.\r\n\r\nNow, Gavin noted that `(x^y)*(x^z) == x^(y+z)`. It is also true that `(x^y)^z == x^(y*z)`. So, we can simplify your question to `169287^1670801140084418360`. Hoo, boy is that a big number! How big is it? `2.4917161343640611*10^8735990286585912792` The number that describes how many digits are in the number has 19 digits in it.\r\n\r\nHow did I do this (and what is Julia probably doing under the covers)? The same way a slide rule works: logarithms. It is definitionally true that `a^u=e^(ln(a^u))`. So `a^u=e(u*ln(a))`. But this works in any base, so I'll choose base 10 (I hope you remember your laws of logarithms).\r\n\r\nTo follow along:\r\n```\r\nscale=40\r\n137*920*13256118217109*l(169287)/l(10)\r\n```\r\nThat should give you that exponent. Remember: the number we want is ten raised to this power. To get the leading digits, we extract the mantissa (the fractional portion of a logarithm), and then raise 10 to this power. This works because of what Gavin noted: we can separate `3.2` into `3+.2`, and we are raising ten to this power, so it becomes `(10^3)*(10^.2)`:\r\n```\r\ne(.3964985643509537948664437764527360339575*l(10))\r\n```\r\n\r\nI want to point out two things: firstly, `bc` is going to compute all of the digits of this number; secondly, it is a big number. If we pack 19 decimal digits into every 8 bytes, it will still take over 3,000 petabytes of memory to store this number. To give you a sense of scale: at the end of 2021, Internet Archive had 212 petabytes of data archived.", + "createdAt": "2023-08-16T03:29:40Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1679906145", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5kl8FL", + "author": { + "login": "STSMHQ" + }, + "authorAssociation": "NONE", + "body": "Hi, @TediusTimmy. Thank you for your explanation. It helped a lot. I didn't know some of that mathematic equivalences. Have a nice week.", + "createdAt": "2023-08-22T07:56:38Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/66#issuecomment-1687667019", + "viewerDidAuthor": false + } + ], + "createdAt": "2023-03-16T12:20:42Z", + "id": "I_kwDOCL0xJc5g_6ME", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 66, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "[QUESTION] Bypass Math Overflow for Large Computations", + "updatedAt": "2023-08-22T07:56:38Z", + "url": "https://github.com/gavinhoward/bc/issues/66" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOB5Gq1Q", + "is_bot": false, + "login": "ikolesnikes", + "name": "" + }, + "body": "bin/bc enters an infinite loop while evaluating the cube-root of 0.01\r\n\r\nbin/bc -l -e 'cbrt(0.1)'\r\nreturns .46415888336127788924 (which is expected)\r\n\r\nbin/bc -l -e 'cbrt(0.01)'\r\nfreezes\r\n\r\nLooking at the definition of root(x,n) in lib2.bc the following loop never exits\r\n\r\n\twhile(r!=q){\r\n\t\tr=q\r\n\t\tq=(p*r+x/r^p)/n\r\n\t}\r\n\r\nA simple hack makes the cbrt function working.\r\n\r\n\twhile(abs(r-q)>0.000001){\r\n\t\tr=q\r\n\t\tq=(p*r+x/r^p)/n\r\n\t}", + "closed": true, + "closedAt": "2023-03-15T21:56:14Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5XXKFy", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes, this is a bug. I have reproduced it.\r\n\r\nYour fix pointed right to the problem, which I suspected: it ran into a pathological case where the two values, `r` and `q`, never equaled each other because they would keep switching, i.e., `r` would equal `x`, and `q` would equal `y`, then on the next iteration, `r` would equal `y`, and `q` would equal `x`.\r\n\r\nThis is the reason I hate algorithms that are calculated by series. They can easily have problems like this.\r\n\r\nI tried to fix it with 01230fcd9cfb547c5666247e1a36c624d3f2d01c. It increases the precision, but then does the comparison at a smaller precision.\r\n\r\nCan you pull and test it for me? I'll start my release process in the meantime.", + "createdAt": "2023-03-13T08:13:31Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/64#issuecomment-1465688434", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5XYwKM", + "author": { + "login": "ikolesnikes" + }, + "authorAssociation": "NONE", + "body": "I tested your solution and it worked!\r\nMaybe it's worth to add a test for this case.\r\n\r\nNever mind, you already did it.", + "createdAt": "2023-03-13T13:03:47Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/64#issuecomment-1466106508", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5XZaRe", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes, but you are right that if I did not, I should have!\r\n\r\nI will put out a release with the fix as soon as I can. I'll close this issue at that time.", + "createdAt": "2023-03-13T14:45:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/64#issuecomment-1466279006", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5XrBvX", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Release `6.5.0` is out! Thank you for the report!", + "createdAt": "2023-03-15T21:56:14Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/64#issuecomment-1470897111", + "viewerDidAuthor": true + } + ], + "createdAt": "2023-03-13T06:01:54Z", + "id": "I_kwDOCL0xJc5gm5mO", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 64, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "bc freezes evaluating cbrt(0.01)", + "updatedAt": "2023-03-15T21:56:14Z", + "url": "https://github.com/gavinhoward/bc/issues/64" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjE0ODEyNjg=", + "is_bot": false, + "login": "pg83", + "name": "Anton Samokhvalov" + }, + "body": "https://github.com/gavinhoward/bc/blob/master/scripts/safe-install.sh#L28 creates hard dependency loop on previously available bc for install process, which can be not available:\r\n\r\n* in bootstrap environments\r\n* in cross-compile environments\r\n", + "closed": true, + "closedAt": "2023-02-25T15:11:27Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5WEExO", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Whoops. I did not think of that. My bad.\r\n\r\nThis should be fixed in 313738df7f6d65875dd91ef63565227d0f782472 and 349cd801d5a7f4ab2fad76096d271397aa738063. I put out `6.3.1` because I know for a fact that Linux from Scratch will need these changes too, and they usually just grab the latest release.\r\n\r\nI hope this new release works for you. Please close this issue if it does.", + "createdAt": "2023-02-24T16:05:13Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/63#issuecomment-1443908686", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5WIxOt", + "author": { + "login": "pg83" + }, + "authorAssociation": "NONE", + "body": "thanx!", + "createdAt": "2023-02-25T15:11:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/63#issuecomment-1445139373", + "viewerDidAuthor": false + } + ], + "createdAt": "2023-02-24T11:34:48Z", + "id": "I_kwDOCL0xJc5fRqQO", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 63, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "bc -> bc dependency loop", + "updatedAt": "2023-02-25T15:11:28Z", + "url": "https://github.com/gavinhoward/bc/issues/63" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjUzMTI5ODE2", + "is_bot": false, + "login": "enh-google", + "name": "" + }, + "body": "trying to update AOSP to 6.2.4 (https://android-review.googlesource.com/c/platform/external/bc/+/2433072) i hit:\r\n```\r\ntests/: 413 files pushed, 0 skipped. 6.5 MB/s (1197549 bytes in 0.175s)\r\nscripts/functions.sh: 1 file pushed, 0 skipped. 60.6 MB/s (14190 bytes in 0.000s)\r\n***********************************************************************\r\n\r\nRunning bc tests...\r\n\r\nRunning bc decimal...pass\r\nSkipping bc print test\r\nSkipping bc parse test\r\nSkipping bc lib2\r\nRunning bc print2...pass\r\nRunning bc length...pass\r\nRunning bc scale...pass\r\nSkipping bc shift\r\nRunning bc add...pass\r\nRunning bc subtract...pass\r\nRunning bc multiply...pass\r\nRunning bc divide...pass\r\nRunning bc modulus...pass\r\nRunning bc power...pass\r\nRunning bc sqrt...pass\r\nSkipping bc trunc\r\nSkipping bc places\r\nRunning bc vars...pass\r\nRunning bc boolean...pass\r\nRunning bc comp...pass\r\nRunning bc abs...pass\r\nRunning bc assignments...pass\r\nRunning bc functions...pass\r\nSkipping bc scientific\r\nSkipping bc engineering\r\nRunning bc globals...pass\r\nRunning bc strings...pass\r\nSkipping bc strings2 test\r\nRunning bc letters...pass\r\nRunning bc exponent...pass\r\nRunning bc log...pass\r\nRunning bc pi...pass\r\nRunning bc arctangent...pass\r\nRunning bc sine...pass\r\nRunning bc cosine...pass\r\nSkipping bc bessel test\r\nRunning bc arrays...pass\r\nRunning bc misc...pass\r\nRunning bc misc1...pass\r\nRunning bc misc2...pass\r\nRunning bc misc3...pass\r\nRunning bc misc4...pass\r\nRunning bc misc5...pass\r\nRunning bc misc6...pass\r\nRunning bc misc7...pass\r\nRunning bc misc8...pass\r\nRunning bc void...pass\r\nSkipping bc rand\r\nRunning bc recursive_arrays...pass\r\nRunning bc divmod...pass\r\nRunning bc modexp...pass\r\nSkipping bc bitfuncs\r\nSkipping bc leadingzero\r\nRunning bc is_number...pass\r\nRunning bc is_string...pass\r\nRunning bc asciify_array...pass\r\nRunning bc line_by_line1...pass\r\nRunning bc line_by_line2...pass\r\nRunning bc line_loop_quit1...pass\r\nRunning bc line_loop_quit2...pass\r\nRunning bc stdin tests...pass\r\n/data/local/tmp/bc-tests/tests/scripts.sh[66]: check_d_arg: inaccessible or not found\r\n\r\nExit Code: 127\r\n```\r\nlooking at scripts.sh, it doesn't source functions.sh where the preceding scripts do. i'm not sure why that works with bash? i didn't think bash exported functions by default, but maybe it's doing so?\r\n\r\nanyway, i tested the obvious fix (https://android-review.googlesource.com/c/platform/external/bc/+/2433072/2/tests/scripts.sh).", + "closed": true, + "closedAt": "2023-02-15T16:15:07Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5VLKwA", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Whoops. That's a bug.\r\n\r\nI tried clicking your links, but they complained that I wasn't signed in our didn't have permission.\r\n\r\nI presume your obvious fix was to source `functions.sh`? I'll do that in my repo when I get home. Do you want a tagged release?", + "createdAt": "2023-02-14T01:55:30Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1428990976", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5VLMMt", + "author": { + "login": "enh-google" + }, + "authorAssociation": "NONE", + "body": "> I tried clicking your links, but they complained that I wasn't signed in our didn't have permission.\r\n\r\ngah, don't get me started ... the powers that be inflicted a stupid url rewriter on us recently that mean we can't give working urls to anyone. i'd tried to manually fix these, but didn't test them. fixed now (retconned above).\r\n\r\n> I presume your obvious fix was to source `functions.sh`?\r\n\r\nexactly.\r\n\r\n> I'll do that in my repo when I get home. Do you want a tagged release?\r\n\r\nyes please... our tooling isn't yet clever enough to get us back on to the next tagged release if we switch to a sha, so until we implement that, it's quite a bit more convenient if there's another tag. (especially if i happen to go under a bus :-) )", + "createdAt": "2023-02-14T02:02:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1428996909", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5VLqu1", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Fixed in 714782c613ec2a4570f63c1285d38785961edb89, which should also preemptively fix any other occurrences of this same bug.\r\n\r\nI'm running a basic release process to ensure that the release still builds and tests, but I should have a tag out tomorrow morning (US time).", + "createdAt": "2023-02-14T05:04:50Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1429121973", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5VP1W1", + "author": { + "login": "enh-google" + }, + "authorAssociation": "NONE", + "body": "> I'm running a basic release process to ensure that the release still builds and tests, but I should have a tag out tomorrow morning (US time).\r\n\r\nthanks! no hurry...", + "createdAt": "2023-02-14T18:46:00Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1430214069", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5VQreo", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "It's out! Because I haven't been able to get an Android environment going yet, I'm still not sure this will work for you. If it does, though, please close this issue. Otherwise, I'll try something else.", + "createdAt": "2023-02-14T22:04:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1430435752", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5VRBCe", + "author": { + "login": "enh-google" + }, + "authorAssociation": "NONE", + "body": "thanks... testing now: https://android-review.googlesource.com/c/platform/external/bc/+/2436773", + "createdAt": "2023-02-14T23:24:21Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1430524062", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5VVNiI", + "author": { + "login": "enh-google" + }, + "authorAssociation": "NONE", + "body": "merged! thanks for your help :-)", + "createdAt": "2023-02-15T16:15:07Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/62#issuecomment-1431623816", + "viewerDidAuthor": false + } + ], + "createdAt": "2023-02-14T00:32:53Z", + "id": "I_kwDOCL0xJc5eXxKU", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 62, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "another mksh/bash difference?", + "updatedAt": "2023-02-15T16:15:07Z", + "url": "https://github.com/gavinhoward/bc/issues/62" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjUzMTI5ODE2", + "is_bot": false, + "login": "enh-google", + "name": "" + }, + "body": "i haven't been able to update for some time (5.0.1 was our last update!) because the tests fail in a weird way without much useful information. i've included the current failures for 6.2.2 below, for example.\r\n\r\nmy guess is that this is something to do with Android using mksh as its /bin/sh. the interleaved output makes it appear like there might be some disagreement about job handling between bash and mksh?\r\n\r\nare the current bc tests known to work on shells other than bash (and in particular mksh)? any ideas where i should look (or some kind of parallelism i can just disable)?\r\n```\r\n~/aosp-master-with-phones/external/bc$ ./run-bc-tests-on-android.sh \r\ntests/: 413 files pushed, 0 skipped. 0.8 MB/s (1191155 bytes in 1.372s)\r\nscripts/functions.sh: 1 file pushed, 0 skipped. 75.4 MB/s (12065 bytes in 0.000s)\r\n***********************************************************************\r\n\r\nRunning bc tests...\r\n\r\nSkipping bc lib2\r\nSkipping bc shift\r\nSkipping bc trunc\r\nSkipping bc places\r\nSkipping bc print test\r\nSkRunning bc decimal...Running bc print2...ipping bc parse test\r\nRunning bc scale...Skipping bc scientific\r\nRunning bc length...Running bc sqrt...Running bc modulus...RuRunning bc add...nning bc divide...Running bc subtract...Skipping bc engineering\r\nRunning bc multiply...Running bc power...Running bc abs...Running bc functions...pass\r\nRunning bc boolean...Running bc comp...Running bc assignments...Running bc vars...pass\r\nSkipping bc rand\r\npass\r\nSRunning bc globals...kipping bc bitfuncs\r\npass\r\nRunning bc strings...pass\r\nRunning bc cosine...pass\r\nSkipping bc strings2 test\r\nSkipping bc bessel test\r\npass\r\nRunning bc sine...Running bc misc2...RRunning bc exponent...pRunning bc log...Running bc misc8...Running bc misc...Running bc misc4...Running bc pi...upass\r\nSkipping bc leadingzero\r\nnning bc misc1...ppasRunning bc arrays...asss\r\n\r\nass\r\nRunning bc arctangent...Running bc misc6...Running bc modexp...Running bc void...Running bc misc3...Running bc letters...pass\r\npass\r\npRunning bc misc7...ass\r\npass\r\npass\r\nRunning bc divmod...Running bc recursive_arrays...Running bc misc5...pass\r\npass\r\npass\r\npass\r\npass\r\npass\r\npass\r\nppass\r\nass\r\nRunning bc is_number...pass\r\npass\r\npass\r\npass\r\nRunning bc asciify_array...Running bc line_loop_quit1...pass\r\nppass\r\npass\r\npass\r\npass\r\npass\r\nass\r\nRunning bc is_string...Running bc line_by_line1...Running bc line_by_line2...Running bc line_loop_quit2...Running bc command-line error tests...Running bc stdin tests...pass\r\nRunning bc error file 01.txt with clamping...pass\r\npass\r\npass\r\nRunning bc read...Running bc error file 02.txt with clamping...Running bc error file 03.txt with clamping...pass\r\npass\r\npass\r\npass\r\npass\r\npass\r\npass\r\npass\r\nRunning bc error file 01.txt without clamping...Running bc error file 04.txt with clamping...ppass\r\nSkipping bc script multiply.bc\r\npass\r\nass\r\nRunning bc error file 02.txt without clamping...pass\r\nRunning bc error file 05.txt with clamping...Skipping bc script divide.bc\r\nRunning bc error file 03.txt without clamping...Skipping bc script subtract.bc\r\npass\r\nRunning bc errors...Running bc read errors...pass\r\nSkipping bc script add.bc\r\nRunning bc error file 06.txt with clamping...Running bc error file 04.txt without clamping...pRunning bc error file 07.txt with clamping...ass\r\nRunning bc error file 01.txt through cat with clamping...pass\r\nRunning bc error file 08.txt with clamping...pass\r\nSkipping bc script print.bc\r\nRunning bc error file 02.txt through cat with clamping...Running bc error file 03.txt through cat with clamping...pass\r\npass\r\npass\r\nRunning bc error file 05.txt without clamping...pass\r\npass\r\nRunning bc error file 09.txt with clamping...pass\r\nRunning bc error file 07.txt without clamping...pass\r\nSkipping bc script parse.bc\r\nRunRunning bc error file 04.txt through cat wnith clamping...ing bc error file 06.txt without clamping...pass\r\nRunning bc error file 10.txt with clamping...RRunning bc empty read...Running bc error file 01.txt through cat without clamping...unning bc script array.bc...RRunning bc error file 03.txt through cat without clamping...pass\r\npaRunning bc error file 08.txt without clamping...Running bc error file 11.txt with clamping...pss\r\nunning bc script array2.bc...ass\r\npass\r\npass\r\nRunning bc error file 02.txt through cat without clamping...pass\r\npass\r\nRunning bc script atan.bc...Running bc error file 09.txt without clamping...Running bc error file 05.txt through cat with clamping...pass\r\npass\r\nRunning bc error file 10.txt without clamping...Running bc error file 06.txt through cat with clamping...Running bc error file 12.txt with clamping...RunRunning bc error file 04.txt through cat without clamping...pass\r\nSkipping bc script bessel.bc\r\npass\r\nning bc error file 07.txt through cat with clamping...Running bc script functions.bc...pass\r\nRunning bc error file 11.txt without clamping...Running bc error file 13.txt with clamping...pass\r\npass\r\nRunning bc error file 08.txt through cat with clamping...pass\r\npass\r\nRunning bc error file 14.txt with clamping...pass\r\nRunning bc read EOF...pass\r\nRunning bc error file 09.txt through cat with clamping...pass\r\npass\r\npass\r\nRunning bc error file 05.txt through cat without clamping...pass\r\npRunning bc script globals.bc...pass\r\nass\r\nRunning bc error file 15.txt with clamping...Skipping bc script: rand.bc\r\nRRunning Rbc error ufninlien g10.txt through cbca ts cwriitpht len.bc...clamping...pass\r\nunning bc error file 07.txt through cat without clamping...pass\r\nRRunning bc error file 06.txt through cat without clamping...pass\r\nRunning bc error file 11.txt through cat with clamping...unning bc error file 12.txt without clamping...pass\r\nRunning bc error file 08.txt through cat without clamping...pass\r\nRunning bc error file 16.txt with clamping...pass\r\nRunning bc error file 14.txt without clamping...pass\r\nRunning bc error file 13.txt without clamping...pass\r\nRunning bc script references.bc...Running bc error file 17.txt with clamping...Running bc error file 09.txt through cat without clamping...pass\r\npass\r\npass\r\npass\r\npass\r\npass\r\nRuRunning bc error file 15.txt without clamping...nning bc error file 18.txt with clamping...Running bc script screen.bc...pass\r\nRpass\r\npapass\r\nunning bc error file 12.txt through cat with clamping...ss\r\nRunning bc error file 11.txt through cat without clamping...Rpass\r\nunning bc error file 10.txt through cat without clamping...Running bc error file 19.txt with clamping...Skipping bc script strings2.bc\r\npass\r\nRunning bc error file 13.txt through cat with clamping...pass\r\nRunning bc error file 16.txt without clamping...pass\r\nRunning bc error file 14.txt through cat with clamping...Running bc error file 20.txt with clamping...pass\r\nRunning bc error file 17.txt without clamping...pass\r\npass\r\nRunning bc error file 21.txt with clamping...paspass\r\nRunning bc script ifs.bc...s\r\nRunning bc error file 18.txt without clamping...pass\r\nRunning bc error file 15.txt through cat with clamping...pass\r\nRunning bc script ifs2.bc...Rpass\r\npass\r\nRunning bc error file 12.txt through cat without clamping...pass\r\nunning bc error file 19.txt without clamping...Running bc erpass\r\nror file 22.txt with clamping...Running bc error file 13.txt through cat without clamping...Rpass\r\npRunning bc error file 20.txt without clamping...pass\r\nass\r\nRuRRuunning bc error file 14.txt through cat without clamping...nnning bc script afl1.bc...unning bc error file 23.txt with clning bcamp einrrg..or. file 16.txt through cat with clamping...pass\r\npass\r\nRunning bc error file 17.txt through cat with clamping...Running bc error filepass\r\npass\r\npass\r\nRunniRunning bc error file 15.txt through cat without clamping... 21.txtng bc error file 24.txt with clamping... without clamping...Running bc error file 18.txt through cat with clamping...pass\r\npass\r\npass\r\npass\r\npass\r\nRunning bc error file 25.txt with clamping...pass\r\nRunning bc error file 22.txt without clamping...Running bc error file 19.txt through cat with clamping...pass\r\nRunning bc error file 16.txt through cat without clamping...Running bc error file 23.txt without clamping...pass\r\npass\r\npass\r\nRunning bc error file 20.txt through cat with clamping...pass\r\nRunning bc error file 26.txt with clamping...Running bc error file 17.txt through cat without clamping...Running bc error file 24.txt without clamping...Running bc error file 27.txt with clamping...pass\r\nRunning bc error file 18.txt through cat without clamping...pass\r\npass\r\npass\r\nRunning bc error file 21.txt through cat with clamping...pass\r\nRunning bc error file 19.txt through cat without clamping...pass\r\nRunning bc error file 22.txt through cat with clamping...pass\r\nRunning bc error file 25.txt without clamping...Running bc error file 28.txt with clamping...pass\r\npass\r\npass\r\npass\r\npass\r\nRunning bc error file 23.txt through cat with clamping...Running bc error file 20.txt through cat without clamping...RuRunning bc error file 29.txt with clamping...Running bc error file 24.txt through cat with clamping...pass\r\nnning bc error file 26.txt without clamping...pass\r\nRunning bc error file 27.txt without clamping...pass\r\npass\r\npass\r\npass\r\nRunning bc error file 22.txt through cat without clamping...Running bc error file 30.txt with clamping...Running bc error file 21.txt through cat without clamping...Running bc error file 31.txt with clamping...pass\r\npass\r\nRunning bc error file 25.txt through cat with clamping...Running bc error file 28.txt without clamping...pass\r\nRunning bc error file 23.txt through cat without clamping...pass\r\nRunning bc error file 27.txt through cat with clamping...pass\r\nRunning bc error file 32.txt with clamping...Running bc error file 24.txt through cat without clamping...Skipping problematic bc error file 33.txt...\r\nRunning bc error file 26.txt through cat with clamping...pass\r\npass\r\npass\r\npass\r\npaRunning bc error file 29.txt withss\r\npout clamping...ass\r\npass\r\nRuRupass\r\nA test failed!\r\nRunning bc error file 25.txt through cat without clamping...Running bc error file 30.txt without clamping...passnning bc error file 28.txt through nning bc error file 31.txt without clamping...\r\ncat with clamping...pass\r\nRunning bc error file 27.txt through cat without clamping...pass\r\npass\r\nA test failed!\r\nRunning bc error file 34.txt with clamping...Running bc error file 32.txt without clamping...pass\r\npass\r\nA test failed!\r\nRunning bc error file 26.txt through cat without clampiRunning bc error file 29.txt through cat with clamping...pass\r\nng...pRunning bc error file 35.txt with clamping...pass\r\nRunning bc error file 31.txt through cat with clamping...A Running bc error file 36.txt with clamping...pass\r\nRunning bc error file 30.txt through cat with clamping...\r\nRunning bc quit test...test failed!\r\nass\r\npass\r\nA test failed!\r\npass\r\nRunning bc error file 32.txt through cat with clamping...Running bc error file 28.txt through cat without clamping...Running bc error file 34.txt without clamping...pass\r\npass\r\npass\r\npass\r\nRA pass\r\ntest failed!\r\nunning bc error file 29.txt through cat without clamping...Running bcpass\r\n error file 35.txt without clamping...Running bc error file 30.txt through cat without clamping...pass\r\nRunning bc error file 31.txt through cat without clamping...Running bc error file 36.txt without clamping...A pass\r\ntest failed!\r\npass\r\nRunning bc error file 34.txt through cat with clamping...pA Running bc error file 32.txt through cat without clamping...ass\r\ntest failed!\r\npass\r\npass\r\npass\r\npass\r\nA test failed!\r\nRuRunning bc error file 35.txt through cat with clamping...nning bc error file 36.txt through cat with clamping...Rupass\r\nnning bc environment var tests...pass\r\nA test failed!\r\nRunning bc error file 34.txt through cat without clamping...A pass\r\ntest failed!\r\npass\r\nRunning bc error file 36.txt through cat without clamping...A test failed!pass\r\nRunning bc error file 35.txt through cat witpass\r\n\r\nhout clamping...Running keyword redefinition test...paA test failed!\r\nss\r\npass\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\npass\r\nA test failed!\r\nRunning multiline comment expression file test...A test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\npass\r\nA test failed!\r\nA test failed!\r\nA Rtest ufnaniilnegd !m\r\nultiline comment expression file error test...A test failed!\r\nA test failed!\r\nA test failed!\r\npass\r\nA test failed!\r\nA test failed!\r\nRunning multiline string expression file test...A test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\npass\r\nRunning multiline string expression file error test...A test failed!\r\nA test failed!\r\npass\r\nA test failed!\r\nRunning bc line length tests...A test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\nA test failed!\r\npass\r\nA test failed!\r\nA test failed!\r\nRunning bc arg tests...pass\r\nRunning bc builtin variable arg tests...pass\r\nRunning bc directory test...pass\r\nRunning bc binary file test...pass\r\nRunning bc binary stdin test...pass\r\nRunning bc limits tests...pass\r\npass\r\nRunning bc posix_errors...pass\r\n~/aosp-master-with-phones/external/bc$ \r\n```", + "closed": true, + "closedAt": "2023-01-12T17:51:06Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5SPfLa", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> i haven't been able to update for some time (5.0.1 was our last update!)\r\n\r\nOof...I'm sorry. Have I been missing communication with you?\r\n\r\n> because the tests fail in a weird way without much useful information. i've included the current failures for 6.2.2 below, for example.\r\n\r\nI agree; that is useless.\r\n\r\n> my guess is that this is something to do with Android using mksh as its /bin/sh. the interleaved output makes it appear like there might be some disagreement about job handling between bash and mksh?\r\n\r\nI think that's a great guess, and it's my guess too because the `tests/all.sh` script does use job control. I tried to write it according to the POSIX standard, but I suspect that job control is finicky in general.\r\n\r\n> are the current bc tests known to work on shells other than bash (and in particular mksh)? any ideas where i should look (or some kind of parallelism i can just disable)?\r\n\r\nThey are known to work on `tcsh` (FreeBSD), but other than that, `bash`, and `dash`, I don't know.\r\n\r\n> any ideas where i should look (or some kind of parallelism i can just disable)?\r\n\r\nTo disable parallelism, change the last line of `run-bc-tests-on-android.sh` to:\r\n\r\n```\r\nexec adb shell $dash_t /data/local/tmp/bc-tests/tests/all.sh -n bc 0 1 0 0 0 bc\r\n```\r\n\r\nI made two changes:\r\n\r\n* Most importantly, there is a `-n` option, which is how to disable parallelism in the `tests/all.sh` script.\r\n* I also added another 0 before the last `bc` because there are now five integer positional arguments.\r\n\r\nMy hope (and it is only a hope) is that that missing integer argument is what is causing the weird failures because the script would otherwise treat the last `bc` argument as the last integer argument and cause some sort of failure. `bash` fails because it has a non-integer argument, but I don't know how `mksh` would fail in that case.\r\n\r\nThe other reason there might be failures is because I added a test that is \"problematic.\" It's my test for `malloc()` failure, and unfortunately, it only works on Linux systems with swap disabled and some other changes. I don't think it would work on Android. I did add an option to disable that test in `tests/all.sh`; that is the missing integer option, in fact. But I don't think that's the reason because I added it in the fourth position (the last is whether to time the tests), so it is a 0 in your current script.\r\n\r\nRegardless, with the parallelism disabled, you should see exactly what test is failing, and you should be able to give me that output, even if either of those are not the reason for the failure.\r\n\r\nIn the meantime, I'll work on my end. Android is a first-class user of my `bc`, and I need to start treating it that way, including setting up a building and testing environment. I'll do my best to do so myself, but if possible, can you give me a helpful link?", + "createdAt": "2023-01-12T04:16:14Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/61#issuecomment-1379791578", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5STRaK", + "author": { + "login": "enh-google" + }, + "authorAssociation": "NONE", + "body": "> > i haven't been able to update for some time (5.0.1 was our last update!)\r\n> \r\n> Oof...I'm sorry. Have I been missing communication with you?\r\n\r\nno, this is just the first time i've had time to actually look at the problem and file a bug!\r\n\r\n> > are the current bc tests known to work on shells other than bash (and in particular mksh)? any ideas where i should look (or some kind of parallelism i can just disable)?\r\n> \r\n> They are known to work on `tcsh` (FreeBSD), but other than that, `bash`, and `dash`, I don't know.\r\n\r\nyeah, there's been a lot about job control on the POSIX mailing list recently too.\r\n\r\n> > any ideas where i should look (or some kind of parallelism i can just disable)?\r\n> \r\n> To disable parallelism, change the last line of `run-bc-tests-on-android.sh` to:\r\n> \r\n> ```\r\n> exec adb shell $dash_t /data/local/tmp/bc-tests/tests/all.sh -n bc 0 1 0 0 0 bc\r\n> ```\r\n\r\nyes, that works. thanks!\r\n\r\n> In the meantime, I'll work on my end. Android is a first-class user of my `bc`, and I need to start treating it that way, including setting up a building and testing environment. I'll do my best to do so myself, but if possible, can you give me a helpful link?\r\n\r\nthere's https://source.android.com/docs/setup/build/building (and other pages about running), but it's a pretty large undertaking.\r\n\r\ntbh, i've only had two problems with bc updates:\r\n\r\n1. build changes such as the move from a shell script to a .c file for strgen. those are almost certainly easier for me to do anyway.\r\n2. test changes like this one. these have been harder for me to adapt to (although this is the first one i've failed with). there i'd say \"yes, please make sure you add options like `-n` when you make scary changes\" but one thing you haven't done but could that i think would help would be to fail hard --- making extra options optional (ho ho) makes my life harder. an error message would be more helpful, especially because changes to a row of 0s and 1s aren't necessarily immediately obvious!\r\n\r\nanyway, https://android-review.googlesource.com/c/platform/external/bc/+/2385321 works for me locally, so it should make it through CI. (and if it doesn't, that's probably a question for me anyway :-) )\r\n\r\nthanks!", + "createdAt": "2023-01-12T17:51:06Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/61#issuecomment-1380783754", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5SUcYn", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "> there's https://source.android.com/docs/setup/build/building (and other pages about running), but it's a pretty large undertaking.\r\n\r\nI'll do my best anyway. Thank you!\r\n\r\n> tbh, i've only had two problems with bc updates\r\n>\r\n> 1. build changes such as the move from a shell script to a .c file for strgen. those are almost certainly easier for me to do anyway.\r\n> 2. test changes like this one. these have been harder for me to adapt to (although this is the first one i've failed with). there i'd say \"yes, please make sure you add options like -n when you make scary changes\" but one thing you haven't done but could that i think would help would be to fail hard --- making extra options optional (ho ho) makes my life harder. an error message would be more helpful, especially because changes to a row of 0s and 1s aren't necessarily immediately obvious!\r\n\r\nI think both of these are oversights on my part. I should add sections to my `NEWS.md` entry for each version about building, packaging, and testing changes. I've never thought they were necessary to list, but here is hard evidence that yes, they are.\r\n\r\nI apologize. I will do that going forward. And I also apologize for accidentally using you as my test subject while I learn how to run a project.\r\n\r\nNow, about making things fail hard: I agree that I messed up by making arguments optional.\r\n\r\nHowever, because I have downstream users that could depend on the options *staying* optional, I'm not sure I can make them required at this point.\r\n\r\nNevertheless, I think I can do the next best thing: do error checking on each argument. This would (hopefully) allow me to add the \"fail hard\" you want (and it's a good idea!) while not causing problems for other downstream users. (Unless they have bugs in their scripts, in which case, they should be fixed anyway.)\r\n\r\nI have implemented the ideas in d5e6dbdf328407bddf53efb655abe4b9c2fcb90f, so they'll be in the next release. I hope that helps.", + "createdAt": "2023-01-12T23:06:57Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/61#issuecomment-1381090855", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5SUv2M", + "author": { + "login": "enh-google" + }, + "authorAssociation": "NONE", + "body": "> I apologize. I will do that going forward. And I also apologize for accidentally using you as my test subject while I learn how to run a project.\r\n\r\nno worries --- we're a bit of an outlier anyway. it's only when you get included in a \"ridiculously large\" meta-project (most commonly an operating system [or moral equivalent] such as android or chromium or whatever) that you tend to find people _not_ using your build system because the pain of having to duplicate your build system is still slightly less than the pain of trying to incorporate your build system into theirs!\r\n\r\n> Now, about making things fail hard: I agree that I messed up by making arguments optional.\r\n> \r\n> However, because I have downstream users that could depend on the options _staying_ optional, I'm not sure I can make them required at this point.\r\n> \r\n> Nevertheless, I think I can do the next best thing: do error checking on each argument. This would (hopefully) allow me to add the \"fail hard\" you want (and it's a good idea!) while not causing problems for other downstream users. (Unless they have bugs in their scripts, in which case, they should be fixed anyway.)\r\n\r\nyeah, maybe if you ever need more arguments, make them named? (like `--foo=bar` or `foo=bar`?)\r\n\r\n> I have implemented the ideas in [d5e6dbd](https://github.com/gavinhoward/bc/commit/d5e6dbdf328407bddf53efb655abe4b9c2fcb90f), so they'll be in the next release. I hope that helps.\r\n\r\nthanks. since you're obviously interested in the feedback, i'll try to let you know sooner next time i have an update where manual intervention is required, if i have any trouble :-)", + "createdAt": "2023-01-13T00:55:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/61#issuecomment-1381170572", + "viewerDidAuthor": false + } + ], + "createdAt": "2023-01-12T01:26:05Z", + "id": "I_kwDOCL0xJc5bMSgX", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 61, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "test failures on Android", + "updatedAt": "2023-01-13T00:55:28Z", + "url": "https://github.com/gavinhoward/bc/issues/61" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjUwNzg5NDY5", + "is_bot": false, + "login": "mcoret", + "name": "" + }, + "body": "Hi,\r\nI'm trying to compile the project using Visual Studio 19, and I get the following error: `error C2065: 'SIGWINCH': undeclared identifier`. I cannot find such definition in MSVC. MSYS64 version compiles without problems.\r\nThank you!", + "closed": true, + "closedAt": "2022-12-06T15:40:35Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5PvhRI", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "What version are you trying to compile?\r\n\r\nIf it's the latest `master `, I have some changes there to fix a [FreeBSD bug][1] that I suspected would break the Windows build. I guess I was right.\r\n\r\nUsually, I wait until release time to fix Windows build bugs, but I'll boot Windows and push a fix later today if that will fix your problem. I'll also have a release coming soon with new stuff.\r\n\r\nI hope this helps.\r\n\r\n[1]: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=268076", + "createdAt": "2022-12-05T17:55:25Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/60#issuecomment-1337857096", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5PvnLD", + "author": { + "login": "mcoret" + }, + "authorAssociation": "NONE", + "body": "Ah, OK, thank you again!\r\nYes, it's the `master` branch.", + "createdAt": "2022-12-05T18:11:45Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/60#issuecomment-1337881283", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5PxCgn", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I've pushed e1205eaccfa03a8dbbfd625af664f6b074b69a65 which should fix the problem for now. Can you confirm for me?", + "createdAt": "2022-12-05T22:18:12Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/60#issuecomment-1338255399", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5P2DiK", + "author": { + "login": "mcoret" + }, + "authorAssociation": "NONE", + "body": "Hi, I can confirm, everything is OK!", + "createdAt": "2022-12-06T15:40:34Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/60#issuecomment-1339570314", + "viewerDidAuthor": false + } + ], + "createdAt": "2022-12-05T17:00:01Z", + "id": "I_kwDOCL0xJc5YCR8i", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 60, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Windows MSVC compilation problem", + "updatedAt": "2022-12-06T15:40:35Z", + "url": "https://github.com/gavinhoward/bc/issues/60" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "is_bot": false, + "login": "firasuke", + "name": "Firas Khalil Khana" + }, + "body": "As in the title, what's the difference between the two? and why is `--localedir` only mentioned in `build.md` and not when running `./configure --help`?", + "closed": true, + "closedAt": "2022-11-26T16:37:39Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5PKKvC", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "So I originally added `--localedir` because it was one of the standard GNU configure options. This was before I understood that GNU does *not* use POSIX locales.\r\n\r\n`--localedir` does not make sense when a program is using POSIX locales, so I've [removed references to `LOCALEDIR` and friends from everything][1].\r\n\r\nDoes that answer your question?\r\n\r\n[1]: https://github.com/gavinhoward/bc/commit/f4816582b1264b64566fc162ef6512601077cc63", + "createdAt": "2022-11-26T15:24:49Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/58#issuecomment-1328065474", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5PKLiA", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "So `--localedir` shouldn't be used?", + "createdAt": "2022-11-26T15:45:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/58#issuecomment-1328068736", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5PKNBl", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You are correct; it should not be used.\r\n\r\nIt wasn't used to change anything in the Makefile, so it merely just didn't do anything. With the change I made, the configure script should more give an error if it is given.", + "createdAt": "2022-11-26T16:24:25Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/58#issuecomment-1328074853", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5PKNey", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Ok cool, thanks for clarifying. Closing..", + "createdAt": "2022-11-26T16:37:19Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/58#issuecomment-1328076722", + "viewerDidAuthor": false + } + ], + "createdAt": "2022-11-26T10:36:13Z", + "id": "I_kwDOCL0xJc5XU90M", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 58, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Difference between --localedir and NLSPATH", + "updatedAt": "2022-11-26T16:37:39Z", + "url": "https://github.com/gavinhoward/bc/issues/58" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "is_bot": false, + "login": "firasuke", + "name": "Firas Khalil Khana" + }, + "body": "Hey there,\r\n\r\nI've encountered an error recently where attempting to cross-compile `bc` while using `CC` as the cross compiler and `HOSTCC` as the compiler and when passing `--prefix=/usr` as a configuration flag.\r\n\r\nIt appears that `bc` is searching for header files in `$PREFIX/include`, although the help message mentions that these options control the installation directories of bc files and not the directories header/library files are searched for.\r\n\r\nThe error disappears when I remove the `--prefix=/usr` flag and the installation defaults to `/usr/local` as there's no way to change it because `--prefix` causes an error.\r\n\r\nThe error is:\r\n\r\n```C\r\n /usr/include/bits/types/time_t.h:8:9: error: unknown type name '__time64_t'\r\n 8 | typedef __time64_t time_t;\r\n | ^~~~~~~~~~\r\n```\r\n\r\nI don't recall changing the configuration flags I use for `bc` since version 4.0, did the behavior of these flags change?\r\n\r\nThanks in advance!", + "closed": true, + "closedAt": "2022-09-14T07:40:47Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5KF-Ax", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "This looks like a bug in `configure.sh`. However, I need to know now to track it down.\r\n\r\nCan you tell me what the host system is, what the target system is, what the host compiler is, and what the target compiler is?", + "createdAt": "2022-09-12T00:19:32Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1243078705", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5KGmRk", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "The host system architecture tuple is `x86_64-unknown-linux-gnu` and the target architecture tuple is `x86_64-linux-musl`.\n\nThe host compiler `HOSTCC=gcc` and the target compiler is `CC=x86_64-linux-musl-gcc`.", + "createdAt": "2022-09-12T05:35:13Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1243243620", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5KJkBF", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "I thought this will might help narrow down the cause.\r\n\r\nThe last known working version that I tried using the same configuration flags and recipe file is version `5.2.5`, so my guess would be that the change happened after that release, possibly with the latest 6.0 release.", + "createdAt": "2022-09-12T16:52:51Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1244020805", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5KKJKJ", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "I think I found the [faulty commit](https://github.com/gavinhoward/bc/commit/c36b91b024e743edb45bf607cb3c2a9f28f0cc48).", + "createdAt": "2022-09-12T19:05:19Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1244172937", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5KM5Kx", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I think you did too.\r\n\r\nThat commit appears to have been made as exploration; I should have added more to the commit message. Nevertheless, it appears to not be necessary anymore because I tested the FreeBSD port without those changes, and it worked fine.\r\n\r\nSo I committed 2b65eb21cfc575fdb04a090c687bd102a80cc43c to erase the rest of that commit. Can you pull and test it?", + "createdAt": "2022-09-13T04:49:35Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1244893873", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5KP1Kn", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "I can confirm that this indeed 2b65eb21cfc575fdb04a090c687bd102a80cc43c fixed the issue.\r\n\r\nCan you release this fix in a new bugfix version?", + "createdAt": "2022-09-13T16:34:53Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1245663911", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5KQ_MW", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Wonderful!\r\n\r\nI'll release a bug fix version as soon as I have confirmation that this fix does not break FreeBSD. I hope that will be soon.", + "createdAt": "2022-09-13T21:22:20Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1245967126", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5KShlk", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Release `6.0.3` is out. I hope it fixes your issue.\r\n\r\nIf it doesn't, please feel free to reopen.", + "createdAt": "2022-09-14T07:40:47Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1246370148", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5KV1-D", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Yup, the new release solved the issue.\r\n\r\nThanks for your time and effort!", + "createdAt": "2022-09-14T19:59:10Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 2 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/56#issuecomment-1247240067", + "viewerDidAuthor": false + } + ], + "createdAt": "2022-09-11T13:48:03Z", + "id": "I_kwDOCL0xJc5RmIzx", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 56, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Specifying `--prefix` when cross-compiling", + "updatedAt": "2022-09-14T19:59:10Z", + "url": "https://github.com/gavinhoward/bc/issues/56" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "is_bot": false, + "login": "depler", + "name": "" + }, + "body": "Hi! Here is my command line: `bc.exe --mathlib --leading-zeroes --no-line-length --scale=100`. \r\n\r\nLast argument is ignored by some reason. As I see it `--mathlib` is overriding `scale` value", + "closed": true, + "closedAt": "2022-08-30T15:32:46Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5IMQzl", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Nice to have you back! Sorry that I rejected your original feature request for `--scale`; I was wrong to do so.\r\n\r\nI have reproduced the issue. I think you are right with what is happening.\r\n\r\nI'll get to work on fixing it.", + "createdAt": "2022-08-10T19:29:45Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/55#issuecomment-1211174117", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5IMfdA", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Stupid GitHub automatically closing issues.\r\n\r\nCan you please pull the latest `master` and check if it does what you want? In the meantime, I'll get started on the release process.", + "createdAt": "2022-08-10T20:29:31Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/55#issuecomment-1211234112", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5IMmDI", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Yep, it works now. Thanks!", + "createdAt": "2022-08-10T20:55:12Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/55#issuecomment-1211261128", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5IMmVH", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yay! Version `6.0.2` should come out in the next day or two. Thank you for your report!", + "createdAt": "2022-08-10T20:56:21Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/55#issuecomment-1211262279", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5Iclau", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "It's taking a little longer to get the release out. There are problems with FreeBSD. I need to fix those problems before I release. I'm sorry.\r\n\r\nI'll let you know when `6.0.2` is out.", + "createdAt": "2022-08-15T17:31:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/55#issuecomment-1215452846", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5JbEBZ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "`6.0.2` is out.\r\n\r\nThat should fix the issue for you. Feel free to reopen if it does not.", + "createdAt": "2022-08-30T15:32:46Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "ROCKET", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/55#issuecomment-1231831129", + "viewerDidAuthor": true + } + ], + "createdAt": "2022-08-10T19:09:02Z", + "id": "I_kwDOCL0xJc5Pk4LF", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 55, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Scale argument is ignored", + "updatedAt": "2022-08-30T15:32:46Z", + "url": "https://github.com/gavinhoward/bc/issues/55" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjk3Njg2MjI=", + "is_bot": false, + "login": "drawkula", + "name": "yeti" + }, + "body": "Testing on Debian11...\r\n\r\nAfter configuring with `--prefix=/tmp/bctmpdir` and a successful build, `make install` fails:\r\n```\r\n/tmp/bc $ make install\r\n./scripts/locale_install.sh /usr/share/locale/%L/%N bc \r\nmkdir: cannot create directory ‘//usr/share/locale/de_DE.utf8’: Permission denied\r\nmkdir: cannot create directory ‘//usr/share/locale/de_DE.UTF-8’: Permission denied\r\nln: failed to create symbolic link '//usr/share/locale/de_DE.utf8/bc': No such file or directory\r\nmkdir: cannot create directory ‘//usr/share/locale/en_GB.utf8’: Permission denied\r\nln: failed to create symbolic link '//usr/share/locale/en_GB.utf8/bc': No such file or directory\r\nmkdir: cannot create directory ‘//usr/share/locale/en_US.utf8’: Permission denied\r\nln: failed to create symbolic link '//usr/share/locale/en_US.utf8/bc': No such file or directory\r\n./scripts/safe-install.sh -Dm644 manuals/bc.1 /tmp/bctmpdir/share/man/man1/bc.1\r\n./scripts/safe-install.sh -Dm644 manuals/dc.1 /tmp/bctmpdir/share/man/man1/dc.1\r\n./scripts/exec-install.sh /tmp/bctmpdir/bin \"\" \"/tmp/bc/bin\"\r\n```\r\nSome paths aren't adapted to fit the `--prefix=...` setting, some others fit the desired prefix setting.", + "closed": true, + "closedAt": "2022-07-23T16:23:02Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5HDhWA", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for this report. I will look into it. Thankfully, you caught me before I made a release, which is coming soon. This will be fixed in that release, even if I have to delay it.", + "createdAt": "2022-07-22T02:07:54Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192105344", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HDm8x", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I noticed that you are installing `bc` in a temp directory. Is this a holding directory for a package, which will then install `bc` in its true place? Or is it something eke?\r\n\r\nI ask because locales are *special* (meaning, they are bad). They *must* be installed in one, and only one place. That place is `$NLSPATH`, which is actually a format string (the funny looking path after `./scripts/locale_install.sh` in your pasted output), but it usually points to `/usr/share/locale` with separate directories for every locale and then separate files in those directories for each program.\r\n\r\nIf locales are not installed properly in `$NLSPATH`, they will not work. This means that locales *have to* ignore `--prefix`. It's stupid, but that's POSIX for you. (This behavior is mandated by the POSIX standard.)\r\n\r\nSo if you are trying to install `bc` in `/tmp/bctmpdir`, unfortunately, you still have to install the locale files in `$NLSPATH`, anyway.\r\n\r\nIf you're installing in `/tmp/bctmpdir` to later be installed in its proper place by a package manager, then you can use the `$DESTDIR` environment variable when running `configure.sh`. If you do this, then locales will be installed at `$DESTDIR/$NLSPATH`, while other files will be installed at `$DESTDIR/$PREFIX/<whatever>`, where `$PREFIX` was passed in with `--prefix=$PREFIX`. Once that is done, and the package is made, then when users install the package, the locales will be put into the correct `$NLSPATH`.\r\n\r\nIf, however, you absolutely *must* override the behavior of installing the locales in `$NLSPATH`, you can set your own `$NLSPATH` when running `configure.sh`. The `%L` in the format specifier will be replaced by the locale name, and the `%N` will be replaced by the name of the program. You probably want both of those format specifiers in there.\r\n\r\nBut I do ***NOT*** recommend this because those installed locales will not work unless your `$NLSPATH` is set to that same format during in normal usage, which it appears it is not based on the format string in your output above.\r\n\r\nI hope that explains why things are the way they are. If that is the reason you are having problems, I am willing to help you figure out what would be best for you to do.\r\n\r\nHowever, if you still believe there is a bug in the install behavior, I'll do my best to find it.\r\n\r\nPlease let me know; I would like to help in any way I can.", + "createdAt": "2022-07-22T02:57:50Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192128305", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HD5j0", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "I just repeated the build in `/tmp` for catching the log.\r\n\r\nOriginally I wanted to have `bc`/`dc` in an own \"bonsai subtree\" in `/opt/gavinhoward-bc` for not interfering with the default `dc`/`bc` of Debian and I typically manage `/opt` via an own account not being `root` (and not my standard user account). Had I tried this as `root` I easily could have overlooked the files falling out of that subtree. I think that may surprise other users in some other contexts too or will just drop the NLS files somewhere they do not even notice.\r\n\r\nMaybe dropping them into the desired prefix too and issuing a warning is an idea?\r\n\r\nWell, so far nobody complained (or noticed it?). Maybe I'm just the one with strange ideas...\r\n\r\nIn my case, if the NLS files are dropped into that subtree with the consequence that only english works, it would be good enough. And alternatively I can just deactivate NLS.\r\n\r\nThis issue just should be about the surprise that some paths don't respect `--prefix=...` and maybe about minimising surprises.\r\n\r\nAnd it definitely is not urgent.", + "createdAt": "2022-07-22T05:42:58Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192204532", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5HFHU6", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I agree that the surprise is bad.\r\n\r\nThe problem with putting them into the desired prefix is that they just won't work, and then I'll get bug reports about it because I know several distros that depend on the current behavior.\r\n\r\nI think there are two things I can do. First, I can ensure that locales are *not* installed if NLS is disabled. I did that. (It already did it right, thankfully.) Second, I can add warnings. I added 7 in https://github.com/gavinhoward/bc/commit/b78e8e4cfb03b1135f03426b2a4aaf848b6c4d5d.\r\n\r\nActually, there's a third thing I can do: I can have `configure.sh` output a warning to the user when the prefix does *not* match with `$NLSPATH`. That has been done in https://github.com/gavinhoward/bc/commit/6dccfebe21c62d1c043387590d23a91b8499f68c.\r\n\r\nWhat else would you like me to do or think that I should do?", + "createdAt": "2022-07-22T12:29:32Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192523066", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HFar1", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "Thanks!\r\nThe warnings at configure-time really should help everyone.\r\n\r\nMay I add a tiny \"last\" (for in this issue) wish?\r\nCan the warning be reformatted to fit an 80 columns terminal?\r\nReformatted to be slightly below 80 CpL it will not even take more lines.\r\n", + "createdAt": "2022-07-22T13:55:53Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192602357", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5HF6Eg", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I meant to have 80 columns or less from the beginning. Whoops.\r\n\r\nIs https://github.com/gavinhoward/bc/commit/7cdddb8cc53fc1c08fe52fcf7fedbf7c84800c7c at 80 columns or less?", + "createdAt": "2022-07-22T16:12:18Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192730912", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HGEY4", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "Without changing the indentation 77 chars are the maximal sub-80 width that fits.\r\n```\r\n*****************************************************************************\r\n\r\nWARNING: Locales will *NOT* be installed in $PREFIX (/opt/gavinhoward-bc).\r\n\r\n This is because they *MUST* be installed at a fixed location to even\r\n work, and that fixed location is $NLSPATH ().\r\n\r\n This location is *outside* of $PREFIX. If you do not wish to install\r\n locales outside of $PREFIX, you must disable NLS with the -N or the\r\n --disable-nls options.\r\n\r\n The author apologizes for the inconvenience, but the need to install\r\n the locales at a fixed location is mandated by POSIX. It is not\r\n possible for the author to change.\r\n\r\n*****************************************************************************\r\n```\r\n", + "createdAt": "2022-07-22T17:05:23Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1192773176", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5HHHpw", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Whoops. How does https://github.com/gavinhoward/bc/commit/6035d39a68e6078f578823fe407892930fe0d955 look?", + "createdAt": "2022-07-23T03:21:18Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1193048688", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HHS2n", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "Looks good:\r\n\r\n\r\n\r\nWould it make sense not to show it when `configure` is run with `--disable-nls`?", + "createdAt": "2022-07-23T09:27:41Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1193094567", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5HHW-X", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Whoops.\r\n\r\nYou are absolutely right, of course. Does https://github.com/gavinhoward/bc/commit/8d8935e44bba15e96e8db83536ba54cd1deab398 fix the issue for you?", + "createdAt": "2022-07-23T11:39:44Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1193111447", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HHXEq", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "Perfect!\r\nThanks!", + "createdAt": "2022-07-23T11:43:19Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1193111850", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5HHgig", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You're welcome.\r\n\r\nSince it appears this issue has been resolved, I'm going to close it, but if you disagree, feel free to reopen it.", + "createdAt": "2022-07-23T16:23:02Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/53#issuecomment-1193150624", + "viewerDidAuthor": true + } + ], + "createdAt": "2022-07-21T21:12:21Z", + "id": "I_kwDOCL0xJc5OTyTx", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 53, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "--prefix=... is partially ignored?", + "updatedAt": "2022-07-23T16:23:02Z", + "url": "https://github.com/gavinhoward/bc/issues/53" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "is_bot": false, + "login": "firasuke", + "name": "Firas Khalil Khana" + }, + "body": "Is it possible to provide release tarballs in `gzip` format as well for limited systems?\r\n\r\nThanks!", + "closed": true, + "closedAt": "2022-04-30T22:23:08Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5CZjfO", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes, absolutely.\r\n\r\nJust to be sure, you mean `.tar.gz` files, correct?", + "createdAt": "2022-04-30T14:08:36Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/52#issuecomment-1113995214", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5CZoVz", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Yup, if possible.", + "createdAt": "2022-04-30T16:25:20Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/52#issuecomment-1114015091", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5CZov4", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Not a problem. I have a new release coming out soon, and I will be sure to have `.tar.gz` files for it, as well as every future release.", + "createdAt": "2022-04-30T16:38:05Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/52#issuecomment-1114016760", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5CZ0M3", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Thanks!\r\n\r\nClosing this now.", + "createdAt": "2022-04-30T22:23:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/52#issuecomment-1114063671", + "viewerDidAuthor": false + } + ], + "createdAt": "2022-04-30T10:20:12Z", + "id": "I_kwDOCL0xJc5I0yHJ", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 52, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Release tarballs in `gzip` format", + "updatedAt": "2022-04-30T22:23:08Z", + "url": "https://github.com/gavinhoward/bc/issues/52" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjg4MjY0OTc5", + "is_bot": false, + "login": "DelilahHoare", + "name": "Delilah Hoare" + }, + "body": "Comments delimited by `/* */` and spanning multiple lines in files result in `Parse error: comment end cannot be found`. Such comments are accepted into stdin.", + "closed": true, + "closedAt": "2022-03-05T04:53:19Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc4_JAlq", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "That does sound like a bug.\r\n\r\nCould you send me the output of `bc --version`? Also, could you send me one or more files that cause it to happen?", + "createdAt": "2022-03-04T16:41:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1059326314", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc4_KFB6", + "author": { + "login": "DelilahHoare" + }, + "authorAssociation": "NONE", + "body": "I should clarify that this only happens when using the `-f` flag; passing the file as an argument without that flag works.\r\n\r\n```\r\nbc 5.2.2\r\nCopyright (c) 2018-2021 Gavin D. Howard and contributors\r\nReport bugs at: https://git.yzena.com/gavin/bc\r\n\r\nThis is free software with ABSOLUTELY NO WARRANTY.\r\n```\r\n\r\n[testoneline.bc](https://github.com/gavinhoward/bc/files/8189282/testoneline.bc.txt) works,\r\n[testmultiline.bc](https://github.com/gavinhoward/bc/files/8189281/testmultiline.bc.txt) doesn't. \r\n[timeconst.bc](https://github.com/gavinhoward/bc/files/8189283/timeconst.bc.txt) comes from the linux source tree and also doesn't work.\r\n\r\n", + "createdAt": "2022-03-04T23:39:16Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1059606650", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc4_KNpz", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you. I have confirmed the bug, and I'm working on debugging and a fix.", + "createdAt": "2022-03-05T01:30:06Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1059641971", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc4_KWij", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Okay, I have found the problem and have committed a fix in d778d0b9177c75f207dca16b57974edbb5f9e15c and dbc4dc4c4e94712fa1d4800c81e84d6da18f5188.\r\n\r\nCould you pull and test the updated commits for me, to make sure they work for you? In the meantime, I'll prepare a release with the fix.", + "createdAt": "2022-03-05T04:03:17Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1059678371", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc4_KYdX", + "author": { + "login": "DelilahHoare" + }, + "authorAssociation": "NONE", + "body": "It's working, thanks!", + "createdAt": "2022-03-05T04:53:19Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1059686231", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc4_KYmm", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Great! I'll have version `5.2.3` out in a few days.", + "createdAt": "2022-03-05T04:56:48Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1059686822", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc4_QD5x", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "`5.2.3` is out!", + "createdAt": "2022-03-07T21:53:42Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/50#issuecomment-1061174897", + "viewerDidAuthor": true + } + ], + "createdAt": "2022-03-04T00:24:45Z", + "id": "I_kwDOCL0xJc5FFokp", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 50, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Multi-line comments in files result in parse error", + "updatedAt": "2022-03-07T21:53:42Z", + "url": "https://github.com/gavinhoward/bc/issues/50" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjI3OTUyNTcx", + "is_bot": false, + "login": "oguz-ismail", + "name": "" + }, + "body": "Observe:\r\n```\r\n$ bc -s <<x\r\ndefine a(){\r\n}define b(){\r\n}\r\nx\r\n\r\nParse error: bad token\r\n <stdin>:2\r\n\r\n$ bc -s <<x\r\ndefine a(){\r\n};define b(){\r\n}\r\nx\r\n$\r\n```\r\nAs per POSIX, the first one should work fine, and the second should fail as a newline is required after a `semicolon_list` production. No other bc implementation exhibits this behavior except busybox bc, which is a fork of this one if I recall correctly.", + "closed": true, + "closedAt": "2021-11-23T05:42:14Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc46Kepe", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "This has (hopefully) been fixed in commits 5b2fe303c8c7d85d299b6576f62c8191e492fdb0, 81f838f657a2b942a76c1240d1107a4d358fd2a2, and 9ffdd5ec6915bc01fa0ceb7f5b5e9e4327615044.\r\n\r\nCould you please pull down those commits and test? If they work, I'll release an update soon.", + "createdAt": "2021-11-22T18:57:57Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/48#issuecomment-975825502", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc46KhAF", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Oh, I meant to say that I looked at the standard, and I agree with you on the interpretation of it.", + "createdAt": "2021-11-22T19:09:25Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/48#issuecomment-975835141", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc46Kkv8", + "author": { + "login": "oguz-ismail" + }, + "authorAssociation": "NONE", + "body": "@gavinhoward Yeah, it works fine now. Thanks for the fix", + "createdAt": "2021-11-22T19:29:26Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/48#issuecomment-975850492", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc46KynT", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you!\r\n\r\nI'll run my release process and put out `5.2.1` as soon as it passes.", + "createdAt": "2021-11-22T20:50:45Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/48#issuecomment-975907283", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc46L1uZ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "`5.2.1` is out. I believe that solves this issue, so I am going to close. Feel free to reopen if you need to.\r\n\r\nThank you for your report!", + "createdAt": "2021-11-23T05:42:14Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/48#issuecomment-976182169", + "viewerDidAuthor": true + } + ], + "createdAt": "2021-11-22T11:06:32Z", + "id": "I_kwDOCL0xJc4_Ln9A", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 48, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Divergence from grammar defined by POSIX", + "updatedAt": "2021-11-23T05:42:15Z", + "url": "https://github.com/gavinhoward/bc/issues/48" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "is_bot": false, + "login": "depler", + "name": "" + }, + "body": "Is there any command line switch to set scale at start, like `bc.exe --scale 100`? If not, could you please implement?", + "closed": true, + "closedAt": "2022-06-10T18:05:26Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc4387LJ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "There is no direct way to do it, but you can do it like this:\r\n\r\n```\r\nbc.exe -e \"scale = 100\" -f-\r\n```\r\n\r\n`-e` is the command-line option to take expressions, and since `bc` exits by default when giving it an expression, you add `-f-` to tell it to also accept input from `stdin`.\r\n\r\nI think next release, I will add the ability to *not* exit by default on expressions for Windows. (FreeBSD wants my `bc` to exit by default.) Once I do that, you will be able to do:\r\n\r\n```\r\nbc.exe -e \"scale = 100\"\r\n```", + "createdAt": "2021-10-08T15:09:39Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-938717897", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc439Fcs", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Well, this is not really an option for me - I want bc to exit after `-e` switch. The point is to have ability to manipulate of scale value from outside - the only option for now to do it is within a script or command. Anyway, not really a problem. Fell free to close this, if you are not going implement scale switch.", + "createdAt": "2021-10-08T16:09:16Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-938759980", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc439QqT", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yeah, I'm sorry. It's a little too specialized to do in my opinion.\r\n\r\nThank you for understanding.", + "createdAt": "2021-10-08T16:34:17Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-938805907", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5Dmtyj", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "@depler would you still want this? I'm going to do a release soon, and I'm reconsidering it.", + "createdAt": "2022-05-23T06:10:23Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-1134222499", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5EjtT2", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "@depler I'm going to implement this.", + "createdAt": "2022-06-08T17:44:03Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-1150211318", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5EksDZ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "It is now implemented in 488d48c87c5b9e02e5c3911918c2d6d7687246e8. The command-line options are `-S`/`--scale`, `-I`/`--ibase`, `-O`/`--obase`, and `-E`/`--seed`.\r\n\r\nIf you could test before I release `5.3.0`, I would appreciate it.\r\n\r\nAlso, history is working on Windows now!", + "createdAt": "2022-06-08T22:15:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-1150468313", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5Es3Dl", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "It's been released in `5.3.0`. Hope this helps!", + "createdAt": "2022-06-10T18:05:26Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/47#issuecomment-1152610533", + "viewerDidAuthor": true + } + ], + "createdAt": "2021-10-08T11:02:30Z", + "id": "I_kwDOCL0xJc482sjv", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 47, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Command switch for scale?", + "updatedAt": "2022-06-10T18:05:27Z", + "url": "https://github.com/gavinhoward/bc/issues/47" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "is_bot": false, + "login": "depler", + "name": "" + }, + "body": "Hi! When are you going to release new version with recent changes?", + "closed": true, + "closedAt": "2021-10-06T20:42:31Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc43pTbJ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes. It will be `5.1.0`.\r\n\r\nI have not done so yet because of two things. First, I was not really sure if you would find more bugs, and second, my release process takes a while. (It includes, among other things, building `bc` in every supported configuration and running the test suite for every build, on multiple platforms.)\r\n\r\nI expect that the release will go out sometime today (US time).", + "createdAt": "2021-10-04T15:03:22Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/46#issuecomment-933574345", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43p7GT", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Release is out! Thank you for your help.", + "createdAt": "2021-10-04T18:19:40Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/46#issuecomment-933736851", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43qhxQ", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Thanks! Why did you put project files, debug executables and test files into release archive?", + "createdAt": "2021-10-04T22:11:43Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/46#issuecomment-933895248", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc43qjSr", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I should not have put the test files (sorry; I'll take them out next release), but I put the others there in case users *want* a debug executable. Basically, I put whatever I thought users might want even if they don't want the full repo. (I know at least Linux distro that builds a debug version of my `bc`.)", + "createdAt": "2021-10-04T22:23:01Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/46#issuecomment-933901483", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc432vHa", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "The next release is out (there was a bug), and I have implemented your suggestions, except for debug executables. Thank you.\r\n\r\nI will go ahead and close this bug now, but you can reopen if you feel the need.", + "createdAt": "2021-10-06T20:42:31Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/46#issuecomment-937095642", + "viewerDidAuthor": true + } + ], + "createdAt": "2021-10-04T13:53:49Z", + "id": "I_kwDOCL0xJc48guzb", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 46, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "New release", + "updatedAt": "2021-10-06T20:42:31Z", + "url": "https://github.com/gavinhoward/bc/issues/46" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "body": "@depler do you know how to get packages into Winget and Chocolatey? I had [someone ask me to do that][1].\r\n\r\n[1]: https://news.ycombinator.com/item?id=28653815", + "closed": true, + "closedAt": "2021-10-01T17:38:41Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc43ktg6", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Sorry, never did this. I prefer portable windows utilities without package manager.", + "createdAt": "2021-10-01T16:20:38Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/45#issuecomment-932370490", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc43k7w9", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": ":+1: ", + "createdAt": "2021-10-01T17:38:41Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/45#issuecomment-932428861", + "viewerDidAuthor": true + } + ], + "createdAt": "2021-10-01T04:59:55Z", + "id": "I_kwDOCL0xJc48X3lM", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 45, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Get `bc` into Winget and Chocolatey", + "updatedAt": "2021-10-01T17:38:41Z", + "url": "https://github.com/gavinhoward/bc/issues/45" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "is_bot": false, + "login": "depler", + "name": "" + }, + "body": "Can you please implement some new command line arguments?\r\n\r\n1. Ability to print equation result without line breaks, i.e. just a solid text.\r\n2. Ability to force prepending zero in equation result, i.e. `0.123` instead of current `.123`", + "closed": true, + "closedAt": "2021-09-29T23:02:01Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc43UXox", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Those are good ideas.\r\n\r\nFor the first, there is already an environment variable, `BC_LINE_LENGTH`, that can be used to do that. You just set it to a large number. Would that work, or would that still not be convenient (and I use that word for a reason; I do want it to be easy for you) on Windows? Also, if you want a separate option to remove line limits entirely, why?\r\n\r\nFor the second, I think that one might be a *really* good idea. EDIT: However, could this be implemented by something like a function in the math library such that it's not a global option affecting all numbers? Would that be better? Should we have both?\r\n\r\nIn both of these cases, I don't want to just willy-nilly implement something; I want them to be designed correctly. So I'll get started on that, but please feel free to give me your opinions about the design of them.", + "createdAt": "2021-09-27T17:16:40Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-928086577", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43UkoZ", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "> Also, if you want a separate option to remove line limits entirely, why?\r\n\r\nThis is exactly what I want - remove line limits entirely. Environment variables are not really useful on Windows unless you heavily use scripts. Usually you just run executable with desired variables to archive functionality (or using some config file as alternative).\r\n\r\n> However, could this be implemented by something like a function in the math library such that it's not a global option affecting all numbers? Would that be better? Should we have both?\r\n\r\nFor exactly my needs global option is preferable - I just want to see all numbers in range `-1 < 0 < 1` with zero.\r\n\r\nSo if you you think that environment variables are needed - feel free to implement both. Personally I don't like to use environment switches, command arguments are more convenient for me.\r\n", + "createdAt": "2021-09-27T18:06:20Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-928139801", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc43VIy5", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Good to know. Let me get on that and see if I can come up with something that works for you.", + "createdAt": "2021-09-27T21:15:44Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-928287929", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43Vnrz", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I have added the two command line arguments (`z` and `C`). Could you please pull and test that they do what you want?\r\n\r\nI'm not done yet, but the rest of the work is not really going to impact what you want. It's a way to query the status of those things so that I can write library functions to print them in different ways.", + "createdAt": "2021-09-27T23:07:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-928414451", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43XcED", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I've changed the options to `-z`/`--leading-zeroes` and `-L`/`--no-line-length`.", + "createdAt": "2021-09-28T06:21:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-928891139", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43YQUv", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Working fine, thanks! Can you please add new tests to windows scripts? It is just a new lines with filename of appropriate test in `tests_bc.bat` and `tests_dc.bat`.", + "createdAt": "2021-09-28T11:34:55Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-929105199", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc43Y4pl", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I'm sorry, I feel stupid, but I'm not sure what tests you want me to add. For these features? Or more tests in general?", + "createdAt": "2021-09-28T14:12:35Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-929270373", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43ZFR5", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "You've added this one (and may be something else): https://github.com/gavinhoward/bc/blob/master/tests/bc/leadingzero.txt\r\nWindows script doesn't know about it yet.", + "createdAt": "2021-09-28T15:09:39Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-929322105", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc43Zugt", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I see. I've added that test to the Windows bat file, but once again, can you pull and test for me? The reason is that it needs to run the test twice, and I want to be sure that works for you.", + "createdAt": "2021-09-28T17:54:31Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-929490989", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43btxR", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "A few changes are needed to differ `leadingzero` test from `leadingzero_z` : https://github.com/gavinhoward/bc/pull/44\r\nOtherwise it works fine.", + "createdAt": "2021-09-29T09:35:21Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-930012241", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc43crqE", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "#44 is merged. Is there anything else that needs to change for you?", + "createdAt": "2021-09-29T15:06:22Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-930265732", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc43d-9e", + "author": { + "login": "depler" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Nope. Thanks 👍", + "createdAt": "2021-09-29T23:02:01Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/43#issuecomment-930606942", + "viewerDidAuthor": false + } + ], + "createdAt": "2021-09-27T15:12:39Z", + "id": "I_kwDOCL0xJc48GQ_o", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 43, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Additional arguments", + "updatedAt": "2021-09-29T23:02:02Z", + "url": "https://github.com/gavinhoward/bc/issues/43" + }, + { + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ2Njg2NTY1", + "is_bot": false, + "login": "rubyFeedback", + "name": "" + }, + "body": "Hey there.\n\nI am using this configure line:\n\n CC=gcc ./configure --prefix=/home/Programs/Bc/7.0.3/ -G -O3 -r\n\nThis is what LFS (Linux from Scratch) recommends, but they use the conventional\n/usr/ prefix.\n\nNow interestingly, when I use the above, I get this result - a warning:\n\n WARNING: Locales will *NOT* be installed in $PREFIX (/home/Programs/Bc/7.0.3/).\n\n This is because they *MUST* be installed at a fixed location to even\n work, and that fixed location is $NLSPATH (/usr/share/locale/%L/%N).\n\n This location is *outside* of $PREFIX. If you do not wish to install\n locales outside of $PREFIX, you must disable NLS with the -N or the\n --disable-nls options.\n\n The author apologizes for the inconvenience, but the need to install\n the locales at a fixed location is mandated by POSIX, and it is not\n possible for the author to change that requirement.\n\nThe warning makes sense on traditional systems that use /usr/ as prefix.\nGoboLinux uses versioned appdirs instead. (I am not using GoboLinux\nright now, as they use /Programs/ dir; I use a slightly modified self-compiled\nvariant instead. At the least currently.)\n\nI do not believe that POSIX mandates that /usr/share/local/ must be in\nthe way described. For instance, I am about 100% certain that symlinks \nare allowed; at the least not forbidden, so I would reason that POSIX\ncan not be cited here. GoboLinux also uses symlinks by the way; they\neven still have /usr/ etc... despite versioned appdirs.\n\nMy question is: is this warning really needed? I can install all glibc-related\nlocales into /home/Programs/Glibc/2.41/share/local/ etc... and I do not\nget any warning about this. I believe the warning has had good intentions,\nbut the explanation is a bit shaky to me, and does not seem to account\nfor e. g. alternative ways to handle a linux system. Does POSIX really\nsay that symlinks are forbidden?\n\n(Also, is it true that locales must be at a fixed location per se? Because in\nprinciple, whatever is searching for the file, could also have another \nlocation. I use the example of symlinks, but even without symlinks we \nhave things such as --libdir and various other flags that allow fine-tuning\nof various things here. Even meson-build systems allow for quite some\nflexibility here.)\n", + "closed": true, + "closedAt": "2025-04-10T16:47:30Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6mkMkS", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes, it is necessary. I have had more people ask why locales don't work than people like you asking why there is a warning. In fact, you're the first.\n\nTo remove the warning, set `NLSPATH` on the call to `configure`, like so:\n\n```\nCC=gcc NLSPATH=/home/Programs/Bc/7.0.3/%L/%N \\\n ./configure --prefix=/home/Programs/Bc/7.0.3/ -G -O3 -r\n```\n\nThen yes, you can set up symlinks; POSIX does allow that.", + "createdAt": "2025-04-10T16:47:30Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/90#issuecomment-2794506514", + "viewerDidAuthor": true + } + ], + "createdAt": "2025-04-10T11:40:10Z", + "id": "I_kwDOCL0xJc6x8Vgk", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 90, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "locales - is the warning for non-standard prefixes still necessary?", + "updatedAt": "2025-04-10T16:47:30Z", + "url": "https://github.com/gavinhoward/bc/issues/90" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOBxD9gQ", + "is_bot": false, + "login": "tungstengmd", + "name": "harlow foxworthy" + }, + "body": "this might have been excluded for a reason but can you add the \"!\" command back ? only reason being that i wanna clear the screen on certain events", + "closed": true, + "closedAt": "2025-04-18T20:43:24Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6n20Uz", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "It was excluded for a reason, and no, I will not add it. Have your shell clear the screen.", + "createdAt": "2025-04-18T20:43:23Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/91#issuecomment-2816165171", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6n25O1", + "author": { + "login": "tungstengmd" + }, + "authorAssociation": "NONE", + "body": "had a feeling, and damn you're fast", + "createdAt": "2025-04-18T20:58:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/91#issuecomment-2816185269", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6n3ljG", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "You can hardcode the sequence to clear the screen.\nTo be a bit independent of the terminal, catching what `clear` will send may be the way.\n```\n$ clear | xxd -C -p -u -\n1B5B481B5B324A\n```\nSo this ...\n```\n$ clear | xxd -C -p -u - | dc -e '16i ? P'\n```\n... demonstrates it. Capture the value, in base10 if you prefer.\n\nTBH, I miss `!` too.\n", + "createdAt": "2025-04-18T23:55:14Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/91#issuecomment-2816366790", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6n4p5E", + "author": { + "login": "tungstengmd" + }, + "authorAssociation": "NONE", + "body": "oh wait you're onto something", + "createdAt": "2025-04-19T10:18:42Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/91#issuecomment-2816646724", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6n5dwl", + "author": { + "login": "tungstengmd" + }, + "authorAssociation": "NONE", + "body": "ok so basically you can just catch command output [as hex form] in xxd and input it to dc with the input radix as 16\ntherefore bypassing the need for `!`\nthanks @drawkula", + "createdAt": "2025-04-19T20:40:25Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/91#issuecomment-2816859173", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6n-PJv", + "author": { + "login": "drawkula" + }, + "authorAssociation": "NONE", + "body": "Sure you can read ™somewhere™ which control sequence your `$TERM` will use to clear the screen and then manually turn that into this string alike integer, but you'd have to do that anew everywhere you run your code attached to a differently behaving terminal emulation. So catching the sequence from `clear`, similar `tput` commands or directly looking it up in Terminfo or Termcap terminal definitions makes it portable and I assumed catching the output of `clear` would be the easiest of these alternatives.\n\nUsing `xxd` may limit portability a bit. That's probably the weak spot of this idea. There are alternatives, but if available, `xxd` seems to fit this job best.", + "createdAt": "2025-04-21T10:18:17Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/91#issuecomment-2818110063", + "viewerDidAuthor": false + } + ], + "createdAt": "2025-04-18T20:41:22Z", + "id": "I_kwDOCL0xJc6zJ4VJ", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 91, + "projectCards": [], + "projectItems": [], + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "add ! command", + "updatedAt": "2025-04-21T10:18:18Z", + "url": "https://github.com/gavinhoward/bc/issues/91" + }, + { + "assignees": [], + "author": { + "id": "U_kgDOB8YAUQ", + "is_bot": false, + "login": "tkb-github", + "name": "" + }, + "body": "With the release of RHEL 10 and Fedora 42, we’ve tried to build 7.0.3 on both. No issues with Clang.\n\nWith GCC (v14 for RHEL 10, v15 for Fedora 42), though, the build succeeded under the [epel-10-aarch64](https://download.copr.fedorainfracloud.org/results/tkbcopr/bc-gh/epel-10-aarch64/09140402-bc-gh/) chroot but failed with [epel-10-x86_64](https://download.copr.fedorainfracloud.org/results/tkbcopr/bc-gh/epel-10-x86_64/09140402-bc-gh/), [fedora-42-x86_64](https://download.copr.fedorainfracloud.org/results/tkbcopr/bc-gh/fedora-42-x86_64/09140402-bc-gh/) and [fedora-42-aarch64](https://download.copr.fedorainfracloud.org/results/tkbcopr/bc-gh/fedora-42-aarch64/09140402-bc-gh/). Here’s excerpts from the failed builds.\n\nepel-10-x86_64:\n\n```sh\n\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto ./gen/dc_help.o ./gen/bc_help.o ./gen/lib.o ./gen/lib2.o src/args.o src/bc.o src/bc_lex.o src/bc_parse.o src/data.o src/dc.o src/dc_lex.o src/dc_parse.o src/file.o src/history.o src/lang.o src/lex.o src/main.o src/num.o src/opt.o src/parse.o src/program.o src/rand.o src/read.o src/vector.o src/vm.o -Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes -o bin/bc\n/usr/bin/ld: /tmp/ccMAotuu.ltrans0.ltrans.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE\n/usr/bin/ld: failed to set dynamic section sizes: bad value\ncollect2: error: ld returned 1 exit status\nmake: *** [Makefile:241: bin/bc] Error 1\nerror: Bad exit status from /var/tmp/rpm-tmp.G7xvMo (%build)\n\nRPM build errors:\n Bad exit status from /var/tmp/rpm-tmp.G7xvMo (%build)\n\n```\n\nfedora-42-x86_64\n\n```sh\n\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto -o src/data.o -c ./src/data.c\nIn file included from /usr/lib/gcc/x86_64-redhat-linux/15/include/stdint.h:11,\n from ./include/status.h:46,\n from ./include/args.h:39,\n from ./src/data.c:39:\n./src/data.c:920:29: error: â^@^XfalseULâ^@^Y undeclared here (not in a function)\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~~\n./src/data.c:920:9: note: in expansion of macro â^@^XBC_PARSE_EXPR_ENTRYâ^@^Y\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~~~~~~~~~~~~~~~~\n./src/data.c:920:43: error: â^@^XtrueULâ^@^Y undeclared here (not in a function)\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~\n./src/data.c:920:9: note: in expansion of macro â^@^XBC_PARSE_EXPR_ENTRYâ^@^Y\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~~~~~~~~~~~~~~~~\nmake: *** [Makefile:668: src/data.o] Error 1\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto -o src/dc.o -c ./src/dc.c\nmake: *** Waiting for unfinished jobs....\ngcc -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -I./include/ -flto -o ./gen/strgen ./gen/strgen.c\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto -o src/bc_parse.o -c ./src/bc_parse.c\nerror: Bad exit status from /var/tmp/rpm-tmp.hRViel (%build)\n\nRPM build errors:\n Bad exit status from /var/tmp/rpm-tmp.hRViel (%build)\n\n```\n\nfedora-42-aarch64\n\n```sh\n\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto -o src/data.o -c ./src/data.c\nIn file included from /usr/lib/gcc/aarch64-redhat-linux/15/include/stdint.h:11,\n from ./include/status.h:46,\n from ./include/args.h:39,\n from ./src/data.c:39:\n./src/data.c:920:29: error: â^@^XfalseULâ^@^Y undeclared here (not in a function)\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~~\n./src/data.c:920:9: note: in expansion of macro â^@^XBC_PARSE_EXPR_ENTRYâ^@^Y\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~~~~~~~~~~~~~~~~\n./src/data.c:920:43: error: â^@^XtrueULâ^@^Y undeclared here (not in a function)\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~\n./src/data.c:920:9: note: in expansion of macro â^@^XBC_PARSE_EXPR_ENTRYâ^@^Y\n 920 | BC_PARSE_EXPR_ENTRY(false, false, true, true, true, true, true, true),\n | ^~~~~~~~~~~~~~~~~~~\nmake: *** [Makefile:668: src/data.o] Error 1\nmake: *** Waiting for unfinished jobs....\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto -o src/dc.o -c ./src/dc.c\ngcc -DBC_ENABLED=1 -DDC_ENABLED=1 -I./include/ -DBUILD_TYPE=A -DEXECPREFIX= -DMAINEXEC=bc -DBC_NUM_KARATSUBA_LEN=34 -DBC_ENABLE_NLS=1 -DBC_ENABLE_EXTRA_MATH=1 -DBC_ENABLE_HISTORY=1 -DBC_ENABLE_LIBRARY=0 -DBC_ENABLE_MEMCHECK=0 -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -DBC_DEFAULT_BANNER=0 -DBC_DEFAULT_SIGINT_RESET=1 -DBC_DEFAULT_TTY_MODE=1 -DBC_DEFAULT_PROMPT=1 -DBC_DEFAULT_EXPR_EXIT=1 -DBC_DEFAULT_DIGIT_CLAMP=0 -DDC_DEFAULT_SIGINT_RESET=1 -DDC_DEFAULT_TTY_MODE=0 -DDC_DEFAULT_PROMPT=0 -DDC_DEFAULT_EXPR_EXIT=1 -DDC_DEFAULT_DIGIT_CLAMP=0 -DBC_ENABLE_EDITLINE=0 -DBC_ENABLE_READLINE=0 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -O3 -g -flto -o src/bc_parse.o -c ./src/bc_parse.c\ngcc -DBC_ENABLE_AFL=0 -DBC_ENABLE_OSSFUZZ=0 -I./include/ -flto -o ./gen/strgen ./gen/strgen.c\nerror: Bad exit status from /var/tmp/rpm-tmp.5cLuhE (%build)\n\nRPM build errors:\n Bad exit status from /var/tmp/rpm-tmp.5cLuhE (%build)\n\n```", + "closed": true, + "closedAt": "2025-06-08T22:18:49Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6v8kNF", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "For epel-10-x86_64, just add `-fPIE` to the `CFLAGS`, like so:\n\n```\n$ CFLAGS=-fpie ./configure.sh\n$ make\n```\n\nFor the other two, it appears `stdbool.h` does not properly define `false` and `true`.", + "createdAt": "2025-06-07T05:46:33Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/92#issuecomment-2951889733", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6wDPLy", + "author": { + "login": "tkb-github" + }, + "authorAssociation": "NONE", + "body": "Thanks!", + "createdAt": "2025-06-08T06:52:46Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/issues/92#issuecomment-2953638642", + "viewerDidAuthor": false + } + ], + "createdAt": "2025-06-07T03:51:28Z", + "id": "I_kwDOCL0xJc66WQa1", + "isPinned": false, + "labels": [], + "milestone": null, + "number": 92, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "state": "CLOSED", + "stateReason": "COMPLETED", + "title": "Build failures under RHEL 10 & Fedora 42 with GCC", + "updatedAt": "2025-06-08T22:18:49Z", + "url": "https://github.com/gavinhoward/bc/issues/92" + } +] diff --git a/contrib/bc/project/github_prs.json b/contrib/bc/project/github_prs.json new file mode 100644 index 000000000000..c2ca634c3554 --- /dev/null +++ b/contrib/bc/project/github_prs.json @@ -0,0 +1,7729 @@ +[ + { + "additions": 8, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjM5MjUwOQ==", + "is_bot": false, + "login": "bolknote", + "name": "Evgeny Stepanischev" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "9f34d2427d3f13c8e95b8485f5a6041789ffe400", + "body": "Code:\r\n`define a(*t[], t[]) {}`\r\n\r\nExpected result:\r\nParse error: function parameter or auto \"t[]\" already exists\r\n\r\nActual result:\r\nParses successfully (incorrect)\r\n\r\nThe interpreter now correctly rejects functions with duplicate parameter names, even when one is a reference array (*t[]).", + "changedFiles": 3, + "closed": true, + "closedAt": "2025-03-25T04:55:24Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6j52QL", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Oh, and another thing you could get credit for: if you create `tests/bc/errors/39.txt` and put your reproducer into it, I would accept that too.", + "createdAt": "2025-03-25T02:01:13Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/89#issuecomment-2749850635", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6j6h5M", + "author": { + "login": "bolknote" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Yes, no problem! I hope I’ve managed to cover everything needed. If something isn’t quite right, please let me know!", + "createdAt": "2025-03-25T04:16:09Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/89#issuecomment-2750029388", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6j6uej", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Looks good!", + "createdAt": "2025-03-25T04:55:31Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/89#issuecomment-2750080931", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2025-03-24T22:31:38Z", + "authors": [ + { + "email": "imbolk@gmail.com", + "id": "MDQ6VXNlcjM5MjUwOQ==", + "login": "bolknote", + "name": "Evgeny Stepanischev" + } + ], + "committedDate": "2025-03-24T22:31:38Z", + "messageBody": "", + "messageHeadline": "Fix duplicate param check for ref arrays", + "oid": "97756f3dc17b74c2a9c31488e8680a03f2f016eb" + }, + { + "authoredDate": "2025-03-25T04:07:25Z", + "authors": [ + { + "email": "imbolk@gmail.com", + "id": "MDQ6VXNlcjM5MjUwOQ==", + "login": "bolknote", + "name": "Evgeny Stepanischev" + } + ], + "committedDate": "2025-03-25T04:07:25Z", + "messageBody": "", + "messageHeadline": "Fix coding style", + "oid": "facbd16ceecdd72015abe21f6f4fe4d686b8e66b" + }, + { + "authoredDate": "2025-03-25T04:10:52Z", + "authors": [ + { + "email": "imbolk@gmail.com", + "id": "MDQ6VXNlcjM5MjUwOQ==", + "login": "bolknote", + "name": "Evgeny Stepanischev" + } + ], + "committedDate": "2025-03-25T04:10:52Z", + "messageBody": "This test ensures the interpreter correctly rejects functions with\nduplicate parameter names, even when one is a reference array (*t[]).", + "messageHeadline": "Add test for duplicate ref array parameters", + "oid": "a10b2fd6a2b77325dc981a8ce296d1c22c47ba0a" + } + ], + "createdAt": "2025-03-24T22:35:24Z", + "deletions": 2, + "files": [ + { + "path": "include/lang.h", + "additions": 4, + "deletions": 0 + }, + { + "path": "src/lang.c", + "additions": 3, + "deletions": 2 + }, + { + "path": "tests/bc/errors/39.txt", + "additions": 1, + "deletions": 0 + } + ], + "fullDatabaseId": "2414968976", + "headRefName": "master", + "headRefOid": "a10b2fd6a2b77325dc981a8ce296d1c22c47ba0a", + "headRepository": { + "id": "R_kgDOOARsdw", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjM5MjUwOQ==", + "name": "Evgeny Stepanischev", + "login": "bolknote" + }, + "id": "PR_kwDOCL0xJc6P8YCQ", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [ + { + "id": "", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I'll be upfront: I have accepted this because it passes the tests, and yes, it is a bug.\r\n\r\nHowever, if you run `./scripts/format.sh` on the repo before I do that, I won't have to adjust the style, which would hide your contribution for the `if` statement in `src/lang.c`.\r\n\r\nIf you could do that, I'd appreciate it, and you would get to keep your credit. If not, no problem; just tell me.", + "submittedAt": "2025-03-25T01:55:21Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "CHANGES_REQUESTED", + "commit": { + "oid": "" + } + } + ], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "0013dbee105fad63633ffe11240b18deb3d4bf9e" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2025-03-25T04:55:24Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 89, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "CHANGES_REQUESTED", + "reviewRequests": [], + "reviews": [ + { + "id": "PRR_kwDOCL0xJc6hpxI0", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I'll be upfront: I have accepted this because it passes the tests, and yes, it is a bug.\r\n\r\nHowever, if you run `./scripts/format.sh` on the repo before I do that, I won't have to adjust the style, which would hide your contribution for the `if` statement in `src/lang.c`.\r\n\r\nIf you could do that, I'd appreciate it, and you would get to keep your credit. If not, no problem; just tell me.", + "submittedAt": "2025-03-25T01:55:21Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "CHANGES_REQUESTED", + "commit": { + "oid": "97756f3dc17b74c2a9c31488e8680a03f2f016eb" + } + } + ], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Fix duplicate param check for ref arrays", + "updatedAt": "2025-03-25T04:55:32Z", + "url": "https://github.com/gavinhoward/bc/pull/89" + }, + { + "additions": 21, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjM5MjUwOQ==", + "is_bot": false, + "login": "bolknote", + "name": "Evgeny Stepanischev" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "79d5bffaa1c74888d62c47342e5b99a96797a8b5", + "body": "```\r\nsrand = 10\r\n\r\nfor (i = 0; i < 1000000; i++) {\r\n\ta = irand(100000000)\r\n\tb = irand(100000000)\r\n\r\n\t. = new_band(a, b)\r\n}\r\n```\r\n\r\ntime bc -l band.bc\r\n\r\nreal\t0m12.768s\r\nuser\t0m12.735s\r\nsys\t0m0.030s\r\n\r\n```\r\nsrand = 10\r\n\r\nfor (i = 0; i < 1000000; i++) {\r\n\ta = irand(100000000)\r\n\tb = irand(100000000)\r\n\r\n\t. = band(a, b)\r\n}\r\n```\r\ntime bc -l band.bc\r\n\r\nreal\t0m25.416s\r\nuser\t0m25.270s\r\nsys\t0m0.119s", + "changedFiles": 1, + "closed": true, + "closedAt": "2025-03-01T05:22:26Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6gdBpI", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "After convincing myself that your changes are correct, I accept them.\r\n\r\nHowever, I *am* going to adjust the style; the lib2 file gets put into the executable as a string, and I want to eliminate useless characters.", + "createdAt": "2025-03-01T05:22:29Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/88#issuecomment-2691963464", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2025-02-27T06:55:52Z", + "authors": [ + { + "email": "imbolk@gmail.com", + "id": "MDQ6VXNlcjM5MjUwOQ==", + "login": "bolknote", + "name": "Evgeny Stepanischev" + } + ], + "committedDate": "2025-02-27T06:55:52Z", + "messageBody": "", + "messageHeadline": "The band() function has been accelerated almost 2x", + "oid": "4112814ae6456dd8d0455a1a6b1d06f7ab78d59a" + } + ], + "createdAt": "2025-02-27T07:03:09Z", + "deletions": 19, + "files": [ + { + "path": "gen/lib2.bc", + "additions": 21, + "deletions": 19 + } + ], + "fullDatabaseId": "2361404896", + "headRefName": "master", + "headRefOid": "4112814ae6456dd8d0455a1a6b1d06f7ab78d59a", + "headRepository": { + "id": "R_kgDOOARsdw", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjM5MjUwOQ==", + "name": "Evgeny Stepanischev", + "login": "bolknote" + }, + "id": "PR_kwDOCL0xJc6MwC3g", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "6c12610da98b69e873702479e49218e2944437da" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2025-03-01T05:22:26Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 88, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "The band() function has been accelerated almost 2x", + "updatedAt": "2025-03-01T05:22:30Z", + "url": "https://github.com/gavinhoward/bc/pull/88" + }, + { + "additions": 8, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ5NzIxNTU=", + "is_bot": false, + "login": "dag-erling", + "name": "Dag-Erling Smørgrav" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "ca389548763c40852040e5c028b0869b47a3710f", + "body": "Previously, we would catch `SIGWINCH` and call `el_resize()` from the signal handler. This is unsafe and led to strange behavior such as terminating on second resize. The simplest solution is to let libedit handle `SIGWINCH` itself.\r\n\r\nThis reverts 56bb18255a24 and 89d6c3451a60 and removes all traces of `SIGWINCH` from bc itself, and instead sets the `EL_SIGNAL` flag on the editline context, which causes libedit to detect and handle terminal size changes internally.", + "changedFiles": 5, + "closed": true, + "closedAt": "2025-01-09T03:21:56Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6UKjDG", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for your contribution.\r\n\r\nHowever, I cannot accept it. The man page for libedit says that it installs its own signal handler for a set of signals, one of which is `SIGINT`, which `bc` needs to treat specially. So I cannot use `EL_SIGNAL`. If libedit only handled `SIGWINCH`, this would work.", + "createdAt": "2024-11-19T13:57:00Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2485792966", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6UKzkD", + "author": { + "login": "dag-erling" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Did you even test my patch? It works just fine, because (except for `SIGWINCH` and `SIGCONT`) libedit restores the previous signal handler and re-posts the signal after cleaning up.", + "createdAt": "2024-11-19T14:24:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2485860611", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6ULIip", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I tested it on macOS. It did not work with `SIGINT`. I do not have access to a Linux machine, but I will later in the day.\r\n\r\nBut I do not like depending on that behavior. Signals are finicky, and that could expose platform differences.", + "createdAt": "2024-11-19T14:56:46Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2485946537", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6ULaEs", + "author": { + "login": "dag-erling" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "I developed the patch on macOS, it works perfectly fine there and on FreeBSD. If you have an issue with it, perhaps you can describe the symptoms so I can help you figure it out instead of dismissing it out of hand?", + "createdAt": "2024-11-19T15:22:57Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2486018348", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6UMfC7", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Please give me some leniency. Testing it is not dismissing it out of hand. I am wary of making changes that may break things. And I have little time.\r\n\r\nHowever, in this case, I decided to test my code as well and found that it had the same problem: that multiple interrupts would not be handled. I found the fix, and it works for your code.\r\n\r\nIt make still take me time to test on Linux and FreeBSD, but this patch may still be viable.", + "createdAt": "2024-11-19T17:16:46Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2486300859", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6Zugh4", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Tested on Linux, FreeBSD, and macOS. With my fix, it works. There should be a release out soon-ish.\r\n\r\nThank you for your patience.", + "createdAt": "2025-01-09T03:22:42Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2579105912", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6aDHFg", + "author": { + "login": "dag-erling" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Thank you!", + "createdAt": "2025-01-10T22:18:03Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/86#issuecomment-2584506720", + "viewerDidAuthor": false + } + ], + "commits": [ + { + "authoredDate": "2024-11-12T11:50:39Z", + "authors": [ + { + "email": "des@des.dev", + "id": "MDQ6VXNlcjQ5NzIxNTU=", + "login": "dag-erling", + "name": "Dag-Erling Smørgrav" + } + ], + "committedDate": "2024-11-12T11:59:50Z", + "messageBody": "Previously, we would catch SIGWINCH and call el_resize() from the signal handler. This is unsafe and led to strange behavior such as terminating on second resize. The simplest solution is to let libedit handle SIGWINCH itself.\n\nThis reverts 56bb18255a24 and 89d6c3451a60 and removes all traces of SIGWINCH from bc itself, and instead sets the EL_SIGNAL flag on the editline context, which causes libedit to detect and handle terminal size changes internally.", + "messageHeadline": "Let libedit handle terminal size changes.", + "oid": "e671399e9dc92181219da87e3aa02d44a0b4a4c3" + } + ], + "createdAt": "2024-11-12T12:02:29Z", + "deletions": 79, + "files": [ + { + "path": "include/history.h", + "additions": 0, + "deletions": 24 + }, + { + "path": "include/status.h", + "additions": 0, + "deletions": 5 + }, + { + "path": "src/history.c", + "additions": 2, + "deletions": 12 + }, + { + "path": "src/read.c", + "additions": 6, + "deletions": 12 + }, + { + "path": "src/vm.c", + "additions": 0, + "deletions": 26 + } + ], + "fullDatabaseId": "2174734014", + "headRefName": "des/sigwinch", + "headRefOid": "e671399e9dc92181219da87e3aa02d44a0b4a4c3", + "headRepository": { + "id": "R_kgDONOIgRA", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjQ5NzIxNTU=", + "name": "Dag-Erling Smørgrav", + "login": "dag-erling" + }, + "id": "PR_kwDOCL0xJc6Bn86-", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "79d5bffaa1c74888d62c47342e5b99a96797a8b5" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2025-01-09T03:21:55Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 86, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Let libedit handle terminal size changes.", + "updatedAt": "2025-01-10T22:18:04Z", + "url": "https://github.com/gavinhoward/bc/pull/86" + }, + { + "additions": 12, + "assignees": [], + "author": { + "id": "U_kgDOCgjy1g", + "is_bot": false, + "login": "henke9600", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "c5b7724ee07daa729f0123c6024223b834de42e3", + "body": "It's possible that the warning being ignored wasn't enabled in the first place, so always enabling it again is wrong.\r\n\r\nIn practice, this resulted in unexpected -Wdisabled-macro-expansion warnings when compiling against musl libc.", + "changedFiles": 3, + "closed": true, + "closedAt": "2024-09-21T19:14:25Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6M-4FI", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I have no comments. You followed style, and I agree that this was a problem. In fact, I had been intending to fix it, but I kept forgetting.\r\n\r\nThe question now is whether I should release. Do you know of any musl-based distros that use this `bc`? If not, I may not worry about releasing.", + "createdAt": "2024-09-21T19:15:47Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/84#issuecomment-2365292872", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6M-6p8", + "author": { + "login": "henke9600" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Not sure. I use it in my hobby distro, but i can live with the warning :slightly_smiling_face: ", + "createdAt": "2024-09-21T19:57:46Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/84#issuecomment-2365303420", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6M_b08", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": ":)\r\n\r\nI think I'll do a release soonish for Gentoo's sake; technically, Gentoo users can use musl.", + "createdAt": "2024-09-22T03:16:02Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/84#issuecomment-2365439292", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc6NRQWz", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "`7.0.3` is out. I hope it works for you.", + "createdAt": "2024-09-24T04:12:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/84#issuecomment-2370110899", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2024-09-21T15:30:32Z", + "authors": [ + { + "email": "henrik@lxm.se", + "id": "U_kgDOCgjy1g", + "login": "henke9600", + "name": "Henrik Lindström" + } + ], + "committedDate": "2024-09-21T15:47:44Z", + "messageBody": "It's possible that the warning being ignored wasn't enabled in the first\nplace, so always enabling it again is wrong.\n\nIn practice, this resulted in unexpected -Wdisabled-macro-expansion warnings\nwhen compiling against musl libc.\n\nSigned-off-by: Henrik Lindström <henrik@lxm.se>", + "messageHeadline": "Don't unconditionally enable warnings after ignoring them", + "oid": "16c4f913ed0935a878ce2644aab2ccc0da05c8d0" + } + ], + "createdAt": "2024-09-21T15:49:45Z", + "deletions": 6, + "files": [ + { + "path": "src/file.c", + "additions": 2, + "deletions": 1 + }, + { + "path": "src/program.c", + "additions": 8, + "deletions": 4 + }, + { + "path": "src/vm.c", + "additions": 2, + "deletions": 1 + } + ], + "fullDatabaseId": "2084576864", + "headRefName": "master", + "headRefOid": "16c4f913ed0935a878ce2644aab2ccc0da05c8d0", + "headRepository": { + "id": "R_kgDOL0az5w", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "U_kgDOCgjy1g", + "login": "henke9600" + }, + "id": "PR_kwDOCL0xJc58QB5g", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "e5d675785383ce6142116243aa63d21e5afb54f7" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2024-09-21T19:14:25Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 84, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Don't unconditionally enable warnings after ignoring them", + "updatedAt": "2024-09-24T04:12:15Z", + "url": "https://github.com/gavinhoward/bc/pull/84" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "U_kgDOBqIXaQ", + "is_bot": false, + "login": "GregTonoski", + "name": "Greg Tonoski" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "324c30985c0d3d6f918fe81f2d8750c0bd1c78b1", + "body": "", + "changedFiles": 1, + "closed": true, + "closedAt": "2024-08-31T18:15:37Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc6KdjgL", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for catching that!\r\n\r\nUnfortunately, `A.1.md` is actually generated from `bc.1.md.in`. I edited `bc.1.md.in` instead and regenerated the manpages.\r\n\r\nI wasn't able to set you as the author of the commit because I don't know your email address, but I will if you want.", + "createdAt": "2024-08-31T18:16:53Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/pull/81#issuecomment-2323003403", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2024-08-31T07:52:27Z", + "authors": [ + { + "email": "111286121+GregTonoski@users.noreply.github.com", + "id": "U_kgDOBqIXaQ", + "login": "GregTonoski", + "name": "Greg Tonoski" + } + ], + "committedDate": "2024-08-31T07:52:27Z", + "messageBody": "", + "messageHeadline": "Update A.1.md minor correction - number instead of integer", + "oid": "8269063d303979de8188f4810a1c6b070494e025" + } + ], + "createdAt": "2024-08-31T07:52:34Z", + "deletions": 1, + "files": [ + { + "path": "manuals/bc/A.1.md", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "2047601609", + "headRefName": "patch-1", + "headRefOid": "8269063d303979de8188f4810a1c6b070494e025", + "headRepository": { + "id": "R_kgDOMq13Zg", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "U_kgDOBqIXaQ", + "name": "Greg Tonoski", + "login": "GregTonoski" + }, + "id": "PR_kwDOCL0xJc56C-vJ", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 81, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "Update A.1.md minor correction - number instead of integer", + "updatedAt": "2024-08-31T18:16:54Z", + "url": "https://github.com/gavinhoward/bc/pull/81" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "U_kgDOCgjy1g", + "is_bot": false, + "login": "henke9600", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "3278daef0079c20ccaed3a8666457c531dbe576b", + "body": "This avoids the `./configure.sh: 1693: [: unexpected operator` error when using dash.", + "changedFiles": 1, + "closed": true, + "closedAt": "2024-04-30T01:57:03Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc58OZbM", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Sorry for the wait.\r\n\r\nYes, you are correct that that is a bug. Yes, your fix is correct. Accepted without comment!\r\n\r\nThank you for your contribution!", + "createdAt": "2024-04-30T01:57:40Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/76#issuecomment-2084148940", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2024-04-28T16:12:24Z", + "authors": [ + { + "email": "henrik@lxm.se", + "id": "U_kgDOCgjy1g", + "login": "henke9600", + "name": "Henrik Lindström" + } + ], + "committedDate": "2024-04-28T16:12:24Z", + "messageBody": "", + "messageHeadline": "Make configure.sh posix compliant", + "oid": "938fc2cbcace3fb1fb353a5befff1b4a81180350" + } + ], + "createdAt": "2024-04-28T16:25:19Z", + "deletions": 1, + "files": [ + { + "path": "configure.sh", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "1844494404", + "headRefName": "master", + "headRefOid": "938fc2cbcace3fb1fb353a5befff1b4a81180350", + "headRepository": { + "id": "R_kgDOL0az5w", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "U_kgDOCgjy1g", + "login": "henke9600" + }, + "id": "PR_kwDOCL0xJc5t8MBE", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "59cf3b86eb4cafb6d7aa164d988a8c14c287e7f8" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2024-04-30T01:57:03Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 76, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Make configure.sh posix compliant", + "updatedAt": "2024-04-30T01:57:41Z", + "url": "https://github.com/gavinhoward/bc/pull/76" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "U_kgDOB2enHg", + "is_bot": false, + "login": "naggamura", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "1a381d61b079fc3548d3e4dee3a8ccd9200a3f87", + "body": "Found a printing error.\r\nTry obase=2; 2^99; 2^100; 2^105; you'll get it right away.", + "changedFiles": 1, + "closed": true, + "closedAt": "2023-12-22T15:38:08Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5vVPQZ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "You are correct; that is a bug.\r\n\r\nYour fix is correct; I got the condition backwards. Accepted without comment.\r\n\r\nSorry for taking so long, I struggle to read my own code; this is why I put in so many \"useless\" comments!\r\n\r\nAlso, I can think of another place that this *could have been* a problem and quickly tested it.\r\n\r\nThe problem is in printing in bases above base 16, where multiple characters may be printed for one digit.\r\n\r\nGuess what? I tested your fix after accepting it (I wanted your name in the Contributors list regardless), and your fix works for that too!\r\n\r\nTry this:\r\n\r\n```\r\n$ BC_LINE_LENGTH=77 bc\r\n>>> obase=128\r\n>>> 2^126\r\n 001 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000\r\n>>> quit\r\n```\r\n\r\nThat's what it is with the fix. Without, the bug shows:\r\n\r\n```\r\n$ BC_LINE_LENGTH=77 bc\r\n>>> obase=128\r\n>>> 2^126\r\n 001 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 00\\\r\n0\r\n>>> quit\r\n```\r\n\r\nI checked your fix with `BC_LINE_LENGTH=78` and `BC_LINE_LENGTH=76`, and your fix properly handles both.\r\n\r\nI am confident in your fix.\r\n\r\nAnyway, I'll start my release process and put out a release with your fix ASAP.", + "createdAt": "2023-12-22T15:53:14Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/74#issuecomment-1867838489", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5vWpvU", + "author": { + "login": "naggamura" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Oh I helped... ^^; I'm happy.\r\nI'm Jonathan Kim", + "createdAt": "2023-12-23T05:14:48Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/74#issuecomment-1868209108", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5vWqt8", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes, you did! And your fix has now passed the release process untouched.\r\n\r\nPlease don't think I'm a jerk for your previous PR; I try to not be.\r\n\r\nI just have ridiculously high standards and personal weaknesses in programming. And an eccentric style.\r\n\r\nIn fact, I [don't accept contributions at all][1] in my [next project][2]. Nothing against people, but I really struggle with patches. It's so bad that I actually can't get a programming job because of that. If you work in the industry, you're doing better than me.\r\n\r\nAnd nice to meet you. :)\r\n\r\n[1]: https://git.yzena.com/Yzena/Yc#user-content-open-source-not-open-contribution\r\n[2]: https://git.yzena.com/Yzena/Yc", + "createdAt": "2023-12-23T05:37:53Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/74#issuecomment-1868213116", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2023-12-22T13:22:27Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-22T13:22:27Z", + "messageBody": "Try obase=2; 2^105;", + "messageHeadline": "Fixed printing error.", + "oid": "930cb2fd56d7851ecc1af3de16b4b7357b0b5ba8" + } + ], + "createdAt": "2023-12-22T13:25:36Z", + "deletions": 1, + "files": [ + { + "path": "src/num.c", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "1655098845", + "headRefName": "master", + "headRefOid": "930cb2fd56d7851ecc1af3de16b4b7357b0b5ba8", + "headRepository": null, + "headRepositoryOwner": { + "id": "U_kgDOB2enHg", + "login": "naggamura" + }, + "id": "PR_kwDOCL0xJc5ips3d", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "39bd2c5622167a3c092ca9e2c38886ff288ba508" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2023-12-22T15:38:08Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 74, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Fixed printing error.", + "updatedAt": "2023-12-23T05:37:55Z", + "url": "https://github.com/gavinhoward/bc/pull/74" + }, + { + "additions": 657, + "assignees": [], + "author": { + "id": "U_kgDOB2enHg", + "is_bot": false, + "login": "naggamura", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "fcbe9d68ccc964fda12457ebbf687a27f57ff31f", + "body": "I'm sorry I missed many things on last PR.\r\nI followed your instructions step by step.\r\n\r\nImproved SQRT needs no long division in iteration.\r\nOnly one long division is needed for compose an initial estimation.\r\n\r\nNo meaningful difference for small input.\r\n\r\nFor large input, about 2.4 times faster, no meaningful difference in memory usage.\r\n\r\nHere is the result for large input.\r\n\r\n( 'CC=clang CFLAGS=-flto ./configure -O3' is used for configuring. )\r\n[stat_c1.txt](https://github.com/gavinhoward/bc/files/13696239/stat_c1.txt)\r\n[stat_c4.txt](https://github.com/gavinhoward/bc/files/13696240/stat_c4.txt)\r\n\r\nsqrt1_large.txt : by your code.\r\nsqrt2_large.txt : by my code.\r\n\r\n---------------------------------\r\n\r\nElapsed time for large input.\r\n\r\nx ../../sqrt1_large.txt\r\n+ ../../sqrt2_large.txt\r\n+--------------------------------------------------------------------------------+\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x |\r\n| + x x|\r\n| ++ x xx|\r\n|+++ x xx|\r\n|+++ x xx|\r\n|+++ xxxx|\r\n|+++ xxxx|\r\n|+++ x xxxx|\r\n|+++ x xxxx|\r\n|+++ x xxxx|\r\n|++++ x xxxx|\r\n| A| |_A| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 87.84 91.81 90.215 90.3572 1.0769137\r\n+ 50 36.96 38.71 37.805 37.8088 0.44755408\r\nDifference at 99.5% confidence\r\n -52.5484 +/- 0.523644\r\n -58.1563% +/- 0.315605%\r\n (Student's t, pooled s = 0.824636)\r\n\r\n\r\n----------------------\r\n\r\n\r\nMemory for large input.\r\n\r\nx ../../sqrt1_large.txt\r\n+ ../../sqrt2_large.txt\r\n+--------------------------------------------------------------------------------+\r\n| + |\r\n| + x |\r\n| + x |\r\n| + + x x x |\r\n| + + + x x x |\r\n| + + ++ ++ xx x x x x x |\r\n|+ ++++ +++++ + +++ x xx x x x xx xxx xx|\r\n|+ + +++++++++++++++++ * + * x xxxxxxxxx xxxx xxxx xx|\r\n| |_______AM_______| |______M__A_________| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 5376 5596 5494 5508.96 51.80535\r\n+ 50 5184 5412 5302 5301.12 44.115174\r\nDifference at 99.5% confidence\r\n -207.84 +/- 30.5525\r\n -3.77276% +/- 0.542566%\r\n (Student's t, pooled s = 48.1141)\r\n\r\n\r\n- END -", + "changedFiles": 3, + "closed": true, + "closedAt": "2023-12-20T01:50:17Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5u0b9I", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Unfortunately, you still did not check everything. That's probably my fault because I didn't tell you everything.\r\n\r\nNevertheless, this is what I found this time:\r\n\r\n* `CC=clang ./configure -pDBG; make`, my standard debug build, failed to build.\r\n* `CC=clang ./configure -gO0; make; make test`, a less strict debug build, failed the test suite.\r\n* `CC=clang ./configure -pGDH; make`, my standard release build for myself, failed to build.\r\n* `CC=clang ./configure -pGNU; make; make test`, the standard release build for Linux, failed the test suite.\r\n* `CC=gcc ./configure -pGNU; make; make test`, the same standard Linux build but with `gcc`, also failed the test suite.\r\n* `CC=clang ./configure -pBSD; make; make test`, the standard release build for FreeBSD and friends, failed the test suite.\r\n* `CC=gcc ./configure -pBSD; make; make test`, the same standard FreeBSD build but with `gcc`, also failed the test suite.\r\n\r\nIn addition, what failed on the test suite was off by a lot; the result I got for all cases was:\r\n\r\n```\r\nRunning bc sqrt...FAIL!!!\r\n12c12\r\n< .0000000000000035071355833500363\r\n---\r\n> .8915580480000035071355833500363\r\nbc failed test sqrt\r\n```\r\n\r\nAs you can see, the numbers are the same, except at the beginning, which means that answer was about as far off as it could be.\r\n\r\nIn addition, when I ran this:\r\n\r\n```\r\n$ ./configure -gO0 -v\r\n$ make\r\n$ make test\r\n```\r\n\r\nwhich is a Valgrind-enabled build, I got this:\r\n\r\n```\r\nRunning bc sqrt...==47836== Memcheck, a memory error detector\r\n==47836== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.\r\n==47836== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info\r\n==47836== Command: bin/bc -lqc ./tests/bc/sqrt.txt\r\n==47836==\r\n==47836== Invalid write of size 8\r\n==47836== at 0x484C96E: memset (vg_replace_strmem.c:1386)\r\n==47836== by 0x12A28F: bc_int_elementary_mul (num.c:4274)\r\n==47836== by 0x1253AA: bc_int_k_mul (num.c:4327)\r\n==47836== by 0x124972: bc_num_sqrt (num.c:4636)\r\n==47836== by 0x13156F: bc_program_builtin (program.c:1990)\r\n==47836== by 0x12DB0C: bc_program_exec (program.c:3332)\r\n==47836== by 0x13D623: bc_vm_process (vm.c:1046)\r\n==47836== by 0x13CCA5: bc_vm_file (vm.c:1103)\r\n==47836== by 0x13C117: bc_vm_exec (vm.c:1498)\r\n==47836== by 0x13B4E1: bc_vm_boot (vm.c:1718)\r\n==47836== by 0x10C0CC: bc_main (bc.c:62)\r\n==47836== by 0x119995: main (main.c:108)\r\n==47836== Address 0x4aa2270 is 32 bytes inside a block of size 36 alloc'd\r\n==47836== at 0x4840784: malloc (vg_replace_malloc.c:442)\r\n==47836== by 0x13A4C3: bc_vm_malloc (vm.c:810)\r\n==47836== by 0x11BA76: bc_num_init (num.c:3368)\r\n==47836== by 0x1244B1: bc_num_sqrt (num.c:4567)\r\n==47836== by 0x13156F: bc_program_builtin (program.c:1990)\r\n==47836== by 0x12DB0C: bc_program_exec (program.c:3332)\r\n==47836== by 0x13D623: bc_vm_process (vm.c:1046)\r\n==47836== by 0x13CCA5: bc_vm_file (vm.c:1103)\r\n==47836== by 0x13C117: bc_vm_exec (vm.c:1498)\r\n==47836== by 0x13B4E1: bc_vm_boot (vm.c:1718)\r\n==47836== by 0x10C0CC: bc_main (bc.c:62)\r\n==47836== by 0x119995: main (main.c:108)\r\n==47836==\r\n==47836==\r\n==47836== HEAP SUMMARY:\r\n==47836== in use at exit: 0 bytes in 0 blocks\r\n==47836== total heap usage: 1,633 allocs, 1,633 frees, 331,419 bytes allocated\r\n==47836==\r\n==47836== All heap blocks were freed -- no leaks are possible\r\n==47836==\r\n==47836== For lists of detected and suppressed errors, rerun with: -s\r\n==47836== ERROR SUMMARY: 8 errors from 1 contexts (suppressed: 0 from 0)\r\nFAIL!!!\r\nbc failed test 'sqrt' with error code 100\r\n```\r\n\r\nThat needs to be fixed, both the out-of-bounds write and the unaligned write.\r\n\r\nIf you're wondering how much testing I do, do this:\r\n\r\n* Create two clones of your branch in separate directories, which I will call `bc1/` and `bc2/`.\r\n* In `bc1/`, run `scripts/release.sh 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1`.\r\n* In `bc2/`, run `scripts/release.sh 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1`.\r\n* Run them both in separate terminals and at the same time.\r\n* Leave it overnight.\r\n\r\nYep, you heard that last bit right: my full test run is an overnight thing. And I run both because one does `clang`, and one does `gcc`.\r\n\r\nMoving on to benchmarks, I ran\r\n\r\n```\r\n$ CC=clang CFLAGS=-flto ./configure -O3\r\n$ make\r\n```\r\n\r\nin both branches. Then I ran\r\n\r\n```\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_sqrt_small > ../sqrt2_small.txt\r\n```\r\n\r\nin your branch, copied `benchmarks/bc/newton_raphson_sqrt_small.txt` to my branch and ran\r\n\r\n```\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_sqrt_small > ../sqrt1_small.txt\r\n```\r\n\r\nThese are my results:\r\n\r\n```\r\n$ ./scripts/ministat -w 80 -c99.5 -C1 ../sqrt1_small.txt ../sqrt2_small.txt\r\nx ../sqrt1_small.txt\r\n+ ../sqrt2_small.txt\r\n+--------------------------------------------------------------------------------+\r\n| + x |\r\n| + x x |\r\n| + x x |\r\n| + + + x x |\r\n| + + + x x x |\r\n| + + + + x x x |\r\n| + + + + x x x |\r\n| + + + + x x x |\r\n| + + + + x x x |\r\n| + + + + + x x x x x x |\r\n| + + + + + + x x x x x x x |\r\n| + + + + + + x x x x x x x |\r\n|+ + + + + + + * x x x x x x x|\r\n| |________A_M_____| |________MA________| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 1.45 1.52 1.48 1.4806 0.016463937\r\n+ 50 1.38 1.45 1.42 1.4164 0.015220824\r\nDifference at 99.5% confidence\r\n -0.0642 +/- 0.0100677\r\n -4.33608% +/- 0.664237%\r\n (Student's t, pooled s = 0.0158546)\r\n$ ./scripts/ministat -w 80 -c99.5 -C4 ../sqrt1_small.txt ../sqrt2_small.txt\r\nx ../sqrt1_small.txt\r\n+ ../sqrt2_small.txt\r\n+--------------------------------------------------------------------------------+\r\n| + |\r\n| + |\r\n| x + |\r\n| x x + |\r\n| x x + + |\r\n| x x +x + + + |\r\n| x + xx +x + x + + |\r\n| x *+ xx *x++ xx + + + |\r\n| xx +*+xxxx x**++ xx + + + |\r\n|x x xx +*+xxxx x***++xx*x+++++ + ++|\r\n| |__________A_|_______M|A_________| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 18956 19244 19168 19168.16 57.880722\r\n+ 50 19144 19376 19224 19232.88 54.73373\r\nDifference at 99.5% confidence\r\n 64.72 +/- 35.769\r\n 0.337643% +/- 0.186939%\r\n (Student's t, pooled s = 56.3292)\r\n```\r\n\r\nYours was slightly faster and used slightly more memory.\r\n\r\nI ran the same benchmark for large, but only for one sample each, and my numbers say that yours are accurate for that benchmark.\r\n\r\nHowever, I cannot accept code that fails tests or has memory bugs. In addition, because of the test failures, you can expect that I will run a lot more tests on your code before I accept.\r\n\r\nSo I won't close this PR, but you need to fix the problems above (by running that `release.sh` script both ways and fixing every problem) before I'll look at it again.\r\n\r\nAlso, I can't understand `sqrt_2.png`. I can follow `sqrt_1.png`, but I need you to redo `sqrt_2.png` because I also won't accept the code if I don't understand it.", + "createdAt": "2023-12-17T18:09:30Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1859239752", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5u10BR", + "author": { + "login": "naggamura" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "BcNum.len is managed as tight as possible. So clearing upper digits is needed for like sqrt(0.000...000xyz...) \r\nPassed 'make test'\r\n---", + "createdAt": "2023-12-18T05:52:00Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1859600465", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5u12rZ", + "author": { + "login": "naggamura" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Last push was not the latest version. Pushed again.\r\n\r\nAnyway, test again and passed all tests.\r\n\r\n...\r\n==5965== \r\n==5965== HEAP SUMMARY:\r\n==5965== in use at exit: 0 bytes in 0 blocks\r\n==5965== total heap usage: 1,520 allocs, 1,520 frees, 205,685 bytes allocated\r\n==5965== \r\n==5965== All heap blocks were freed -- no leaks are possible\r\n==5965== \r\n==5965== For counts of detected and suppressed errors, rerun with: -v\r\n==5965== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)\r\npass\r\nRunning bc directory test...pass\r\nRunning bc binary file test...pass\r\nRunning bc binary stdin test...pass\r\nRunning bc limits tests...pass\r\n\r\nAll bc tests passed.\r\n\r\n...\r\n...\r\n\r\n==6927== \r\n==6927== HEAP SUMMARY:\r\n==6927== in use at exit: 0 bytes in 0 blocks\r\n==6927== total heap usage: 73 allocs, 73 frees, 37,886 bytes allocated\r\n==6927== \r\n==6927== All heap blocks were freed -- no leaks are possible\r\n==6927== \r\n==6927== For counts of detected and suppressed errors, rerun with: -v\r\n==6927== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)\r\npass\r\nRunning dc directory test...pass\r\nRunning dc binary file test...pass\r\nRunning dc binary stdin test...pass\r\n\r\nAll dc tests passed.\r\n\r\n***********************************************************************\r\n\r\n----", + "createdAt": "2023-12-18T06:05:29Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1859611353", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5u3LdX", + "author": { + "login": "naggamura" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Doing scripts/release.sh test...", + "createdAt": "2023-12-18T09:47:53Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1859958615", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5u_Gjj", + "author": { + "login": "naggamura" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Passed the tests.\r\n\r\nBenchmarks\r\n\r\n[stat_small_c1.txt](https://github.com/gavinhoward/bc/files/13712108/stat_small_c1.txt)\r\n[stat_small_c4.txt](https://github.com/gavinhoward/bc/files/13712109/stat_small_c4.txt)\r\n[stat_large_c1.txt](https://github.com/gavinhoward/bc/files/13712110/stat_large_c1.txt)\r\n[stat_large_c4.txt](https://github.com/gavinhoward/bc/files/13712111/stat_large_c4.txt)\r\n", + "createdAt": "2023-12-19T03:09:54Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1862035683", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5vCDYq", + "author": { + "login": "naggamura" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "sqrt_2.png updated.", + "createdAt": "2023-12-19T13:58:49Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1862809130", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5vFhZX", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I have spent two full days on this since the last time I sent a message. I cannot spend any more time on this; I have a project to finish and a hard deadline.\r\n\r\nSo I have to make a final decision, which is to reject this. Thank you for your contribution, but I guess I don't want it.\r\n\r\nThere are several reasons why:\r\n\r\n* Your code still contains debug code.\r\n* You created your own functions to do things when functions to do those things already exist, which shows lack of research again. And duplication.\r\n* Your proof looks wrong to me, or I still can't understand it.\r\n* Your code passes the test suite, but it did not pass another set of tests I threw at it.\r\n* This is purely a performance PR, which is not really important to me right now.\r\n\r\nBut most of all, and this is nothing against you, I just can't read other people's code. I am unable to build a theory of mind, and this extends to reading code written by other people.\r\n\r\nThere is a reason I tend to do things by myself; I can't work on the code otherwise.\r\n\r\nSo I'm afraid I have run out of time and desire. Sorry.", + "createdAt": "2023-12-20T01:50:17Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/73#issuecomment-1863718487", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2023-12-17T12:30:19Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-17T12:30:19Z", + "messageBody": "", + "messageHeadline": "New bc_num_sqrt function needs only one long division.", + "oid": "a8821844d9f05df15fde8bed92332226e147b151" + }, + { + "authoredDate": "2023-12-18T02:46:18Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-18T02:46:18Z", + "messageBody": "Passed 'sqrt test'", + "messageHeadline": "SQRT fix: post process for numbers like 0.000000...000000xyz...", + "oid": "a4e27bb46a0fc9dc59e51ba5de153b6f2fe55f5d" + }, + { + "authoredDate": "2023-12-18T05:46:38Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-18T05:46:38Z", + "messageBody": "", + "messageHeadline": "SQRT: fixed memory bug. passed 'make test'", + "oid": "f4f8cf72d513f2986bb477d10bcd0fcb520a0e7e" + }, + { + "authoredDate": "2023-12-18T06:01:30Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-18T06:01:30Z", + "messageBody": "", + "messageHeadline": "Commit missed!!! fix again.", + "oid": "1faa1296390f5e689d78c28fa9b434516f47c15d" + }, + { + "authoredDate": "2023-12-18T09:22:18Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-18T09:22:18Z", + "messageBody": "…r running release.sh", + "messageHeadline": "Removed unused variables, explicit type conversion in assignments, fo…", + "oid": "fb9d7b88c60ecdb7ce8bdfe8a11e23d09b2342fb" + }, + { + "authoredDate": "2023-12-18T13:17:09Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-18T13:17:09Z", + "messageBody": "…unning release.sh.\n\nRunning release.sh for this commit now...", + "messageHeadline": "Fixed memory warning(passing NULL with zero length to memcpy) while r…", + "oid": "9f171378fe38619d032107d388eef06519dde4a7" + }, + { + "authoredDate": "2023-12-19T03:08:34Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-19T03:08:34Z", + "messageBody": "…old one!)\n\n2. Passed Valgrind memory test.\n./configure -gO0 -v\nmake\nmake test\n\n3. Passed\nscripts/release.sh 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1\non Ubuntu 18.04.2 LTS", + "messageHeadline": "1. Simple multiplication modified based on Gavin's (much better than …", + "oid": "2b3616586454f315a5014360f7f7d5d36f10bd9a" + }, + { + "authoredDate": "2023-12-19T13:57:21Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-19T13:57:21Z", + "messageBody": "", + "messageHeadline": "Proof related to sqrt approximation updated.", + "oid": "2d7b8fe4efe528076a568b0f174c35a53e47ae93" + } + ], + "createdAt": "2023-12-17T13:16:03Z", + "deletions": 72, + "files": [ + { + "path": "sqrt_1.png", + "additions": 0, + "deletions": 0 + }, + { + "path": "sqrt_2.png", + "additions": 0, + "deletions": 0 + }, + { + "path": "src/num.c", + "additions": 657, + "deletions": 72 + } + ], + "fullDatabaseId": "1647316989", + "headRefName": "master", + "headRefOid": "2d7b8fe4efe528076a568b0f174c35a53e47ae93", + "headRepository": null, + "headRepositoryOwner": { + "id": "U_kgDOB2enHg", + "login": "naggamura" + }, + "id": "PR_kwDOCL0xJc5iMA_9", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 73, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "New bc_num_sqrt function needs only one long division.", + "updatedAt": "2023-12-20T01:50:17Z", + "url": "https://github.com/gavinhoward/bc/pull/73" + }, + { + "additions": 831, + "assignees": [], + "author": { + "id": "U_kgDOB2enHg", + "is_bot": false, + "login": "naggamura", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "5ee6a05918bd8341a7ed97d6594862ad5d713557", + "body": "Newton-Raphson approximation is applied to division and sqrt.\r\nTry 5^1000000 / 2^1000000 and sort(5^999999)\r\n", + "changedFiles": 3, + "closed": true, + "closedAt": "2023-12-14T04:47:11Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5uku2Q", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for your PR. I have some comments.\r\n\r\n* If you run `CC=clang ./configure.sh -pDBG; make`, my regular debug build, the build fails.\r\n* If you run `CC=clang ./configure.sh -pGDH; make`, my regular release build, the build fails.\r\n* If you run `CC=gcc CFLAGS=\"-pedantic -Wextra -Werror\" ./configure -O3; make`, the build fails.\r\n* If you run `CC=clang ./configure -gO3; make; make test`, a release build with debug information, the build succeeds, but the test suite fails on an assert.\r\n* You have functions that have reserved names (names that begin with an underscore); using those names is undefined behavior.\r\n* You did not follow my style even though there is a script (`scripts/format.sh`) that will style the code for you.\r\n\r\nIn addition, I can unfortunately tell that you did no research into my `bc`. If you had, you would know that [I already use Newton-Raphson for `sqrt()`][1].\r\n\r\nHowever, all of that could be safely discarded if the code shows promise. So I wrote [benchmarks to test your new code][2].\r\n\r\nI ran these commands with my code:\r\n\r\n```\r\n$ CC=clang CFLAGS=-flto ./configure -O3\r\n$ make\r\n```\r\n\r\nThen I ran the benchmarks as follows:\r\n\r\n```\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_div_small > ../div1_small.txt\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_div_large > ../div1_large.txt\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_sqrt_small > ../sqrt1_small.txt\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_sqrt_large > ../sqrt1_large.txt\r\n```\r\n\r\nThen I repeated the steps with your code:\r\n\r\n```\r\n$ CC=clang CFLAGS=-flto ./configure -O3\r\n$ make\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_div_small > ../div2_small.txt\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_div_large > ../div2_large.txt\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_sqrt_small > ../sqrt2_small.txt\r\n$ ./scripts/benchmark.sh -p1 -n50 bc newton_raphson_sqrt_large > ../sqrt2_large.txt\r\n```\r\n\r\nThe `small` benchmarks test the operation on \"small\" numbers (below `2^64`), and the `large` benchmarks test the operation on large numbers (a small number to a power up to 1,000,000).\r\n\r\nTo test how your code did, I used `ministat` in the repo, so I ran this:\r\n\r\n```\r\n$ make ministat\r\n```\r\n\r\nThen to test the time difference on `div_small`, I ran the following:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c95 -C1 ../div1_small.txt ../div2_small.txt\r\nx ../div1_small.txt\r\n+ ../div2_small.txt\r\n+--------------------------------------------------------------------------------+\r\n| + x |\r\n| + + x * |\r\n| + + * * x |\r\n| + * * * x |\r\n| + * * * x |\r\n| + * * * x |\r\n| * * * * x + |\r\n| * * * * * x + x |\r\n|* * * * * * x * + x |\r\n|* * * * * * * * * x x + +|\r\n||____|____M_AA______|___| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 3.41 3.52 3.45 3.4504 0.024071323\r\n+ 50 3.41 3.67 3.44 3.4484 0.039967334\r\nNo difference proven at 95.0% confidence\r\n```\r\n\r\nAs you can tell, there's no difference at the lowest confidence I can accept.\r\n\r\nTo test the memory difference (max RSS) for `div_small`, I ran the following:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c95 -C4 ../div1_small.txt ../div2_small.txt\r\nx ../div1_small.txt\r\n+ ../div2_small.txt\r\n+--------------------------------------------------------------------------------+\r\n| x x x+ + + x +xx xx ++ |\r\n| x x + x * x+ +++ ++ x x *+ +xx xx ++ + x + |\r\n|xx x +++ + + x x*x x* *++ ++ x x +x ** +** ** x++ +* +x + +xx ++|\r\n| |_____|_____________A____A_M___________|___| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 34792 35000 34912 34896.88 55.262136\r\n+ 50 34808 35016 34916 34910 52.956663\r\nNo difference proven at 95.0% confidence\r\n```\r\n\r\nNo memory difference. Cool.\r\n\r\nFor the elapsed time for `div_large`:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c99.5 -C1 ../div1_large.txt ../div2_large.txt\r\nx ../div1_large.txt\r\n+ ../div2_large.txt\r\n+--------------------------------------------------------------------------------+\r\n| x + |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| x ++ |\r\n| xx ++ |\r\n| xx ++ |\r\n| xx ++ |\r\n| xx ++ |\r\n| xx ++ |\r\n| xx +++ |\r\n| xx ++++ |\r\n| xx ++++ |\r\n| xxx ++++ |\r\n| xxx x ++++++|\r\n||____MA_____| |A| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 13.72 21.71 13.845 14.013 1.1141964\r\n+ 50 26.7 27.64 27.005 27.0158 0.17722452\r\nDifference at 99.5% confidence\r\n 13.0028 +/- 0.506578\r\n 92.791% +/- 6.90636%\r\n (Student's t, pooled s = 0.79776)\r\n```\r\n\r\nAs you can see, there *is* a difference, with *99.5% confidence*, but in favor of the *old code*. In fact, if not for the one outlier, your code would be twice as slow.\r\n\r\nAnd if we look at the max RSS difference for `div_large`:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c99.5 -C4 ../div1_large.txt ../div2_large.txt\r\nx ../div1_large.txt\r\n+ ../div2_large.txt\r\n+--------------------------------------------------------------------------------+\r\n| + |\r\n| + |\r\n| + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| xx + |\r\n| xx ++|\r\n| xx +++|\r\n|xxx +++|\r\n|xxx +++|\r\n|xxx +++|\r\n|xxx +++|\r\n|xxx +++|\r\n|xxx +++|\r\n|xxx x +++|\r\n|xxxxx +++|\r\n||A| |A||\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 8716 8968 8796 8802.72 57.549638\r\n+ 50 13812 13960 13888 13890.08 41.837314\r\nDifference at 99.5% confidence\r\n 5087.36 +/- 31.9473\r\n 57.793% +/- 0.51%\r\n (Student's t, pooled s = 50.3106)\r\n```\r\n\r\nYour code uses 50% more memory, with 99.5% confidence.\r\n\r\nMoving onto `sqrt_small`, for elapsed time, I got this:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c99.5 -C1 ../sqrt1_small.txt ../sqrt2_small.txt\r\nx ../sqrt1_small.txt\r\n+ ../sqrt2_small.txt\r\n+--------------------------------------------------------------------------------+\r\n| x + |\r\n| xx + |\r\n| xx + |\r\n| xx + |\r\n| xx + + |\r\n| xx ++++ |\r\n| xx ++++ |\r\n|xxx ++++ |\r\n|xxx ++++ |\r\n|xxxx +++++ |\r\n|xxxx +++++ |\r\n|xxxx +++++ |\r\n|xxxxx +++++ |\r\n|xxxxx x +++++++ +|\r\n| MA| |_A_| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 1.47 1.6 1.5 1.5072 0.023822473\r\n+ 50 3.07 3.26 3.14 3.1452 0.036153866\r\nDifference at 99.5% confidence\r\n 1.638 +/- 0.0194408\r\n 108.678% +/- 1.83123%\r\n (Student's t, pooled s = 0.0306155)\r\n```\r\n\r\nYour code is twice as slow with 99.5% confidence.\r\n\r\nFor memory on `sqrt_small`, I got this:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c99.5 -C4 ../sqrt1_small.txt ../sqrt2_small.txt\r\nx ../sqrt1_small.txt\r\n+ ../sqrt2_small.txt\r\n+--------------------------------------------------------------------------------+\r\n| xx + x |\r\n| x xx + x x ++ |\r\n| x x x xx + + x x ++ |\r\n| x xxxx x xxx++ + x x +x x +++ ++ + |\r\n|xx + x x + + xxxxx + + +* *xx***+++ x+xx++***++++ ++++ ++++|\r\n| |_____________|__M__________|A_M____________| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 18964 19252 19176 19160.4 68.353224\r\n+ 50 19004 19344 19242 19231.68 71.990203\r\nDifference at 99.5% confidence\r\n 71.28 +/- 44.574\r\n 0.372017% +/- 0.233047%\r\n (Student's t, pooled s = 70.1953)\r\n```\r\n\r\nSo there's a small increase of memory in your code, even at 99.5% confidence, but that's small enough that I can ignore it.\r\n\r\nFor time on `sqrt_large`, I got this:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c99.5 -C1 ../sqrt1_large.txt ../sqrt2_large.txt\r\nx ../sqrt1_large.txt\r\n+ ../sqrt2_large.txt\r\n+--------------------------------------------------------------------------------+\r\n| xx + |\r\n| xx ++ |\r\n| xx +++ |\r\n| xx +++ |\r\n| xx +++ |\r\n| xx +++ |\r\n| xx ++++ |\r\n| xx ++++ |\r\n| xxx +++++ |\r\n|xxxx +++++ |\r\n|xxxx +++++ |\r\n|xxxx +++++ |\r\n|xxxxx +++++++|\r\n| |A| |A_| |\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 176.9 184.63 180.565 180.403 1.6383681\r\n+ 50 327.42 339.26 331.24 331.3832 2.8256482\r\nDifference at 99.5% confidence\r\n 150.98 +/- 1.4666\r\n 83.6905% +/- 1.02747%\r\n (Student's t, pooled s = 2.3096)\r\n```\r\n\r\nYour code is *almost* twice as slow at 99.5% confidence.\r\n\r\nFor memory on `sqrt_large`, I got this:\r\n\r\n```\r\n$ ./scripts/ministat -w80 -c99.5 -C4 ../sqrt1_large.txt ../sqrt2_large.txt\r\nx ../sqrt1_large.txt\r\n+ ../sqrt2_large.txt\r\n+--------------------------------------------------------------------------------+\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x + |\r\n| x ++|\r\n| x ++|\r\n| x ++|\r\n| x ++|\r\n| x ++|\r\n| x ++|\r\n| x ++|\r\n|xx ++|\r\n|xx ++|\r\n|xx ++|\r\n|xx ++|\r\n|xx ++|\r\n|xxx ++|\r\n|xxx ++|\r\n||A A||\r\n+--------------------------------------------------------------------------------+\r\n N Min Max Median Avg Stddev\r\nx 50 6952 7156 7044 7046.48 42.561955\r\n+ 50 15412 15568 15496 15485.84 51.175313\r\nDifference at 99.5% confidence\r\n 8439.36 +/- 29.887\r\n 119.767% +/- 0.679408%\r\n (Student's t, pooled s = 47.0661)\r\n```\r\n\r\nYour code uses twice as much memory at 99.5% confidence.\r\n\r\nSo on average, your code is twice as slow and uses more memory.\r\n\r\nUnfortunately, based on the poor performance of your code compared to what already exists, I can't say that it shows promise.\r\n\r\nCombined with the problems I mentioned at the beginning, I'm afraid I must reject this PR completely. Sorry.\r\n\r\n[1]: https://github.com/gavinhoward/bc/blob/master/manuals/algorithms.md#square-root\r\n[2]: https://github.com/gavinhoward/bc/commit/fcbe9d68ccc964fda12457ebbf687a27f57ff31f", + "createdAt": "2023-12-14T04:47:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + }, + { + "content": "EYES", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/pull/72#issuecomment-1855122832", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2023-12-11T20:27:06Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-11T20:27:06Z", + "messageBody": "", + "messageHeadline": "div, sqrt improved using Newton-Raphson algorithm.", + "oid": "d6e0849220eea59ff7b380dfc779a43a33a234d1" + }, + { + "authoredDate": "2023-12-12T11:49:47Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-12T11:49:47Z", + "messageBody": "", + "messageHeadline": "Make secure more", + "oid": "7a1cd5f7667308300e7f9db46b1827fbc1dc2703" + }, + { + "authoredDate": "2023-12-13T13:53:11Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-13T13:53:11Z", + "messageBody": "", + "messageHeadline": "markdown test", + "oid": "1f0cce37b56205fbc24db847d184ce452bfdb8fa" + }, + { + "authoredDate": "2023-12-13T16:30:08Z", + "authors": [ + { + "email": "jonathan@acryl.ai", + "id": "U_kgDOB2enHg", + "login": "naggamura", + "name": "jonathan" + } + ], + "committedDate": "2023-12-13T16:30:08Z", + "messageBody": "", + "messageHeadline": "Newton-Raphson div, sqrt", + "oid": "248e3b9b34cf4893f6440c169584592fc78f6090" + } + ], + "createdAt": "2023-12-13T16:38:28Z", + "deletions": 50, + "files": [ + { + "path": "newton-raphson-div.png", + "additions": 0, + "deletions": 0 + }, + { + "path": "newton-raphson-sqrt.png", + "additions": 0, + "deletions": 0 + }, + { + "path": "src/num.c", + "additions": 831, + "deletions": 50 + } + ], + "fullDatabaseId": "1642781993", + "headRefName": "newton-raphson", + "headRefOid": "248e3b9b34cf4893f6440c169584592fc78f6090", + "headRepository": null, + "headRepositoryOwner": { + "id": "U_kgDOB2enHg", + "login": "naggamura" + }, + "id": "PR_kwDOCL0xJc5h6t0p", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 72, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "Newton-Raphson divison, sqrt", + "updatedAt": "2023-12-14T04:47:11Z", + "url": "https://github.com/gavinhoward/bc/pull/72" + }, + { + "additions": 337, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjgwNzU4MA==", + "is_bot": false, + "login": "SamuelMarks", + "name": "Samuel Marks" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "3f4c8cc5f86092fa4a8d59bc99d8f10ad2894cf0", + "body": "WiP\r\n\r\nCan finish if you like. Can also send you a PR on your own website, just make me an account", + "changedFiles": 19, + "closed": true, + "closedAt": "2025-03-25T05:20:50Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5kTkGI", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for the PR!\r\n\r\nAllow me to I apologize upfront. Usually, I do not question user requests; after all, there is a user, and they have a request, so obviously, there is a need or a want.\r\n\r\n*However*, personally, [I ***hate*** CMake][1]. I hate it so much that I have spent *three years* designing and implementing a build system to remove it from my [other project][2], a build system that would allow building on Windows, Mac OSX, Linux, the BSD's, etc. And I was going to add support for that build system to `bc`, which I hoped would remove any need for people to use CMake to build `bc` cross-platform.\r\n\r\nSo, I apologize because I can tell you put a lot of work into this, but for once, I am asking you to provide justification. I won't ask for much; I just need to know why CMake is necessary and why you believe that keeping a fork would not serve. (Since a separate build system won't touch the code, it seems like an easy fork to keep.)\r\n\r\nAgain, I'm sorry.\r\n\r\nAlso, if I do decide to merge, I'm going to need you to explain the more complicated bits; I've tried to avoid complicated CMake as much as possible. But I need to be able to maintain the CMake code without your help.\r\n\r\n[1]: https://news.ycombinator.com/item?id=36469860\r\n[2]: https://git.yzena.com/Yzena/Yc", + "createdAt": "2023-08-17T19:34:43Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-1682850184", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5kVWMk", + "author": { + "login": "SamuelMarks" + }, + "authorAssociation": "NONE", + "body": "@gavinhoward I'm obsessed with interoperability. CMake is one way to achieve this. Open to your build system also, where I plan on taking `bc` to:\r\n- Windows (different MSVC versions);\r\n- MinGW (x86, x64, …)\r\n- DOS (via OpenWatcom and maybe via early MSVC versions)\r\n- Cygwin\r\n- Linux\r\n- macOS\r\n- iOS\r\n- Android\r\n- SunOS (Solaris→OpenSolaris→illumos→OpenIndiana)\r\n- *BSD (FreeBSD, OpenBSD, …)\r\n\r\n…and yes I know you support some of these targets already.\r\n\r\nThere are some other nice advantages like CPack and CTest, but honestly there are a number of other nice build generators out there and I tend to choose CMake just because it's the most popular and has a good number of generators.", + "createdAt": "2023-08-18T04:01:35Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-1683317540", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5kVpyv", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Okay, interoperability is something I can understand. But oh boy, I would love it if my build system could do all that.\r\n\r\nThat said, my build system (named Rig, by the way) won't be able to cross-compile in the first release, so some of those targets may not be possible in the first release of Rig. (OpenWatcom is the one that makes me most nervous.)\r\n\r\nSo I'll make you a deal. I'll do these things:\r\n\r\n1. Merge your PR,\r\n2. Set up Rig in my `bc` once it's ready,\r\n3. Write you a tutorial on how to use Rig for `bc`, and\r\n4. Help you understand the new build scripts,\r\n\r\nas long as you'll do the following:\r\n\r\n1. Give me your contact info because this is a pretty big commitment, and I want to be able to ask you questions, if at all possible (you can use the info at <https://gavinhoward.com/contact/> to send me that info privately),\r\n2. Point me to material that will help me set up environments for all of those platforms (so I can test `bc` and CMake on them myself),\r\n3. Explain to me any CMake code I don't understand (I'll make them reviews in the PR),\r\n4. Learn how to use Rig for `bc` once it's ready (I don't care if you use it for anything else), and\r\n5. At that point, give me your honest opinion if Rig can fully replace the CMake build.\r\n\r\nIf it can, I'd ***really*** like to remove the CMake then. If it can't, well, it can't, and CMake will stay in perpetuity.\r\n\r\nIn other words, I'll add CMake now if you'll give Rig a fair shake later.\r\n\r\nOh, and point number 2 is crucial; if I can't test `bc` on those platforms with CMake, I won't merge the PR because I would basically be committing to supporting those platforms by merging the PR, and I can't do that without the ability to test.\r\n\r\nBy the way, I only need to know how to set up environments for:\r\n\r\n* Windows (specifically different MSVC versions because I can already compile on the latest Windows 10);\r\n* MinGW\r\n* DOS (via OpenWatcom and maybe via early MSVC versions)\r\n* Cygwin\r\n* iOS (do I need a Mac computer?)\r\n* Android\r\n* SunOS (Solaris, OpenSolaris, illumos, OpenIndiana)\r\n\r\nI have the capability for the rest.", + "createdAt": "2023-08-18T06:04:29Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-1683397807", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5kX99Z", + "author": { + "login": "SamuelMarks" + }, + "authorAssociation": "NONE", + "body": "Great yeah sure I'll give it a shot. No guaranteed time commitments (because of everything going on in my life); but I'll see what I can do.\r\n\r\nMy email is samuel` `at symbol offscale.io; or you can use myfirstname mylastname` `at symbol gmail.com.\r\n\r\nI wrote some Windows Batch scripts for building on these different targets, and lots of things can run in a good CI/CD environment (e.g., GitHub Actions, Cirrus CI, &etc.): https://github.com/offscale/win-cmake-multi-build\r\n\r\nObviously still a ways to go to support all the different targets I'm interested in. But yeah something clean like your `bc` might be just complicated enough to test out my interoperability", + "createdAt": "2023-08-18T14:29:25Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-1684004697", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5kcbRH", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Okay. Thank you.\r\n\r\nPlease let me know when this PR is not WIP.", + "createdAt": "2023-08-20T04:29:28Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-1685173319", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5kc7km", + "author": { + "login": "SamuelMarks" + }, + "authorAssociation": "NONE", + "body": "Sure thing, I'll see if I can get to it later in the week. Last remaining errors:\r\n```\r\nbc.c.obj : error LNK2001: unresolved external symbol _bc_help\r\nvm.c.obj : error LNK2001: unresolved external symbol _bc_lib\r\nvm.c.obj : error LNK2001: unresolved external symbol _bc_lib_name\r\nvm.c.obj : error LNK2001: unresolved external symbol _bc_lib2\r\nvm.c.obj : error LNK2001: unresolved external symbol _bc_lib2_name\r\n```\r\n\r\nWhich should be defined in an object file that you define in your existent configure script:\r\n```sh\r\ncontents=$(replace \"$contents\" \"BC_HELP_O\" \"$bc_help\")\r\n```\r\n\r\nSo I just need to reverse-engineer it into CMake and we should be good to go™.", + "createdAt": "2023-08-20T14:58:39Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-1685305638", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc6j64Rc", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "It's been a year and a half, unfortunately, with no word since then.\r\n\r\nHowever, I have not stood still. I have [added][1] [Rig][2] [to `bc`][3], and I have [implemented the entire test suite in Rig][4].\r\n\r\nIn addition, Rig has the ability to cross compile now, and it will deactivate the tests under those conditions.\r\n\r\nSo because no progress has been made with CMake, and Rig is now working (except on Windows, but the only thing left is getting itself to bootstrap itself), I am rejecting this PR in favor of Rig.\r\n\r\n[1]: https://github.com/gavinhoward/bc/blob/master/build.gaml\r\n[2]: https://github.com/gavinhoward/bc/blob/master/build.rig\r\n[3]: https://github.com/gavinhoward/bc/blob/master/build.pkg.rig\r\n[4]: https://github.com/gavinhoward/bc/commit/77fcd66898f754cb1dbce262c6c0efd0879f855c", + "createdAt": "2025-03-25T05:20:50Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/68#issuecomment-2750121052", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2023-08-17T18:47:20Z", + "authors": [ + { + "email": "807580+SamuelMarks@users.noreply.github.com", + "id": "MDQ6VXNlcjgwNzU4MA==", + "login": "SamuelMarks", + "name": "Samuel Marks" + } + ], + "committedDate": "2023-08-17T18:47:20Z", + "messageBody": "", + "messageHeadline": "CMake support (initial)", + "oid": "4256fe30a6eee88983bbe39b606a793a47b96ec0" + }, + { + "authoredDate": "2023-08-17T20:06:53Z", + "authors": [ + { + "email": "807580+SamuelMarks@users.noreply.github.com", + "id": "MDQ6VXNlcjgwNzU4MA==", + "login": "SamuelMarks", + "name": "Samuel Marks" + } + ], + "committedDate": "2023-08-17T20:06:53Z", + "messageBody": "", + "messageHeadline": "Improve CMake suppoprt and remove extraneous code & files", + "oid": "63e687a593ca72430a23216ab35eb897a4677b36" + }, + { + "authoredDate": "2023-08-18T21:02:52Z", + "authors": [ + { + "email": "807580+SamuelMarks@users.noreply.github.com", + "id": "MDQ6VXNlcjgwNzU4MA==", + "login": "SamuelMarks", + "name": "Samuel Marks" + } + ], + "committedDate": "2023-08-18T21:02:52Z", + "messageBody": "", + "messageHeadline": "Improve CMake support", + "oid": "a2e95a6e697fa9d6557a16c17ad6bf8d048b5bd3" + }, + { + "authoredDate": "2023-08-19T00:43:54Z", + "authors": [ + { + "email": "807580+SamuelMarks@users.noreply.github.com", + "id": "MDQ6VXNlcjgwNzU4MA==", + "login": "SamuelMarks", + "name": "Samuel Marks" + } + ], + "committedDate": "2023-08-19T00:43:54Z", + "messageBody": "", + "messageHeadline": "Improve CMake support", + "oid": "b945314d5edcb660bc286f63e60a5a63697b9ee4" + } + ], + "createdAt": "2023-08-17T18:49:48Z", + "deletions": 17, + "files": [ + { + "path": ".gitignore", + "additions": 3, + "deletions": 0 + }, + { + "path": "CMakeLists.txt", + "additions": 123, + "deletions": 0 + }, + { + "path": "bcl.pc.in", + "additions": 1, + "deletions": 1 + }, + { + "path": "cmake/BundleIcon.icns", + "additions": 0, + "deletions": 0 + }, + { + "path": "cmake/CTestConfig.cmake", + "additions": 7, + "deletions": 0 + }, + { + "path": "cmake/Config.cmake.in", + "additions": 4, + "deletions": 0 + }, + { + "path": "cmake/CustomVolumeIcon.icns", + "additions": 0, + "deletions": 0 + }, + { + "path": "cmake/Info.plist", + "additions": 14, + "deletions": 0 + }, + { + "path": "cmake/MultiCPackConfig.cmake", + "additions": 6, + "deletions": 0 + }, + { + "path": "cmake/README.txt", + "additions": 5, + "deletions": 0 + }, + { + "path": "cmake/Welcome.txt", + "additions": 1, + "deletions": 0 + }, + { + "path": "cmake/config.h.in", + "additions": 11, + "deletions": 0 + }, + { + "path": "include/bc.h", + "additions": 8, + "deletions": 7 + }, + { + "path": "include/dc.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/history.h", + "additions": 6, + "deletions": 4 + }, + { + "path": "include/read.h", + "additions": 2, + "deletions": 1 + }, + { + "path": "include/vm.h", + "additions": 10, + "deletions": 2 + }, + { + "path": "src/CMakeLists.txt", + "additions": 134, + "deletions": 0 + }, + { + "path": "src/vm.c", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "1479523420", + "headRefName": "cmake", + "headRefOid": "b945314d5edcb660bc286f63e60a5a63697b9ee4", + "headRepository": { + "id": "R_kgDOKIWfvQ", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjgwNzU4MA==", + "name": "Samuel Marks", + "login": "SamuelMarks" + }, + "id": "PR_kwDOCL0xJc5YL7xc", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "DIRTY", + "mergeable": "CONFLICTING", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 68, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "CMake support", + "updatedAt": "2025-03-25T05:20:51Z", + "url": "https://github.com/gavinhoward/bc/pull/68" + }, + { + "additions": 5, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjc0MTgyNg==", + "is_bot": false, + "login": "dorjechang", + "name": "alexander naumochkin" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "71fa3cd4029d416a5272b262736c4d6ab709b6ce", + "body": "Casting int -1 to size_t produces SIZE_T_MAX so\r\nBC_NUM_PRINT_WIDTH is used instead of 0", + "changedFiles": 1, + "closed": true, + "closedAt": "2023-03-15T16:06:35Z", + "comments": [], + "commits": [ + { + "authoredDate": "2023-03-15T12:46:29Z", + "authors": [ + { + "email": "alexander.naumochkin@gmail.com", + "id": "MDQ6VXNlcjc0MTgyNg==", + "login": "dorjechang", + "name": "ash" + } + ], + "committedDate": "2023-03-15T12:46:29Z", + "messageBody": "Casting int -1 to size_t produces SIZE_T_MAX so\nBC_NUM_PRINT_WIDTH is used instead of 0", + "messageHeadline": "Fix incorrect processing of env:BC_LINE_LENGTH=0", + "oid": "31042aed8426850187b43d7e639f244354da0d6c" + } + ], + "createdAt": "2023-03-15T13:08:07Z", + "deletions": 2, + "files": [ + { + "path": "src/vm.c", + "additions": 5, + "deletions": 2 + } + ], + "fullDatabaseId": "1276831340", + "headRefName": "fix_BC_LINE_LENGTH=0", + "headRefOid": "31042aed8426850187b43d7e639f244354da0d6c", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjc0MTgyNg==", + "name": "alexander naumochkin", + "login": "dorjechang" + }, + "id": "PR_kwDOCL0xJc5MGuZs", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "0c42c52dfc0735026cb6d2534dc24436ff19778f" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2023-03-15T16:06:35Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 65, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Fix incorrect processing of env:BC_LINE_LENGTH=0", + "updatedAt": "2023-03-15T16:06:35Z", + "url": "https://github.com/gavinhoward/bc/pull/65" + }, + { + "additions": 16, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "is_bot": false, + "login": "firasuke", + "name": "Firas Khalil Khana" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "2ed62ba26831b34cae22b9e7b2f1dd2f3a74b541", + "body": "", + "changedFiles": 1, + "closed": true, + "closedAt": "2022-11-26T15:16:46Z", + "comments": [], + "commits": [ + { + "authoredDate": "2022-11-26T10:30:09Z", + "authors": [ + { + "email": "firasuke@gmail.com", + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "login": "firasuke", + "name": "Firas Khalil Khana" + } + ], + "committedDate": "2022-11-26T10:30:09Z", + "messageBody": "", + "messageHeadline": "Mention MAN3DIR in build.md", + "oid": "f62ecdabc44ca2ed32f7f0895a78099919038da9" + } + ], + "createdAt": "2022-11-26T10:30:59Z", + "deletions": 7, + "files": [ + { + "path": "manuals/build.md", + "additions": 16, + "deletions": 7 + } + ], + "fullDatabaseId": "1136437158", + "headRefName": "master", + "headRefOid": "f62ecdabc44ca2ed32f7f0895a78099919038da9", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "name": "Firas Khalil Khana", + "login": "firasuke" + }, + "id": "PR_kwDOCL0xJc5DvKem", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "09247332bf9dafef6840864598c93df92ebc0820" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2022-11-26T15:16:46Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 57, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Mention MAN3DIR in build.md", + "updatedAt": "2022-11-26T15:16:46Z", + "url": "https://github.com/gavinhoward/bc/pull/57" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjU3MDUxMDY4", + "is_bot": false, + "login": "pacordova", + "name": "Paul Cordova" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "4355599e9a59834098ed18e670b90cec2b84120d", + "body": "On POSIX systems, `find` may have indeterministic output (I believe based on the inode on the filesystem).\r\n`sort` is needed to ensure the output is deterministic.\r\n\r\nIn my builds, this resulted in the build order in the generated `Makefile` changing around.\r\nThus building on a fresh partition made with `mkfs.ext4` would result in the binary being different each time.\r\nThe compiled binary code in the`bc` binary shuffled around depending on which files were built first.\r\nPossibly the build order in the Makefile was affecting the order in which files were linked?\r\n\r\nI added `LC_ALL=C` recommended by reproducible-builds.org. \r\nSee below for reference:\r\n- [https://reproducible-builds.org/docs/archives/](https://reproducible-builds.org/docs/archives/)\r\n- [https://reproducible-builds.org/docs/stable-inputs/](https://reproducible-builds.org/docs/stable-inputs/)", + "changedFiles": 1, + "closed": true, + "closedAt": "2022-08-03T02:35:23Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5Huq4A", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "The only hangup I would have had is if the way you did it was not portable to POSIX `sh`. I consulted the standard, and your solution is portable!\r\n\r\nI agree that reproducible builds are *very* important. So thank you for your contribution! I have accepted it, and it will be in the release out in a day or two. I just have to make sure everything builds correctly.", + "createdAt": "2022-08-03T02:37:10Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/54#issuecomment-1203416576", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5HuvNl", + "author": { + "login": "pacordova" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "No problem! Thank you for accepting my pull request!\r\nOne additional comment:\r\nWith this change I do get reproducible builds, although I do not use `-flto`\r\nYour recommended optimization of `-O3` I think should be ok, but I do know that Link Time Optimization (LTO) and Profile Guided Optimization (PGO) can both potentially break build determinism.\r\nEither way the end user should be able get reproducible builds if they want it with this change.\r\nThe CFLAGS I was testing with were `CFLAGS='-march=x86-64 -pipe -Os -fstack-protector-strong -fstack-clash-protection'` with GCC 11.2.0.", + "createdAt": "2022-08-03T03:13:48Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/54#issuecomment-1203434341", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5Hwkv2", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you!", + "createdAt": "2022-08-03T12:57:26Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/54#issuecomment-1203915766", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2022-08-02T16:49:50Z", + "authors": [ + { + "email": "pac3nc@virginia.edu", + "id": "MDQ6VXNlcjU3MDUxMDY4", + "login": "pacordova", + "name": "pac" + } + ], + "committedDate": "2022-08-02T16:49:50Z", + "messageBody": "find has indeterministic output based on the inode on the filesystem,\nso sort is needed to ensure the output is deterministic", + "messageHeadline": "improve reproducibility", + "oid": "8c7d5fa125dae5049427cb9b0ddc9ee7bbf099b4" + }, + { + "authoredDate": "2022-08-02T23:00:34Z", + "authors": [ + { + "email": "pac3nc@virginia.edu", + "id": "MDQ6VXNlcjU3MDUxMDY4", + "login": "pacordova", + "name": "pac" + } + ], + "committedDate": "2022-08-02T23:00:34Z", + "messageBody": "", + "messageHeadline": "remove -z", + "oid": "6ea4d12e2f11e0ce0bed779d991a17230db3a889" + } + ], + "createdAt": "2022-08-02T17:17:46Z", + "deletions": 1, + "files": [ + { + "path": "configure.sh", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "1015375109", + "headRefName": "reproducible_builds", + "headRefOid": "6ea4d12e2f11e0ce0bed779d991a17230db3a889", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjU3MDUxMDY4", + "name": "Paul Cordova", + "login": "pacordova" + }, + "id": "PR_kwDOCL0xJc48hWUF", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "71215b0eb1c20aa622bd77e664ad7f099b349e91" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2022-08-03T02:35:23Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 54, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Improve Reproducibility (Reproducible Builds)", + "updatedAt": "2022-08-03T12:57:26Z", + "url": "https://github.com/gavinhoward/bc/pull/54" + }, + { + "additions": 11, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQxMzkwMDY=", + "is_bot": false, + "login": "bsdimp", + "name": "Warner Losh" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "cad172d8f0962f47b08007beedc8f4637618ffe6", + "body": "The historic gnu bc behavior was to have ^D be delete next character if\r\nthere were any characters in the input, or end of file if there\r\nweren't. This matches what emacs users expect for editing the command\r\nline. Implement this by assuming end of file if the input is empty, and\r\ndelete forward character if it isn't.\r\n\r\nSigned-off-by: Warner Losh <imp@bsdimp.com>", + "changedFiles": 1, + "closed": true, + "closedAt": "2022-04-29T14:06:09Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc5CTTkH", + "author": { + "login": "bsdimp" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "I've been using this change in my tree for a while now since FreeBSD merged the Howard bc. If there's a way to write a test case for it, please let me know.\r\n\r\nTo test it out, it's simple: 123^B^D^M should leave you in bc and produce the answer 12. Current behavior is to exit after printing 123.", + "createdAt": "2022-04-28T15:36:16Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1112357127", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5CVMF_", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for this submission. I have tested it, and it works as advertised. It does require a tweak to the test suite to get all of the tests to pass.\r\n\r\nHowever, there are two hangups.\r\n\r\nFirst, if I do merge this, I'm not sure it warrants another release by itself; it might be better to wait until some other change comes along.\r\n\r\nSecond, this does change the behavior of `bc` and would require a major version bump. This is also the biggest reason for wanting at least one other change; this is a small change that requires a big version bump, and I'd want something big.\r\n\r\nBut the fact that it changes behavior also gives me pause. I don't know how many people depend on the `^D` behavior for end-of-file, even when there's input, and I hesitate to make this change without knowing the numbers.\r\n\r\nHowever, I would be satisfied with just a survey of FreeBSD users, which should be the biggest portion of my userbase. (Not many Linux distros have my `bc`, and history is not available on Windows.) That is, I would be satisfied if the survey showed that the vast majority of the FreeBSD users who respond either don't care or agree with the change.\r\n\r\nI would also be satisfied with the blessing of my regular FreeBSD contact, Stefan Esser, who I believe has a good handle on what changes would be okay to make.\r\n\r\nIf you can give me either one of those two things, I'll merge. If Stefan even gives a blessing for a release, I'll do that too.", + "createdAt": "2022-04-29T03:47:48Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1112850815", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5CW3df", + "author": { + "login": "bsdimp" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Since it's only in the command history editing, I'm having trouble understanding how it would affect tests or other input since that code path appears to be disabled when we aren't reading from a tty.\r\n\r\nAnd even if it didn't, ^D on Unix is only a tty signal of EOF. It's not used at the end of files to signify EOF, which is done by zero read.\r\n\r\nFreeBSD used gnu bc since 1998. It has the behavior I've implemented for the past at least 24 years, so it wouldn't be unreasonable to assume that it's what FreeBSD users that care one way or the other would want. Once you've started to edit the text on the line, you don't want to terminate the program and get an answer for the partially edited line.\r\n\r\nI'd argue that this is a mere bug fix to make things more compatible with bc and isn't such a gross behavior change as to warrant a major release bump, but that's just my sensibilities.\r\n\r\nI'm OK waiting on a release. I'll also chat with Stefan as well about this point.", + "createdAt": "2022-04-29T13:07:47Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1113290591", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5CXG7p", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I have history tests, but they are only run when you run `make test_history` because they can be...flaky. No worries; I'll make the change to fix them. In fact, I might make a change to test this new behavior.\r\n\r\nYou make a compelling and convincing case that this is merely a bug fix. Stefan seems to agree that it is and that many old Unix users would expect this behavior change.\r\n\r\nIn fact, if old Unix users expect the change, then the fact that no one has said anything is probably a good indicator that no one has been using it, which means I can pull the rug out without making anybody mad.\r\n\r\nSo I'm more than satisfied. I'll make the change, and I'll make it in a bugfix release.", + "createdAt": "2022-04-29T14:06:00Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1113353961", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5CXNGY", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I do have a question: should I remove the EOF behavior entirely?", + "createdAt": "2022-04-29T14:22:22Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1113379224", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc5CXQAy", + "author": { + "login": "bsdimp" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "> I do have a question: should I remove the EOF behavior entirely?\r\n\r\nNo. The behavior I implemented matches gnu bc's behavior.", + "createdAt": "2022-04-29T14:28:47Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1113391154", + "viewerDidAuthor": false + }, + { + "id": "IC_kwDOCL0xJc5CXkZ_", + "author": { + "login": "stesser" + }, + "authorAssociation": "CONTRIBUTOR", + "body": " I had sent a reply to Gavin a few hours ago, and I do see that the pull request has already been merged.\r\n\r\nJust a comment regarding compatibility with the previous bc version in FreeBSD:\r\n\r\nWhile GNU bc has the requested behavior, the previous bc in FreeBSD up to 12.x did not:\r\n\r\n$ bc -v\r\nbc (BSD bc) 1.1-FreeBSD\r\n$ bc\r\n12345^B^B^B <- cursor on 3\r\n^D <- bell sound, nothing deleted\r\n<DEL>\r\n1245 <- result after pressing DEL\r\n\r\nIn the FreeBSD bc (which had been obtained from OpenBSD) ^D did only signal EOF if the input line was empty, but it did not delete to the right.\r\n\r\nGNU bc actually has the line editing behavior created by this patch, and thus it is further step towards GNU bc compatibility. (And IIRC, GNU bc had been in the FreeBSD base system, a few decades ago ...)", + "createdAt": "2022-04-29T15:55:50Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/pull/51#issuecomment-1113474687", + "viewerDidAuthor": false + } + ], + "commits": [ + { + "authoredDate": "2022-04-28T15:30:25Z", + "authors": [ + { + "email": "imp@FreeBSD.org", + "id": "MDQ6VXNlcjQxMzkwMDY=", + "login": "bsdimp", + "name": "Warner Losh" + } + ], + "committedDate": "2022-04-28T15:35:21Z", + "messageBody": "The historic gnu bc behavior was to have ^D be delete next character if\nthere were any characters in the input, or end of file if there\nweren't. This matches what emacs users expect for editing the command\nline. Implement this by assuming end of file if the input is empty, and\ndelete forward character if it isn't.\n\nSigned-off-by: Warner Losh <imp@bsdimp.com>", + "messageHeadline": "Emacs delete-next-character", + "oid": "cee56074a8fe669901e0869ee8a6e23106d1634b" + } + ], + "createdAt": "2022-04-28T15:35:29Z", + "deletions": 4, + "files": [ + { + "path": "src/history.c", + "additions": 11, + "deletions": 4 + } + ], + "fullDatabaseId": "922011328", + "headRefName": "del-forward", + "headRefOid": "cee56074a8fe669901e0869ee8a6e23106d1634b", + "headRepository": { + "id": "R_kgDOHQG2MA", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjQxMzkwMDY=", + "name": "Warner Losh", + "login": "bsdimp" + }, + "id": "PR_kwDOCL0xJc429MbA", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "f8fa6febf7521062f0c4ecb6ca4406c91c125360" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2022-04-29T14:06:09Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 51, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Emacs delete-next-character", + "updatedAt": "2022-04-29T15:55:50Z", + "url": "https://github.com/gavinhoward/bc/pull/51" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "is_bot": false, + "login": "firasuke", + "name": "Firas Khalil Khana" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "c3b2d28b2d615ca2b84ba398d796040348c5f13a", + "body": "", + "changedFiles": 1, + "closed": true, + "closedAt": "2021-12-26T16:59:58Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc47rUun", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Whoops! Thanks for catching.", + "createdAt": "2021-12-26T17:00:08Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/49#issuecomment-1001212839", + "viewerDidAuthor": true + }, + { + "id": "IC_kwDOCL0xJc47rVpi", + "author": { + "login": "firasuke" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Glad I could help!", + "createdAt": "2021-12-26T17:27:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/49#issuecomment-1001216610", + "viewerDidAuthor": false + } + ], + "commits": [ + { + "authoredDate": "2021-12-26T16:30:19Z", + "authors": [ + { + "email": "firasuke@gmail.com", + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "login": "firasuke", + "name": "Firas Khalil Khana" + } + ], + "committedDate": "2021-12-26T16:30:19Z", + "messageBody": "", + "messageHeadline": "Add missing newline character", + "oid": "ef5412b1bc939c0dbe18c7cf523e05de8561b25f" + } + ], + "createdAt": "2021-12-26T16:30:26Z", + "deletions": 1, + "files": [ + { + "path": "configure.sh", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "810041419", + "headRefName": "patch-1", + "headRefOid": "ef5412b1bc939c0dbe18c7cf523e05de8561b25f", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjQ2MTYwNzI3", + "name": "Firas Khalil Khana", + "login": "firasuke" + }, + "id": "PR_kwDOCL0xJc4wSEBL", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "232a12f6870eaf8fed95c12aa33fb3dbd7df8715" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2021-12-26T16:59:58Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 49, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Add missing newline character", + "updatedAt": "2021-12-26T17:27:19Z", + "url": "https://github.com/gavinhoward/bc/pull/49" + }, + { + "additions": 7, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "is_bot": false, + "login": "depler", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "289ad4a08981c4eaf1328ab9d16f184ee0466a34", + "body": "", + "changedFiles": 1, + "closed": true, + "closedAt": "2021-09-29T15:05:03Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc43crZP", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Looks good! Thank you!", + "createdAt": "2021-09-29T15:05:16Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/44#issuecomment-930264655", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2021-09-29T09:33:47Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-29T09:33:47Z", + "messageBody": "", + "messageHeadline": "tests_bc.bat fix", + "oid": "2d05fde966b12cee7e02220f1466efd7a78a56c4" + } + ], + "createdAt": "2021-09-29T09:34:23Z", + "deletions": 7, + "files": [ + { + "path": "vs/tests/tests_bc.bat", + "additions": 7, + "deletions": 7 + } + ], + "fullDatabaseId": "745557688", + "headRefName": "master", + "headRefOid": "2d05fde966b12cee7e02220f1466efd7a78a56c4", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler" + }, + "id": "PR_kwDOCL0xJc4scE64", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "74d55ddfc79df8adeb70cdb2fc81dc05f8bacbde" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2021-09-29T15:05:03Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 44, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "tests_bc.bat fix", + "updatedAt": "2021-09-29T15:05:16Z", + "url": "https://github.com/gavinhoward/bc/pull/44" + }, + { + "additions": 1017, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "is_bot": false, + "login": "depler", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "da29d88f70dca79c8a7e274b1cb5dee3c4bccb6f", + "body": "Changes:\r\n- projects moved to subfolder `vs`\r\n- projects created from scratch\r\n- fixed release configuration in executable (code optimizations enabled)\r\n- executable is statically linked (should work without any dependencies starting on Vista and newer)\r\n- library contains configurations `ReleaseMD` and `ReleaseMT` (shared and static linkage)\r\n- added 'vs\\tests' subfolder with scripts for windows (uses original test files, see `tests_bc.bat`, `tests_dc.bat`)\r\n\r\nBy the way, did you test binaries on windows? I've found failed test for dc:\r\n\r\n```\r\nc:\\Data\\Sources\\bc\\vs\\tests>tests_dc.bat\r\nPASS: abs\r\nPASS: add\r\nPASS: arctangent\r\nPASS: arrays\r\nPASS: assignments\r\n\r\n...\r\n\r\nParse error: bad character 't'\r\n <stdin>:2\r\n\r\nFAIL_RUNTIME: vars\r\n```\r\n", + "changedFiles": 15, + "closed": true, + "closedAt": "2021-09-25T21:06:56Z", + "comments": [ + { + "id": "IC_kwDOCL0xJc43Q7BQ", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I'm pulling this now because I made the fixes for all issues based on your code.\r\n\r\nI'm probably going to need your help still.", + "createdAt": "2021-09-25T21:06:52Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/38#issuecomment-927182928", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2021-09-24T22:42:26Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-24T22:42:26Z", + "messageBody": "", + "messageHeadline": "new bc.vcxproj, static linkage, release configuration", + "oid": "ae20dd7c1fedf9a7534aca4fda9783356cd15f86" + }, + { + "authoredDate": "2021-09-25T07:07:19Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-25T07:07:19Z", + "messageBody": "", + "messageHeadline": "bcl project", + "oid": "1c9479c50217773732f4111e4c3dfbc7e7415c1e" + }, + { + "authoredDate": "2021-09-25T07:15:33Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-25T07:15:33Z", + "messageBody": "", + "messageHeadline": "ReleaseMD, ReleaseMT", + "oid": "99a58fea193b6bcc1bec4adcd02c53522da20c86" + }, + { + "authoredDate": "2021-09-25T07:16:06Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-25T07:16:06Z", + "messageBody": "", + "messageHeadline": "cleanup", + "oid": "2230f31c8d4d53223a1dc13b0b399e374e57999f" + }, + { + "authoredDate": "2021-09-25T07:20:11Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-25T07:20:11Z", + "messageBody": "", + "messageHeadline": "fix", + "oid": "0a08c1a2d382fdf1406eecfc6669d8279810c51a" + }, + { + "authoredDate": "2021-09-25T10:48:31Z", + "authors": [ + { + "email": "depler.mv@gmail.com", + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler", + "name": "depler" + } + ], + "committedDate": "2021-09-25T10:48:31Z", + "messageBody": "", + "messageHeadline": "windows tests", + "oid": "2aaf6a7c624b441346200126504e713e1e324553" + } + ], + "createdAt": "2021-09-25T07:27:03Z", + "deletions": 760, + "files": [ + { + "path": "bc.vcxproj", + "additions": 0, + "deletions": 278 + }, + { + "path": "bc.vcxproj.filters", + "additions": 0, + "deletions": 182 + }, + { + "path": "bcl.sln", + "additions": 0, + "deletions": 31 + }, + { + "path": "bcl.vcxproj", + "additions": 0, + "deletions": 161 + }, + { + "path": "bcl.vcxproj.filters", + "additions": 0, + "deletions": 96 + }, + { + "path": "src/program.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "vs/.gitignore", + "additions": 7, + "deletions": 0 + }, + { + "path": "vs/bc.sln", + "additions": 11, + "deletions": 11 + }, + { + "path": "vs/bc.vcxproj", + "additions": 298, + "deletions": 0 + }, + { + "path": "vs/bc.vcxproj.filters", + "additions": 173, + "deletions": 0 + }, + { + "path": "vs/bcl.sln", + "additions": 37, + "deletions": 0 + }, + { + "path": "vs/bcl.vcxproj", + "additions": 259, + "deletions": 0 + }, + { + "path": "vs/bcl.vcxproj.filters", + "additions": 90, + "deletions": 0 + }, + { + "path": "vs/tests/tests_bc.bat", + "additions": 81, + "deletions": 0 + }, + { + "path": "vs/tests/tests_dc.bat", + "additions": 60, + "deletions": 0 + } + ], + "fullDatabaseId": "742640199", + "headRefName": "master", + "headRefOid": "2aaf6a7c624b441346200126504e713e1e324553", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjEzNTQxNjk5", + "login": "depler" + }, + "id": "PR_kwDOCL0xJc4sQ8pH", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "d3793fa5a17c198482baeee027464b98a3869270" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2021-09-25T21:06:56Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 38, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Visual Studio projects refactoring", + "updatedAt": "2021-09-25T21:06:56Z", + "url": "https://github.com/gavinhoward/bc/pull/38" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjM4ODMzNTE=", + "is_bot": false, + "login": "ibara", + "name": "Brian Callahan" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "3317fc9138148ac48beb4886206be45ebac2a838", + "body": "on => one", + "changedFiles": 1, + "closed": true, + "closedAt": "2020-03-11T17:36:56Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDU5NzcwNjM0Nw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/28?src=pr&el=h1) Report\n> Merging [#28](https://codecov.io/gh/gavinhoward/bc/pull/28?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/3317fc9138148ac48beb4886206be45ebac2a838&el=desc) will **not change** coverage by `%`.\n> The diff coverage is `n/a`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/28?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #28 +/- ##\n=======================================\n Coverage 99.65% 99.65% \n=======================================\n Files 16 16 \n Lines 3497 3497 \n=======================================\n Hits 3485 3485 \n Misses 12 12 \n```\n\n\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/28?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/28?src=pr&el=footer). Last update [3317fc9...24c93ff](https://codecov.io/gh/gavinhoward/bc/pull/28?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2020-03-11T15:39:52Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/28#issuecomment-597706347", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU5Nzc3MTUwMw==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you! Merged.", + "createdAt": "2020-03-11T17:39:45Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/28#issuecomment-597771503", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2020-03-11T15:37:45Z", + "authors": [ + { + "email": "ibara@users.noreply.github.com", + "id": "MDQ6VXNlcjM4ODMzNTE=", + "login": "ibara", + "name": "Brian Callahan" + } + ], + "committedDate": "2020-03-11T15:37:45Z", + "messageBody": "on => one", + "messageHeadline": "Fix a typo in build.md", + "oid": "24c93ffc52bfcae55f3b694e9684b49a105834e7" + } + ], + "createdAt": "2020-03-11T15:37:54Z", + "deletions": 1, + "files": [ + { + "path": "manuals/build.md", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "386765314", + "headRefName": "patch-1", + "headRefOid": "24c93ffc52bfcae55f3b694e9684b49a105834e7", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjM4ODMzNTE=", + "name": "Brian Callahan", + "login": "ibara" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mzg2NzY1MzE0", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "725f14b41767d34e6be02fa07dc2db659fa55b02" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2020-03-11T17:36:56Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 28, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Fix a typo in build.md", + "updatedAt": "2020-03-11T18:18:12Z", + "url": "https://github.com/gavinhoward/bc/pull/28" + }, + { + "additions": 86, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjMwOTE2NjEz", + "is_bot": false, + "login": "zv-io", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "358951d4fa58db3077a5675a6547c44e41101de9", + "body": "This series addresses some bugs found on Solaris as discussed with the author in IRC earlier today. The following systems have been \"loosely\" tested to compile and pass the non-external-`bc` test suite:\r\n\r\n* Solaris 10 [sun4u] (GCC `5.5.0`) in both 32- and 64- bit modes;\r\n* Solaris 11 [sun4v] (GCC `4.8.2` and `7.5.0`) in both 32- and 64- bit modes;\r\n\r\nNote: Solaris 10 requires aliasing to a POSIX-compliant shell (e.g. `/usr/xpg4/bin/sh`) or modifying the top of any scripts citing `/bin/sh` to this value.", + "changedFiles": 62, + "closed": true, + "closedAt": "2020-01-15T22:33:33Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDU3NDQ5NzI3Mw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=h1) Report\n> Merging [#27](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/358951d4fa58db3077a5675a6547c44e41101de9?src=pr&el=desc) will **not change** coverage.\n> The diff coverage is `n/a`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #27 +/- ##\n=======================================\n Coverage 99.65% 99.65% \n=======================================\n Files 16 16 \n Lines 3496 3496 \n=======================================\n Hits 3484 3484 \n Misses 12 12\n```\n\n\n| [Impacted Files](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [src/bc/parse.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL2JjL3BhcnNlLmM=) | `100% <ø> (ø)` | :arrow_up: |\n| [src/parse.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL3BhcnNlLmM=) | `100% <ø> (ø)` | :arrow_up: |\n| [src/read.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL3JlYWQuYw==) | `100% <ø> (ø)` | :arrow_up: |\n| [src/vm.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL3ZtLmM=) | `99.59% <ø> (ø)` | :arrow_up: |\n| [src/main.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL21haW4uYw==) | `100% <ø> (ø)` | :arrow_up: |\n| [src/num.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL251bS5j) | `99.41% <ø> (ø)` | :arrow_up: |\n| [src/lex.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL2xleC5j) | `100% <ø> (ø)` | :arrow_up: |\n| [src/bc/bc.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL2JjL2JjLmM=) | `100% <ø> (ø)` | :arrow_up: |\n| [src/bc/lex.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL2JjL2xleC5j) | `100% <ø> (ø)` | :arrow_up: |\n| [src/lang.c](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree#diff-c3JjL2xhbmcuYw==) | `97.33% <ø> (ø)` | :arrow_up: |\n| ... and [6 more](https://codecov.io/gh/gavinhoward/bc/pull/27/diff?src=pr&el=tree-more) | |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=footer). Last update [358951d...a756285](https://codecov.io/gh/gavinhoward/bc/pull/27?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2020-01-15T05:02:18Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/27#issuecomment-574497273", + "viewerDidAuthor": false + } + ], + "commits": [ + { + "authoredDate": "2020-01-14T21:56:45Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-14T22:17:19Z", + "messageBody": "", + "messageHeadline": "Fix bug caused by inconsistent preservation of line endings by 'sed'.", + "oid": "d3b3813c94d6553caad61752dd7ac99dd860e20c" + }, + { + "authoredDate": "2020-01-14T22:03:42Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-14T22:17:26Z", + "messageBody": "…'ls' command. Improve robustness of test conditions.", + "messageHeadline": "Switch from POSIX 2008 --> 2001 build flags. Remove use of dangerous …", + "oid": "72238e589bf7e8cb6a9bb380f367c1a5edcc8b82" + }, + { + "authoredDate": "2020-01-14T22:05:02Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-14T22:17:27Z", + "messageBody": "", + "messageHeadline": "Update copyright year 2019 --> 2020.", + "oid": "eb34ee5e9d5607c08e7080d9c44e03d393756493" + }, + { + "authoredDate": "2020-01-14T22:24:01Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-14T22:24:01Z", + "messageBody": "…sions.", + "messageHeadline": "Explicit '-std=c99' to avoid ambiguity across different compilers/ver…", + "oid": "a38469fd93c20d1de3f972c982de3c234000116a" + }, + { + "authoredDate": "2020-01-14T22:57:04Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-14T22:59:48Z", + "messageBody": "", + "messageHeadline": "Update documentation and prepare for release.", + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + }, + { + "authoredDate": "2020-01-15T13:56:00Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-15T13:56:00Z", + "messageBody": "…lers/versions.\"\n\nThis reverts commit a38469fd93c20d1de3f972c982de3c234000116a.", + "messageHeadline": "Revert \"Explicit '-std=c99' to avoid ambiguity across different compi…", + "oid": "8b83e334177701cd2c05fd10090a1f582bd7e9f8" + }, + { + "authoredDate": "2020-01-15T13:57:24Z", + "authors": [ + { + "email": "me@zv.io", + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io", + "name": "Zach van Rijn" + } + ], + "committedDate": "2020-01-15T13:57:24Z", + "messageBody": "", + "messageHeadline": "Comply with versioning policy as per author feedback in PR 27.", + "oid": "a756285f60b2139fc629c3edf230c8b1f9a875ed" + } + ], + "createdAt": "2020-01-15T04:59:12Z", + "deletions": 79, + "files": [ + { + "path": "Makefile.in", + "additions": 3, + "deletions": 3 + }, + { + "path": "NEWS.md", + "additions": 6, + "deletions": 0 + }, + { + "path": "README.md", + "additions": 3, + "deletions": 2 + }, + { + "path": "configure.sh", + "additions": 12, + "deletions": 12 + }, + { + "path": "functions.sh", + "additions": 3, + "deletions": 3 + }, + { + "path": "gen/bc_help.txt", + "additions": 1, + "deletions": 1 + }, + { + "path": "gen/dc_help.txt", + "additions": 1, + "deletions": 1 + }, + { + "path": "gen/lib.bc", + "additions": 1, + "deletions": 1 + }, + { + "path": "gen/lib2.bc", + "additions": 1, + "deletions": 1 + }, + { + "path": "gen/strgen.c", + "additions": 2, + "deletions": 2 + }, + { + "path": "include/args.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/bc.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/dc.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/history.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/lang.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/lex.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/num.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/parse.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/program.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/read.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/status.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/vector.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "include/vm.h", + "additions": 1, + "deletions": 1 + }, + { + "path": "install.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "karatsuba.py", + "additions": 1, + "deletions": 1 + }, + { + "path": "link.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "locale_install.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "locale_uninstall.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "locales/en_US.msg", + "additions": 1, + "deletions": 1 + }, + { + "path": "locales/fr_FR.ISO8859-1.msg", + "additions": 1, + "deletions": 1 + }, + { + "path": "locales/fr_FR.UTF-8.msg", + "additions": 1, + "deletions": 1 + }, + { + "path": "locales/pt_PT.ISO-8859-1.msg", + "additions": 1, + "deletions": 1 + }, + { + "path": "locales/pt_PT.UTF-8.msg", + "additions": 1, + "deletions": 1 + }, + { + "path": "release.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/args.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/bc/bc.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/bc/lex.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/bc/parse.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/data.c", + "additions": 2, + "deletions": 2 + }, + { + "path": "src/dc/dc.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/dc/lex.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/dc/parse.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/history/history.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/lang.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/lex.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/main.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/num.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/parse.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/program.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/read.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/vector.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "src/vm.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/afl.py", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/all.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/bc/timeconst.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/errors.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/randmath.py", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/read.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/script.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/scripts.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/stdin.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/test.sh", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "362957298", + "headRefName": "master", + "headRefOid": "a756285f60b2139fc629c3edf230c8b1f9a875ed", + "headRepository": null, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjMwOTE2NjEz", + "login": "zv-io" + }, + "id": "MDExOlB1bGxSZXF1ZXN0MzYyOTU3Mjk4", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [ + { + "id": "", + "author": { + "login": "michaelforney" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T06:00:48Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "" + } + }, + { + "id": "", + "author": { + "login": "ibara" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T20:20:03Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "" + } + }, + { + "id": "", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T22:33:19Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "APPROVED", + "commit": { + "oid": "" + } + } + ], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "063a155d1ee6c68bfba37733777ad1331810fdf1" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2020-01-15T22:33:33Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 27, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "APPROVED", + "reviewRequests": [], + "reviews": [ + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQyOTk0NDA3", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for this PR! Unfortunately, it needs some work before I can accept it. See reviews below.", + "submittedAt": "2020-01-15T05:32:13Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "CHANGES_REQUESTED", + "commit": { + "oid": "d3b3813c94d6553caad61752dd7ac99dd860e20c" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMDAyMDEx", + "author": { + "login": "michaelforney" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T06:00:48Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMDAyNTYx", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T06:02:59Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMDEwNjM1", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T06:34:47Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMjM5MTU3", + "author": { + "login": "zv-io" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T14:04:17Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMjQ0ODg5", + "author": { + "login": "zv-io" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T14:12:43Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMjU1NTQ0", + "author": { + "login": "zv-io" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T14:27:10Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMjU2MjE0", + "author": { + "login": "zv-io" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T14:28:02Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMjczNTgx", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T14:50:50Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzMjc3MTQ4", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T14:55:18Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "f022d5dedc841bb1d23fa2e03fdc97a639de700d" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzNDk1MzQ1", + "author": { + "login": "ibara" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "", + "submittedAt": "2020-01-15T20:20:03Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "a756285f60b2139fc629c3edf230c8b1f9a875ed" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzNDk5ODcx", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T20:28:14Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "a756285f60b2139fc629c3edf230c8b1f9a875ed" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzNTY3ODE3", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T22:33:01Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "COMMENTED", + "commit": { + "oid": "a756285f60b2139fc629c3edf230c8b1f9a875ed" + } + }, + { + "id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MzQzNTY3OTcx", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "", + "submittedAt": "2020-01-15T22:33:19Z", + "includesCreatedEdit": false, + "reactionGroups": [], + "state": "APPROVED", + "commit": { + "oid": "a756285f60b2139fc629c3edf230c8b1f9a875ed" + } + } + ], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Improve portability, enable build on Solaris SPARC.", + "updatedAt": "2020-01-15T22:33:33Z", + "url": "https://github.com/gavinhoward/bc/pull/27" + }, + { + "additions": 218, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjM5NzU3OTY3", + "is_bot": false, + "login": "bugcrazy", + "name": "" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "39b0dc440325511db730ad8fbd7012ba6f3f4b4d", + "body": "Portuguese Translations pt_PT and pt_BR", + "changedFiles": 8, + "closed": true, + "closedAt": "2020-01-14T15:08:19Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDU3NDAyODE2Nw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/26?src=pr&el=h1) Report\n> Merging [#26](https://codecov.io/gh/gavinhoward/bc/pull/26?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/39b0dc440325511db730ad8fbd7012ba6f3f4b4d?src=pr&el=desc) will **not change** coverage.\n> The diff coverage is `n/a`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/26?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #26 +/- ##\n=======================================\n Coverage 99.65% 99.65% \n=======================================\n Files 16 16 \n Lines 3496 3496 \n=======================================\n Hits 3484 3484 \n Misses 12 12\n```\n\n\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/26?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/26?src=pr&el=footer). Last update [39b0dc4...2572333](https://codecov.io/gh/gavinhoward/bc/pull/26?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2020-01-14T06:43:10Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/26#issuecomment-574028167", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU3NDIxOTEzMg==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Thank you for your translations! They look good. Release of Version `2.5.0` with the translations will happen in a few minutes.", + "createdAt": "2020-01-14T15:09:22Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/26#issuecomment-574219132", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU3NDIyMzU0Mw==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Version `2.5.0` is out with your translations. Thank you!", + "createdAt": "2020-01-14T15:17:19Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/pull/26#issuecomment-574223543", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU3NDI0MTA2Mw==", + "author": { + "login": "bugcrazy" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Thank you!", + "createdAt": "2020-01-14T15:52:18Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/26#issuecomment-574241063", + "viewerDidAuthor": false + } + ], + "commits": [ + { + "authoredDate": "2020-01-14T06:32:59Z", + "authors": [ + { + "email": "39757967+bugcrazy@users.noreply.github.com", + "id": "MDQ6VXNlcjM5NzU3OTY3", + "login": "bugcrazy", + "name": "bugcrazy" + } + ], + "committedDate": "2020-01-14T06:32:59Z", + "messageBody": "Portuguese Translations pt_PT and pt_BR", + "messageHeadline": "Portuguese Translations", + "oid": "25723337b998ced4976dc5beae8717d81056dc5f" + } + ], + "createdAt": "2020-01-14T06:40:25Z", + "deletions": 0, + "files": [ + { + "path": "locales/pt_BR.ISO-8859-1.msg", + "additions": 1, + "deletions": 0 + }, + { + "path": "locales/pt_BR.ISO-8859-15.msg", + "additions": 1, + "deletions": 0 + }, + { + "path": "locales/pt_BR.UTF-8.msg", + "additions": 1, + "deletions": 0 + }, + { + "path": "locales/pt_BR.utf8.msg", + "additions": 1, + "deletions": 0 + }, + { + "path": "locales/pt_PT.ISO-8859-1.msg", + "additions": 106, + "deletions": 0 + }, + { + "path": "locales/pt_PT.ISO-8859-15.msg", + "additions": 1, + "deletions": 0 + }, + { + "path": "locales/pt_PT.UTF-8.msg", + "additions": 106, + "deletions": 0 + }, + { + "path": "locales/pt_PT.utf8.msg", + "additions": 1, + "deletions": 0 + } + ], + "fullDatabaseId": "362470901", + "headRefName": "master", + "headRefOid": "25723337b998ced4976dc5beae8717d81056dc5f", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkyMzM3NjI4NjY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjM5NzU3OTY3", + "login": "bugcrazy" + }, + "id": "MDExOlB1bGxSZXF1ZXN0MzYyNDcwOTAx", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "c322c80e62415e69c8d65c69904a0e1ea37f4da3" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2020-01-14T15:08:19Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 26, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Portuguese Translations", + "updatedAt": "2020-01-14T15:52:18Z", + "url": "https://github.com/gavinhoward/bc/pull/26" + }, + { + "additions": 6, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjIyMjk2NzA2", + "is_bot": false, + "login": "eg15", + "name": "Eugene Gladchenko" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "38cc5145cb66ba9f1706630d5f987d60a46fb1b1", + "body": "Looks like I found a bug.\r\n\"-1000000000 < -1\" returns 0 (false) on my machine which is obviously wrong.\r\nThe fix will follow.", + "changedFiles": 4, + "closed": true, + "closedAt": "2019-11-22T04:42:08Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDU1NzE0ODY4Mw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=h1) Report\n> Merging [#25](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/38cc5145cb66ba9f1706630d5f987d60a46fb1b1?src=pr&el=desc) will **not change** coverage.\n> The diff coverage is `100%`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #25 +/- ##\n=======================================\n Coverage 99.71% 99.71% \n=======================================\n Files 16 16 \n Lines 3478 3478 \n=======================================\n Hits 3468 3468 \n Misses 10 10\n```\n\n\n| [Impacted Files](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [src/num.c](https://codecov.io/gh/gavinhoward/bc/pull/25/diff?src=pr&el=tree#diff-c3JjL251bS5j) | `99.41% <100%> (ø)` | :arrow_up: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=footer). Last update [38cc514...96518d8](https://codecov.io/gh/gavinhoward/bc/pull/25?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2019-11-21T15:56:12Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/25#issuecomment-557148683", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU1NzE2MDgyMg==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Yes, you did find a bug.\r\n\r\nYour fix looks great, and your tests do as well. I just have two requests:\r\n\r\n1. Move your tests and results into files called `comp.txt` and `comp_results.txt`.\r\n2. Change the name in `tests/bc/all.txt`.\r\n\r\nI want you to do this because I am going to write a more comprehensive set of tests for comparisons in general to make sure I did not miss anything else.\r\n\r\nIf you don't have the time to do this, I could always pull it and do the change myself.", + "createdAt": "2019-11-21T16:22:26Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/25#issuecomment-557160822", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU1NzIwNjQwNw==", + "author": { + "login": "eg15" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "Just finished, thank you.\r\n\r\nBTW it looks like busybox guys took your code and kept the bug in their modified version.\r\nJust fixed it there as well: https://bugs.busybox.net/show_bug.cgi?id=12336\r\n\r\nThen it should be fixed in Alpine (that's where I encountered it this morning).", + "createdAt": "2019-11-21T18:10:24Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/25#issuecomment-557206407", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU1NzIzMDk2NA==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "`busybox` didn't exactly take my code; I gave them my code, when it had a lot more bugs as well. Unfortunately, they decided to go their own way with it, so I don't really contribute back. (They added even more bugs.)\r\n\r\nI will merge this when I get home from work. I should have a release out after testing, which could take up to a week. I don't expect this to take that long to test, since it's so small, but I may find other problems.", + "createdAt": "2019-11-21T19:14:33Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/25#issuecomment-557230964", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDU1NzM4NjYzOQ==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I pulled manually. Thank you for your help!", + "createdAt": "2019-11-22T04:44:22Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [ + { + "content": "THUMBS_UP", + "users": { + "totalCount": 1 + } + } + ], + "url": "https://github.com/gavinhoward/bc/pull/25#issuecomment-557386639", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-11-21T15:31:00Z", + "authors": [ + { + "email": "gladchenko@gmail.com", + "id": "MDQ6VXNlcjIyMjk2NzA2", + "login": "eg15", + "name": "Eugene Gladchenko" + } + ], + "committedDate": "2019-11-21T15:31:00Z", + "messageBody": "", + "messageHeadline": "Add a test to compare negative numbers", + "oid": "888c422c21b558d3778d4ad215fd54f9387a137b" + }, + { + "authoredDate": "2019-11-21T16:00:43Z", + "authors": [ + { + "email": "gladchenko@gmail.com", + "id": "MDQ6VXNlcjIyMjk2NzA2", + "login": "eg15", + "name": "Eugene Gladchenko" + } + ], + "committedDate": "2019-11-21T16:00:43Z", + "messageBody": "", + "messageHeadline": "Fix a bug in comparing negative numbers", + "oid": "ddbecaa0601375b86dffb525973148cdd0dda8f7" + }, + { + "authoredDate": "2019-11-21T18:05:15Z", + "authors": [ + { + "email": "gladchenko@gmail.com", + "id": "MDQ6VXNlcjIyMjk2NzA2", + "login": "eg15", + "name": "Eugene Gladchenko" + } + ], + "committedDate": "2019-11-21T18:05:15Z", + "messageBody": "", + "messageHeadline": "The name of the test file changed", + "oid": "96518d8fd63fca1d01b82ac78a42251844f39201" + } + ], + "createdAt": "2019-11-21T15:52:02Z", + "deletions": 1, + "files": [ + { + "path": "src/num.c", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/bc/all.txt", + "additions": 1, + "deletions": 0 + }, + { + "path": "tests/bc/comp.txt", + "additions": 2, + "deletions": 0 + }, + { + "path": "tests/bc/comp_results.txt", + "additions": 2, + "deletions": 0 + } + ], + "fullDatabaseId": "344102387", + "headRefName": "master", + "headRefOid": "96518d8fd63fca1d01b82ac78a42251844f39201", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkyMjMyMDIxNDg=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjIyMjk2NzA2", + "name": "Eugene Gladchenko", + "login": "eg15" + }, + "id": "MDExOlB1bGxSZXF1ZXN0MzQ0MTAyMzg3", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "96518d8fd63fca1d01b82ac78a42251844f39201" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2019-11-22T04:42:07Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 25, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Add a test to compare negative numbers", + "updatedAt": "2019-11-22T04:44:22Z", + "url": "https://github.com/gavinhoward/bc/pull/25" + }, + { + "additions": 43, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "b6cc5efba0e127c5a344c25505c807865494cc66", + "body": "I do not know how to restrict the pull request to just the two commits I consider relevant (probably is the GIT way to create a temporary branch for that purpose?)\r\n\r\nThe relevant commits are: \r\n\r\nca56e06\r\n684e3f6", + "changedFiles": 3, + "closed": true, + "closedAt": "2019-06-14T01:43:15Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDUwMTgzMTY1Ng==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=h1) Report\n> Merging [#24](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/b6cc5efba0e127c5a344c25505c807865494cc66?src=pr&el=desc) will **increase** coverage by `<.01%`.\n> The diff coverage is `100%`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #24 +/- ##\n==========================================\n+ Coverage 99.73% 99.73% +<.01% \n==========================================\n Files 16 16 \n Lines 3431 3435 +4 \n==========================================\n+ Hits 3422 3426 +4 \n Misses 9 9\n```\n\n\n| [Impacted Files](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [src/bc/parse.c](https://codecov.io/gh/gavinhoward/bc/pull/24/diff?src=pr&el=tree#diff-c3JjL2JjL3BhcnNlLmM=) | `100% <ø> (ø)` | :arrow_up: |\n| [src/program.c](https://codecov.io/gh/gavinhoward/bc/pull/24/diff?src=pr&el=tree#diff-c3JjL3Byb2dyYW0uYw==) | `99.73% <100%> (ø)` | :arrow_up: |\n| [src/num.c](https://codecov.io/gh/gavinhoward/bc/pull/24/diff?src=pr&el=tree#diff-c3JjL251bS5j) | `99.8% <100%> (ø)` | :arrow_up: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=footer). Last update [b6cc5ef...ca56e06](https://codecov.io/gh/gavinhoward/bc/pull/24?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2019-06-13T18:43:42Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/24#issuecomment-501831656", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDUwMTg1MDQyMQ==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I have already made these changes in my local branch. I just haven't pushed them yet. I will push them when I get home from work, and I will close this then to remind me.\r\n\r\nThank you.", + "createdAt": "2019-06-13T19:39:54Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/24#issuecomment-501850421", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDUwMTkzNzA0Ng==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Changes are pushed.", + "createdAt": "2019-06-14T01:43:15Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/24#issuecomment-501937046", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-06-09T11:10:39Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-09T11:10:39Z", + "messageBody": "", + "messageHeadline": "Small optimization: no data to copy for BC_RESULT_ONE or _LAST", + "oid": "b32b26ca8a533480155a427906025cbe9a0c061c" + }, + { + "authoredDate": "2019-06-10T21:15:49Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-10T21:15:49Z", + "messageBody": "", + "messageHeadline": "Make limit for extension of division results depend on BC_BASE_DIGS", + "oid": "1846088a5d37f02e608228e4214ed76464abdd05" + }, + { + "authoredDate": "2019-06-10T21:17:33Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-10T21:17:33Z", + "messageBody": "", + "messageHeadline": "Simplify and speed up parsing of decimal numbers", + "oid": "5954930eb013ed5e10bea2599735f06b05b89caa" + }, + { + "authoredDate": "2019-06-12T10:16:50Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-12T10:16:50Z", + "messageBody": "Do not allocate one BcDig per character of the string passed in.\nFor ibase between 11 and 26 (decimal) more than one BcDig may be\nneeded to store the value expressed by BC_BASE_DIGS characters.\n\nTesting for that case will probably cause more overhead than just\napplying a fudge factor (not verified - special casing the ibase\nrange that needs this factor and using a factor of 1.5 instead of\n2 might be worth the extra code complexity).", + "messageHeadline": "Fix allocation size for parsed number", + "oid": "c2dc7941ee0115ba8e820685021d70ab2ab13a91" + }, + { + "authoredDate": "2019-06-12T10:25:11Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-12T10:25:11Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "036b112a9d04b56b98ba3697e1641afa6352bbeb" + }, + { + "authoredDate": "2019-06-12T12:00:07Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-12T12:00:07Z", + "messageBody": "This change improves \"make test\" performance by more than 2%.", + "messageHeadline": "Better estimate of the number of BcDigs required to store a constant", + "oid": "43caceec40e4265edc8244b092bd39ba483361c5" + }, + { + "authoredDate": "2019-06-12T21:43:54Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-12T21:43:54Z", + "messageBody": "This implementation is not optimized for speed, yet. I have plans to\nadd copy-on-write semantics for BcNums (i.e. add a reference count and\ncopy the BcNum only if its refcount is > 1 it is about to be\nmodified).\n\nThis version fails in the bc/stdin test, but diagnosing this problem\nwill have to wait for tomorrow ...", + "messageHeadline": "Implement caching of numeric constants in vectors of BcNums", + "oid": "515dfe44886667eb9fbea48c214b559549d69417" + }, + { + "authoredDate": "2019-06-13T08:23:45Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-13T08:23:45Z", + "messageBody": "Beyond the changes performed by the automatic merge, remove references\nto the constvals field in struct BcFunc.", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "cd30020d2fe2d4cef802b2e65299f4e0e1a3972f" + }, + { + "authoredDate": "2019-06-13T08:33:21Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-13T08:33:21Z", + "messageBody": "", + "messageHeadline": "Merge more changes from upstream", + "oid": "21e4395740342aa65e728d02e1a5d658a9a15bc0" + }, + { + "authoredDate": "2019-06-13T08:49:54Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-13T08:49:54Z", + "messageBody": "", + "messageHeadline": "Adjust whitespace and use value of \"base\" instead of fetching it again", + "oid": "684e3f6f8a7dd8efb5b49211ef20948710cf6457" + }, + { + "authoredDate": "2019-06-13T09:14:04Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-13T09:14:04Z", + "messageBody": "", + "messageHeadline": "Fix for failing scale(0.0000000000000000000) test case", + "oid": "25799a6fa21c69cb7f9e77e53329d3b735564c9b" + }, + { + "authoredDate": "2019-06-13T11:05:20Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-13T11:05:20Z", + "messageBody": "FreeBSD uses strict checks for base system components and the build\nfailed due to the compiler warnings being treated as errors in base.", + "messageHeadline": "Remove unused local variable declarations (fix build in FreeBSD)", + "oid": "ca56e060a471ed5476a78b38c1b2d0584777d693" + } + ], + "createdAt": "2019-06-13T18:39:56Z", + "deletions": 49, + "files": [ + { + "path": "src/bc/parse.c", + "additions": 0, + "deletions": 2 + }, + { + "path": "src/num.c", + "additions": 37, + "deletions": 39 + }, + { + "path": "src/program.c", + "additions": 6, + "deletions": 8 + } + ], + "fullDatabaseId": "288048911", + "headRefName": "master", + "headRefOid": "ca56e060a471ed5476a78b38c1b2d0584777d693", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjg4MDQ4OTEx", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "DIRTY", + "mergeable": "CONFLICTING", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 24, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "Whitespace adjustment and removal of some unused variables", + "updatedAt": "2019-06-14T01:43:15Z", + "url": "https://github.com/gavinhoward/bc/pull/24" + }, + { + "additions": 1, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "f555270c99e7d354704071628486df0870968286", + "body": "Benchmarks show a small but significant speed-up of \"make test\" if the\r\nlimit for the shifting of operands is made more strict. Many operands\r\nwill require a second iteration of the inner loop anyway, and shifting\r\nof the operands uses cycles for no gain, then.\r\n\r\nTo my surprise, BC_BASE_DIGS=4 and =9 seem to have near identical\r\nperformance after this change. Some operations (multiplication and\r\npower) ought to be faster with larger BcDigs, but at least for the\r\nperformance of \"make test\" on my system this does not seem to affect\r\nthe run-time by a significant amount.", + "changedFiles": 1, + "closed": true, + "closedAt": "2019-06-07T13:25:25Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTg4MzYwNQ==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "I am not planning on future releases, except for bug fixes. I will merge this now.", + "createdAt": "2019-06-07T13:25:27Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/23#issuecomment-499883605", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-06-07T07:33:26Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-07T07:33:26Z", + "messageBody": "Benchmarks show a small but significant speed-up of \"make test\" if the\nlimit for the shifting of operands is made more strict. Many operands\nwill require a second iteration of the inner loop anyway, and shifting\nof the operands uses cycles for no gain, then.\n\nTo my surprise, BC_BASE_DIGS=4 and =9 seem to have near identical\nperformance after this change. Some operations (multiplication and\npower) ought to be faster with larger BcDigs, but at least for the\nperformance of \"make test\" on my system this does not seem to affect\nthe run-time by a significant amount.", + "messageHeadline": "Small performance optimization", + "oid": "d8526df195150f9f20ed4e8430dff3457e5d2913" + } + ], + "createdAt": "2019-06-07T08:28:48Z", + "deletions": 1, + "files": [ + { + "path": "src/num.c", + "additions": 1, + "deletions": 1 + } + ], + "fullDatabaseId": "286093193", + "headRefName": "master", + "headRefOid": "d8526df195150f9f20ed4e8430dff3457e5d2913", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjg2MDkzMTkz", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "6f662190645f8fb84b36a513b1369a8bf61e215e" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2019-06-07T13:25:25Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 23, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Small performance optimization (perhaps for the next following release?)", + "updatedAt": "2019-06-07T13:25:28Z", + "url": "https://github.com/gavinhoward/bc/pull/23" + }, + { + "additions": 38, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "7373e5f89c9ce873eb1a84f129c1f9be3b1ec400", + "body": "", + "changedFiles": 1, + "closed": true, + "closedAt": "2019-06-07T04:04:59Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTY2Nzc4Nw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=h1) Report\n> Merging [#22](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/7373e5f89c9ce873eb1a84f129c1f9be3b1ec400?src=pr&el=desc) will **increase** coverage by `<.01%`.\n> The diff coverage is `100%`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #22 +/- ##\n==========================================\n+ Coverage 99.73% 99.73% +<.01% \n==========================================\n Files 16 16 \n Lines 3392 3409 +17 \n==========================================\n+ Hits 3383 3400 +17 \n Misses 9 9\n```\n\n\n| [Impacted Files](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [src/num.c](https://codecov.io/gh/gavinhoward/bc/pull/22/diff?src=pr&el=tree#diff-c3JjL251bS5j) | `99.8% <100%> (ø)` | :arrow_up: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=footer). Last update [7373e5f...98719ee](https://codecov.io/gh/gavinhoward/bc/pull/22?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2019-06-06T21:06:55Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/22#issuecomment-499667787", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTc0OTQ5MQ==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Merging...for now. If it passes (which I think it will), it will stay.", + "createdAt": "2019-06-07T04:05:18Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/22#issuecomment-499749491", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-06-06T05:13:40Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T05:13:40Z", + "messageBody": "Since stdout is not affected by this debug print function, nchars\nshould not be modified, or printing of large numbers will be broken.", + "messageHeadline": "Resetting of nchars after printing to stderr corrupts the output", + "oid": "76794442357318437574ec8c0aa3f71903ec419a" + }, + { + "authoredDate": "2019-06-06T06:14:43Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T06:14:43Z", + "messageBody": "If the top-most BcDig contains a small value and there are lower\nnon-zero BcDigs, the integer divisor is incremented to prevent\ndivision results that do not fit into a BcDig (are > BC_BASE_POW).\n\nE.g. for 1000 / 1.1 the integer divisor will become 2 and the first\nestimate of the result will be 1000 / 2 = 500, giving a reminder of\n1000 - 500 * 1.1 = 450. The next estimate will be 700 = 500 + 450 / 2\nand so on with the reminder slowly decreasing in each iteration.\n\nSince the relative error due to the approximation of the full division\nby an integer division becomes significant for small integer divisors,\nit makes sense to extend the divisor if it i ssmall. In fact, it seems\nto pay off for all divisors that are < BC_BASE_POW / 10.", + "messageHeadline": "Fix pathological behavior in case integer is rounded up a lot", + "oid": "035ace7d24afd722ce9a3325c90213d36772e5bd" + }, + { + "authoredDate": "2019-06-06T06:25:29Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T06:25:29Z", + "messageBody": "", + "messageHeadline": "Merge branch 'div'", + "oid": "c1e655b2dd38ea27668b3a0c5b7c86ef06a8dd88" + }, + { + "authoredDate": "2019-06-06T08:21:51Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T08:21:51Z", + "messageBody": "If there was a new-line character in the string, then strrchr will\nreturn a pointer to that character. If the length of the string\nstarting at the new-line position is 1, then no text follows on the\nnew line and nchars should be set to 0,not 2.", + "messageHeadline": "Fix calculation of nchars", + "oid": "54e3cd86494fd1e2c817ea3fa49c357738da5f82" + }, + { + "authoredDate": "2019-06-06T11:32:50Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T11:32:50Z", + "messageBody": "This reverts commit 54e3cd86494fd1e2c817ea3fa49c357738da5f82.\n\nI had misread the code (thought the + 1 was outside the brackets).", + "messageHeadline": "Revert \"Fix calculation of nchars\"", + "oid": "210d9c5863215d0c371f0ec68a0fda2f601920f3" + }, + { + "authoredDate": "2019-06-06T20:07:20Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T20:07:20Z", + "messageBody": "This version does not pass all tests (hangs in divide.bc).\nI'm commiting anyway, to have a basis that is ismilar to the upstream\nrepo for further testing.", + "messageHeadline": "Merge latest upstream version.", + "oid": "94fb480d06c4e082a635d2f4866682d4f6a7b6bb" + }, + { + "authoredDate": "2019-06-06T20:50:44Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T20:50:44Z", + "messageBody": "", + "messageHeadline": "Remove debug dump of operands and intermediate results", + "oid": "59e2953c61615ff5f3deecd181f15c5249fe0bb4" + }, + { + "authoredDate": "2019-06-06T20:59:42Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T20:59:42Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "6fe9b2fba0e7359152598d4e38ff93020b24b8e7" + }, + { + "authoredDate": "2019-06-06T21:01:19Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T21:01:19Z", + "messageBody": "", + "messageHeadline": "Reduce whitespace diff relative to upstream", + "oid": "595d84e4792bffa63ece31aa146ea7ccfc87ea4b" + }, + { + "authoredDate": "2019-06-06T21:03:03Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T21:03:03Z", + "messageBody": "", + "messageHeadline": "Fix lines that resulted from a mis-merge of upstream", + "oid": "98719eecc5f599365f5d2c3aa042a9cb7cdb6d6c" + } + ], + "createdAt": "2019-06-06T20:53:49Z", + "deletions": 6, + "files": [ + { + "path": "src/num.c", + "additions": 38, + "deletions": 6 + } + ], + "fullDatabaseId": "285965666", + "headRefName": "master", + "headRefOid": "98719eecc5f599365f5d2c3aa042a9cb7cdb6d6c", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjg1OTY1NjY2", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "016a5eed2e5cc0d7e65cea785e609a0bb8a0fa70" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2019-06-07T04:04:59Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 22, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "This version completes all tests on my system", + "updatedAt": "2019-06-07T04:05:18Z", + "url": "https://github.com/gavinhoward/bc/pull/22" + }, + { + "additions": 30, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "81eb6fba565695dfe054e0b3f651fa5fa089b605", + "body": "Reduce the number of iterations required for cases where the top-most BcDig of the divisor is a small value and there are lower non-zero BcDigs. This makes the performance of the division more even for all types of operands of a given length and speeds up \"make test\" by about 3% on my system. The worst case performance of the division is improved by about a factor of 20 (estimated, not measured) for operations like 1/1.000000001.", + "changedFiles": 1, + "closed": true, + "closedAt": "2019-06-06T15:34:13Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTM5OTU1Nw==", + "author": { + "login": "stesser" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "While here, fix calculation of vm->nchars in 2 places ...", + "createdAt": "2019-06-06T08:27:09Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/21#issuecomment-499399557", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTU0NzEzMA==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Rejected for reasons stated in an email.", + "createdAt": "2019-06-06T15:34:13Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/21#issuecomment-499547130", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-06-06T05:13:40Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T05:13:40Z", + "messageBody": "Since stdout is not affected by this debug print function, nchars\nshould not be modified, or printing of large numbers will be broken.", + "messageHeadline": "Resetting of nchars after printing to stderr corrupts the output", + "oid": "76794442357318437574ec8c0aa3f71903ec419a" + }, + { + "authoredDate": "2019-06-06T06:14:43Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T06:14:43Z", + "messageBody": "If the top-most BcDig contains a small value and there are lower\nnon-zero BcDigs, the integer divisor is incremented to prevent\ndivision results that do not fit into a BcDig (are > BC_BASE_POW).\n\nE.g. for 1000 / 1.1 the integer divisor will become 2 and the first\nestimate of the result will be 1000 / 2 = 500, giving a reminder of\n1000 - 500 * 1.1 = 450. The next estimate will be 700 = 500 + 450 / 2\nand so on with the reminder slowly decreasing in each iteration.\n\nSince the relative error due to the approximation of the full division\nby an integer division becomes significant for small integer divisors,\nit makes sense to extend the divisor if it i ssmall. In fact, it seems\nto pay off for all divisors that are < BC_BASE_POW / 10.", + "messageHeadline": "Fix pathological behavior in case integer is rounded up a lot", + "oid": "035ace7d24afd722ce9a3325c90213d36772e5bd" + }, + { + "authoredDate": "2019-06-06T06:25:29Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T06:25:29Z", + "messageBody": "", + "messageHeadline": "Merge branch 'div'", + "oid": "c1e655b2dd38ea27668b3a0c5b7c86ef06a8dd88" + }, + { + "authoredDate": "2019-06-06T08:21:51Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T08:21:51Z", + "messageBody": "If there was a new-line character in the string, then strrchr will\nreturn a pointer to that character. If the length of the string\nstarting at the new-line position is 1, then no text follows on the\nnew line and nchars should be set to 0,not 2.", + "messageHeadline": "Fix calculation of nchars", + "oid": "54e3cd86494fd1e2c817ea3fa49c357738da5f82" + }, + { + "authoredDate": "2019-06-06T11:32:50Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-06T11:32:50Z", + "messageBody": "This reverts commit 54e3cd86494fd1e2c817ea3fa49c357738da5f82.\n\nI had misread the code (thought the + 1 was outside the brackets).", + "messageHeadline": "Revert \"Fix calculation of nchars\"", + "oid": "210d9c5863215d0c371f0ec68a0fda2f601920f3" + } + ], + "createdAt": "2019-06-06T06:53:09Z", + "deletions": 8, + "files": [ + { + "path": "src/num.c", + "additions": 30, + "deletions": 8 + } + ], + "fullDatabaseId": "285665970", + "headRefName": "master", + "headRefOid": "210d9c5863215d0c371f0ec68a0fda2f601920f3", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjg1NjY1OTcw", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "DIRTY", + "mergeable": "CONFLICTING", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 21, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "Improve worst case behavior of the division", + "updatedAt": "2019-06-06T15:34:14Z", + "url": "https://github.com/gavinhoward/bc/pull/21" + }, + { + "additions": 91, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "7be2294e3a91ae4f93bf4db1888d89a6c0d4537b", + "body": "I had not fully understood the current division algorithm when I suggested to \"overshoot\" subtractions and to attempt convergence from both sides.\r\n\r\nAfter analysis of the current implementation I have noticed that it can be significantly simplified and at the same time sped-up (by a factor of about 2 in my tests). The run-time of \"make test\" is reduced by some 15% on my system.", + "changedFiles": 1, + "closed": true, + "closedAt": "2019-06-06T00:26:39Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTIyMjQ0Mw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=h1) Report\n> Merging [#20](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/7be2294e3a91ae4f93bf4db1888d89a6c0d4537b?src=pr&el=desc) will **not change** coverage.\n> The diff coverage is `100%`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #20 +/- ##\n=======================================\n Coverage 99.73% 99.73% \n=======================================\n Files 16 16 \n Lines 3405 3405 \n=======================================\n Hits 3396 3396 \n Misses 9 9\n```\n\n\n| [Impacted Files](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [src/num.c](https://codecov.io/gh/gavinhoward/bc/pull/20/diff?src=pr&el=tree#diff-c3JjL251bS5j) | `99.8% <100%> (ø)` | :arrow_up: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=footer). Last update [7be2294...45edd42](https://codecov.io/gh/gavinhoward/bc/pull/20?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2019-06-05T19:28:56Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/20#issuecomment-499222443", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5OTIzNzA4NA==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Can you send me your tests?", + "createdAt": "2019-06-05T20:12:45Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/20#issuecomment-499237084", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-05-20T11:00:48Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-20T11:00:48Z", + "messageBody": "…mod per BcDig\n\nIn the last iteration of the per BcDig print loop, acc is known to be less than\npow, therefore the last div and mod operations can be skipped, resulting in a\nspeed-up of about 2% in my tests.", + "messageHeadline": "Slightly speed up printing for the obase!=10 case by skipping one div…", + "oid": "b2c2fe4f75bff27e183db6e8b4211e8f602b0e68" + }, + { + "authoredDate": "2019-06-05T10:06:38Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-05T10:06:38Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of github.com:stesser/bc", + "oid": "caf977797a95fecc39e78b35ef964e69d7851e8a" + }, + { + "authoredDate": "2019-06-05T19:04:42Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-06-05T19:04:42Z", + "messageBody": "The run-time of \"make test\" is reduced by some 15% on my system.", + "messageHeadline": "Implement faster and simpler division algorithm", + "oid": "45edd42ef28c52287e664e2d00b5b7de31a30e22" + } + ], + "createdAt": "2019-06-05T19:25:44Z", + "deletions": 99, + "files": [ + { + "path": "src/num.c", + "additions": 91, + "deletions": 99 + } + ], + "fullDatabaseId": "285517299", + "headRefName": "master", + "headRefOid": "45edd42ef28c52287e664e2d00b5b7de31a30e22", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjg1NTE3Mjk5", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "8904602cd9be7d6433f9ed6c2caab0f9c745dd9c" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2019-06-06T00:26:39Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 20, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Speed up and simplify division", + "updatedAt": "2019-06-06T00:26:40Z", + "url": "https://github.com/gavinhoward/bc/pull/20" + }, + { + "additions": 10, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "e318529d852cee9ce40c06f1a91f0063d8e0bd62", + "body": "In the last iteration of the per BcDig print loop, \"acc\" is known to be less than \"pow\", therefore the last div and mod operations can be skipped, resulting in a speed-up of about 2% in my tests.", + "changedFiles": 1, + "closed": true, + "closedAt": "2019-05-20T14:08:11Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5Mzk1ODQwMw==", + "author": { + "login": "codecov" + }, + "authorAssociation": "NONE", + "body": "# [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=h1) Report\n> Merging [#19](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=desc) into [master](https://codecov.io/gh/gavinhoward/bc/commit/e318529d852cee9ce40c06f1a91f0063d8e0bd62?src=pr&el=desc) will **increase** coverage by `<.01%`.\n> The diff coverage is `100%`.\n\n[](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## master #19 +/- ##\n==========================================\n+ Coverage 99.88% 99.88% +<.01% \n==========================================\n Files 16 16 \n Lines 3409 3411 +2 \n==========================================\n+ Hits 3405 3407 +2 \n Misses 4 4\n```\n\n\n| [Impacted Files](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [src/num.c](https://codecov.io/gh/gavinhoward/bc/pull/19/diff?src=pr&el=tree#diff-c3JjL251bS5j) | `99.8% <100%> (ø)` | :arrow_up: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=footer). Last update [e318529...b2c2fe4](https://codecov.io/gh/gavinhoward/bc/pull/19?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", + "createdAt": "2019-05-20T12:05:10Z", + "includesCreatedEdit": true, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/19#issuecomment-493958403", + "viewerDidAuthor": false + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDQ5NDAwMjk1MQ==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Oh whoops. I did not notice this PR; I merged in the patch instead, though I did list you as the author of the commit. I hope that is okay.\r\n\r\nClosing since the code is already merged.", + "createdAt": "2019-05-20T14:08:11Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/19#issuecomment-494002951", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-05-20T11:00:48Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-20T11:00:48Z", + "messageBody": "…mod per BcDig\n\nIn the last iteration of the per BcDig print loop, acc is known to be less than\npow, therefore the last div and mod operations can be skipped, resulting in a\nspeed-up of about 2% in my tests.", + "messageHeadline": "Slightly speed up printing for the obase!=10 case by skipping one div…", + "oid": "b2c2fe4f75bff27e183db6e8b4211e8f602b0e68" + } + ], + "createdAt": "2019-05-20T12:00:46Z", + "deletions": 4, + "files": [ + { + "path": "src/num.c", + "additions": 10, + "deletions": 4 + } + ], + "fullDatabaseId": "280360533", + "headRefName": "d9", + "headRefOid": "b2c2fe4f75bff27e183db6e8b4211e8f602b0e68", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0MjgwMzYwNTMz", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "DIRTY", + "mergeable": "CONFLICTING", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 19, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "Slightly speed up printing for the obase!=10 case", + "updatedAt": "2019-06-02T10:54:35Z", + "url": "https://github.com/gavinhoward/bc/pull/19" + }, + { + "additions": 11813, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "master", + "baseRefOid": "b3ba59502ee5cc81e2019a724b94b648a35d7897", + "body": "All division and modulo test cases pass with this version.\r\n\r\nMaybe the scale could be reduced (for better performance) in parts of the algorithm, but for now the functionality is there. I have optimized the pow10 function by use of a look-up table. This table will be cached and the indexing faster than repetitive multiplication, IMHO. (Should be tested, but will not be significant in the overall picture, I guess.)\r\n\r\nI have introduced a function that rounds to a given precision. This was necessary to get the division match previous results to the last relevant digit. Just cutting off excess digits gives small errors in division and modulo results.\r\n\r\nAnother new function normalizes its argument to make len == rdx (i.e. to give a value strictly less than 1 but without 0 in the uppermost BcDig of num[]). This was required for the division, which operates on \"normalized\" values and adjusts the position of the decimal point as a final step.\r\n\r\nNeither of these functions has been added to num.h, since I was not sure about your policy with regard to having all static functions in num.c declared therein).", + "changedFiles": 17, + "closed": true, + "closedAt": "2019-05-06T13:42:00Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ4NzU3MzUyNA==", + "author": { + "login": "stesser" + }, + "authorAssociation": "CONTRIBUTOR", + "body": "The power has been fixed and passes all tests.\r\nThe sqrt operator gives results that do not pass the tests but differ only in the number of decimals or the precision of the calculation.", + "createdAt": "2019-04-29T13:11:00Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/18#issuecomment-487573524", + "viewerDidAuthor": false + } + ], + "commits": [ + { + "authoredDate": "2019-04-19T08:06:46Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-19T08:06:46Z", + "messageBody": "…ot found.", + "messageHeadline": "The test should use the same file name as is created if the file is n…", + "oid": "d9bda13740c6d4f67c1d69955a4ea8e3477bad4f" + }, + { + "authoredDate": "2019-04-19T14:09:03Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-19T14:09:03Z", + "messageBody": "The output has been verified to be identical to that of the C language\nversion for all files in this project by comparing the resulting .o files.", + "messageHeadline": "Provide shell version of strgen.c to allow use without compilation.", + "oid": "7d9fb3e6ffb7008afec4c7168498751366213b0f" + }, + { + "authoredDate": "2019-04-19T14:11:23Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-19T14:11:23Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "fddcd0f53021d8f3164f5618ba952ab36932d8fc" + }, + { + "authoredDate": "2019-04-19T18:39:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-19T18:39:00Z", + "messageBody": "…nature.", + "messageHeadline": "Change parameter from char* to char** as required by the function sig…", + "oid": "a010b3e82408024f12e34030591349c4a344465b" + }, + { + "authoredDate": "2019-04-19T18:41:07Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-19T18:41:07Z", + "messageBody": "", + "messageHeadline": "Fix test to work if empty or null string is passed.", + "oid": "22fd1e9277a34ead069e9dd64942ed3cd55c2ac6" + }, + { + "authoredDate": "2019-04-20T08:34:13Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T08:34:13Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "461c523fcbb8ff4c758ddb6ba2d9cfcf71a0a412" + }, + { + "authoredDate": "2019-04-20T08:35:20Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T08:35:20Z", + "messageBody": "…e was broken,", + "messageHeadline": "Change reference to v.v to use bc_vec_item(&v, 0) - my previous chang…", + "oid": "52b52a81ea9ea993d9835900398ee48d6e1dc1ad" + }, + { + "authoredDate": "2019-04-20T08:37:07Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T08:37:07Z", + "messageBody": "…nset", + "messageHeadline": "Split test into two parts to prevent parse error if the variable is u…", + "oid": "04ddff0bd1de2bde9c1af167cd59488a8fa3800c" + }, + { + "authoredDate": "2019-04-20T15:11:30Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T15:11:30Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "eb62a6521bcdaea48a8a69a346facf14a46604be" + }, + { + "authoredDate": "2019-04-20T16:14:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T16:14:00Z", + "messageBody": "", + "messageHeadline": "Add information about recently added message catalogs.", + "oid": "b2950329c49de32e8dccf39ad3a64c3d210c9a46" + }, + { + "authoredDate": "2019-04-20T16:16:06Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T16:16:06Z", + "messageBody": "", + "messageHeadline": "Add quotes around fr_CA and fr_CH.", + "oid": "eaf8bc5fa067eb2c55c96d14ad21ba952e83f6c5" + }, + { + "authoredDate": "2019-04-20T16:17:04Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T16:17:04Z", + "messageBody": "", + "messageHeadline": "Fix quotes around fr_CA and fr_CH.", + "oid": "7c87d5892205451fcabb38edf42ca4c948427dd7" + }, + { + "authoredDate": "2019-04-20T16:18:07Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-20T16:18:07Z", + "messageBody": "Anyway, I'm no native speaker of English and therefore the change is only\na crude example for what might be added ... ;-)", + "messageHeadline": "I think \"for\" is better than \"in\", here.", + "oid": "ecd6481f5aeabf178cc0fc7614840f08d74473b0" + }, + { + "authoredDate": "2019-04-24T09:16:49Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-24T09:16:49Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' of https://github.com/gavinhoward/bc", + "oid": "004ad884ed95213a1a14cc7a5b05353ff91fcceb" + }, + { + "authoredDate": "2019-04-24T21:28:32Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-24T21:28:32Z", + "messageBody": "…esent numbers\n\nThis code has been tested with add/sub, multiplicaton and power of integer values.\nNo tests have been performed for division and square root, yet.\n\nNumbers with fractional parts are not supported due to the missing scaling of the\n\"scale\" parameter.", + "messageHeadline": "Initial support for 32 bit integers instead of decimal digits to repr…", + "oid": "a299ffc466db2360d0cd21f8e872a4b9ccac8f0b" + }, + { + "authoredDate": "2019-04-24T23:23:08Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Eßer" + } + ], + "committedDate": "2019-04-24T23:23:08Z", + "messageBody": "This patch starts a branch exploring the possibility of using a more\npacked representation of digits in BcNum's. I am not sure this will work\nout, but it can't hurt to try, especially since Stefan was so kind to\ncome up with a patch and send it.\n\nAs of right now, the things that are known to be broken:\n\n* Printing decimal numbers\n* Power (seg fault)", + "messageHeadline": "Commit an adjusted patch sent to me by Stefan Eßer", + "oid": "4b111c28c02ac4c999ad62de5a448eb21e01489b" + }, + { + "authoredDate": "2019-04-24T23:31:23Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-24T23:31:23Z", + "messageBody": "", + "messageHeadline": "Attempt to make Stefan's work more portable", + "oid": "0700efc9bb2aad8921d035f18bb30e4e211e0115" + }, + { + "authoredDate": "2019-04-24T23:33:48Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-24T23:33:48Z", + "messageBody": "", + "messageHeadline": "Fix a bit of code that is not portable to 8-bit arches", + "oid": "d7e4d6e8e6e0c46c3ab378c8066ceedf02fe2784" + }, + { + "authoredDate": "2019-04-25T04:33:10Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T04:33:10Z", + "messageBody": "… of BcDig", + "messageHeadline": "Introduce 3 function to perform memcpy, memmove, and memset on arrays…", + "oid": "394a516fb6d95a9314783e4b920f9078b8d6217b" + }, + { + "authoredDate": "2019-04-25T05:05:24Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T05:05:24Z", + "messageBody": "", + "messageHeadline": "Modify malloc and realloc functions to operate on BcDig arrays", + "oid": "5fd43a372b887cae774309dae0482410eaa64344" + }, + { + "authoredDate": "2019-04-25T05:14:54Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T05:14:54Z", + "messageBody": "…ctions for use in vector.c", + "messageHeadline": "Add BcDig alloc functions to header and re-enable the plain alloc fun…", + "oid": "ca5a74eedef9edea724f90c386cf13322a972511" + }, + { + "authoredDate": "2019-04-25T05:42:03Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T05:42:03Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "14eff4647371265957e125e44ca8666cc845b54f" + }, + { + "authoredDate": "2019-04-25T05:56:10Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T05:56:10Z", + "messageBody": "", + "messageHeadline": "Use bc_num_set instead of memset in merged code", + "oid": "887d6b9b2fb148490d373f60cc13f42fb3a47102" + }, + { + "authoredDate": "2019-04-25T06:01:03Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T06:01:03Z", + "messageBody": "", + "messageHeadline": "Allow passing of -DBC_DEBUG_CODE on the command line", + "oid": "010dd2a01af69462ee1c94053e9f82cde65f171d" + }, + { + "authoredDate": "2019-04-25T06:09:13Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T06:09:13Z", + "messageBody": "", + "messageHeadline": "Remove duplicate definitioon of DUMP_NUM", + "oid": "a3430556302146f917be5266b7c6021ecd2e1133" + }, + { + "authoredDate": "2019-04-25T09:25:17Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T09:25:17Z", + "messageBody": "", + "messageHeadline": "Remove obsolete local variables", + "oid": "bf3b1b206e6e6a88c7ffc6ca7e10388f3fb1eb4a" + }, + { + "authoredDate": "2019-04-25T09:50:39Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T09:50:39Z", + "messageBody": "", + "messageHeadline": "Fix printing of the decimal point (occured multiple times)", + "oid": "610a8ee9e89626f9789ba63a3e5692adc19a46ef" + }, + { + "authoredDate": "2019-04-25T10:25:15Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-25T10:25:15Z", + "messageBody": "", + "messageHeadline": "Suppress printing of trailing zeroes of fractional parts of a result", + "oid": "0da1775703abdbd337f024a4b46208976b08508a" + }, + { + "authoredDate": "2019-04-25T17:33:54Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-25T17:33:54Z", + "messageBody": "", + "messageHeadline": "Fix a problem I introduced", + "oid": "b53a994e74fd2f226bac7756063b557dfd03f172" + }, + { + "authoredDate": "2019-04-25T21:18:49Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin D. Howard" + } + ], + "committedDate": "2019-04-25T21:18:49Z", + "messageBody": "A number of fixes and improvements ...", + "messageHeadline": "Merge pull request #15 from stesser/d9", + "oid": "7daf7e6cf26a6b3b11eeddd9d6bcc38bd52da3dc" + }, + { + "authoredDate": "2019-04-26T01:35:41Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T01:35:41Z", + "messageBody": "", + "messageHeadline": "Fix some style", + "oid": "af107d94c9352b37d4bf31815663fd68effa55b6" + }, + { + "authoredDate": "2019-04-26T01:43:49Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T01:43:49Z", + "messageBody": "", + "messageHeadline": "Fix some more style", + "oid": "f49fdaa396f2cda25379b056cf7ca9fffb0a68d6" + }, + { + "authoredDate": "2019-04-26T02:12:19Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T02:12:19Z", + "messageBody": "", + "messageHeadline": "Make some changes and mark functions that need work", + "oid": "fcf290110df0d7b09b5f89798888f05b8b371484" + }, + { + "authoredDate": "2019-04-26T03:13:54Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T03:13:54Z", + "messageBody": "There is still one bug: it allows in an extra 0 in the most significant\nspot if there is one, but it does produce the right numbers.", + "messageHeadline": "Make decimal parsing work", + "oid": "d43ec37d48c69660ba7098c88a8ef3002a49636d" + }, + { + "authoredDate": "2019-04-26T14:48:19Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T14:48:19Z", + "messageBody": "", + "messageHeadline": "Fix the definitions for BcDig", + "oid": "2eaeebffdce7fcd52b3a62d1537002b3580b6e28" + }, + { + "authoredDate": "2019-04-26T14:48:44Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T14:48:44Z", + "messageBody": "", + "messageHeadline": "Add more decimal tests", + "oid": "a0e90f3e79ef5b619b801753877d94992f6bdc95" + }, + { + "authoredDate": "2019-04-26T14:49:05Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T14:49:05Z", + "messageBody": "", + "messageHeadline": "Fix a warning", + "oid": "f196fbe426ea69bcf4fb3046cc4fedffd7fc54b7" + }, + { + "authoredDate": "2019-04-26T14:49:17Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T14:49:17Z", + "messageBody": "", + "messageHeadline": "Make parsing decimal work", + "oid": "3b60abb028266f4ff0e1aa3bdf42f440eae646c5" + }, + { + "authoredDate": "2019-04-26T15:46:29Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T15:46:29Z", + "messageBody": "", + "messageHeadline": "Fix a test result file", + "oid": "de5fcf3618c6a9ca342ed749459f395783de28d7" + }, + { + "authoredDate": "2019-04-26T15:47:50Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T15:47:50Z", + "messageBody": "", + "messageHeadline": "Fix another bug in the parse decimal procedure", + "oid": "6076dbb54bf4503abefeab22ee2a3edf6075e2e6" + }, + { + "authoredDate": "2019-04-26T15:48:12Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T15:48:25Z", + "messageBody": "This still uses an idea from Stefan Eßer and some code, mainly the\nbuffer for calculating the numbers. Other than that, I did it my way.\n\nThe reason for this is because I *really* want to make sure the radix is\non a BcDig boundary.", + "messageHeadline": "Make printing decimal numbers work", + "oid": "51cd7ea27608359bf4298766cbf1579da9c35242" + }, + { + "authoredDate": "2019-04-26T15:50:35Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T15:50:35Z", + "messageBody": "", + "messageHeadline": "Remove some TODO comments that are done", + "oid": "9cf865f8396f76015b63d5f719e1ba4f0504a629" + }, + { + "authoredDate": "2019-04-26T16:07:21Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T16:07:21Z", + "messageBody": "", + "messageHeadline": "Make add work", + "oid": "fba50a2a7d78923ffc98e593bff06913f283b9af" + }, + { + "authoredDate": "2019-04-26T16:07:45Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T16:07:45Z", + "messageBody": "", + "messageHeadline": "Add a useful #define", + "oid": "1c1697cdc5724c5e2a2969e59fb17059d84b2272" + }, + { + "authoredDate": "2019-04-26T16:13:45Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T16:13:45Z", + "messageBody": "", + "messageHeadline": "Make subtract work", + "oid": "e6f326ed2d30c6814fed8a26d57ac6a5847587c6" + }, + { + "authoredDate": "2019-04-26T16:17:02Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T16:17:02Z", + "messageBody": "", + "messageHeadline": "Get rid of some compiler warnings", + "oid": "6fccd22b21b7f8cbf7ab2b48af912dd1ffb8bf8c" + }, + { + "authoredDate": "2019-04-26T16:17:57Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T16:17:57Z", + "messageBody": "", + "messageHeadline": "Remove some done TODO comments", + "oid": "e2e67ecbda93721e0820a01ce4e5ce660010f7bc" + }, + { + "authoredDate": "2019-04-26T16:40:02Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T16:40:02Z", + "messageBody": "", + "messageHeadline": "Fix some compiler warnings", + "oid": "c4783ac369bf46f1fbc894979fee2040e29008eb" + }, + { + "authoredDate": "2019-04-26T20:32:07Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T20:32:07Z", + "messageBody": "", + "messageHeadline": "Some general cleanup on math", + "oid": "971a26711ea6c03cbd23fd22bc93d03ead700f14" + }, + { + "authoredDate": "2019-04-26T20:32:55Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T20:32:55Z", + "messageBody": "", + "messageHeadline": "Make shift work", + "oid": "b155866dbb923e50d104ec210d095e14083fa372" + }, + { + "authoredDate": "2019-04-26T20:33:43Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T20:33:43Z", + "messageBody": "", + "messageHeadline": "Remove a compiler warning", + "oid": "da6b543c1501f01e4b781c7b24d16b950cbf0bd1" + }, + { + "authoredDate": "2019-04-26T20:46:52Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T20:46:52Z", + "messageBody": "", + "messageHeadline": "Fix truncate and extend", + "oid": "c9bef2d421dda2b0796a9ccb6198fe98ff56dd34" + }, + { + "authoredDate": "2019-04-26T21:39:46Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T21:39:46Z", + "messageBody": "I don't think it is done, however; power still needs to be tested.", + "messageHeadline": "Make multiply pass its tests", + "oid": "48a0e4793be1f58638be5c1b8820944f92afc498" + }, + { + "authoredDate": "2019-04-26T21:41:15Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T21:41:15Z", + "messageBody": "", + "messageHeadline": "Remove some TODO comments that are done", + "oid": "74b16c3bc8ec25b8c1e562ce04d68045692e1864" + }, + { + "authoredDate": "2019-04-26T21:47:25Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T21:47:25Z", + "messageBody": "", + "messageHeadline": "Remove more TODO comments that are done", + "oid": "a3f260c53adfcdd0fcd01404e08260b65c87e1e7" + }, + { + "authoredDate": "2019-04-26T21:59:15Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T21:59:15Z", + "messageBody": "", + "messageHeadline": "Clean up some style", + "oid": "404ece77d2e3e5009511e77a5f9e56d4e1afb3f7" + }, + { + "authoredDate": "2019-04-26T21:59:33Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-26T21:59:33Z", + "messageBody": "", + "messageHeadline": "Fix various small issues", + "oid": "774454354a9354023b6fb7e3aa396b269a5562f7" + }, + { + "authoredDate": "2019-04-26T23:29:01Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-26T23:29:01Z", + "messageBody": "", + "messageHeadline": "Iterative division based on Newton Raphson algorithm", + "oid": "193f8529ad93306e39914ca7a2aa877669383f6f" + }, + { + "authoredDate": "2019-04-27T01:31:31Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T01:31:31Z", + "messageBody": "", + "messageHeadline": "Change some code back to what it was (with adjustments)", + "oid": "c25fd61637390cc993c91258dda2c01404b37147" + }, + { + "authoredDate": "2019-04-27T07:16:26Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T07:16:26Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "87c27b5715646eb4deec4a6795c17b4c5facc408" + }, + { + "authoredDate": "2019-04-27T08:39:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T08:39:00Z", + "messageBody": "", + "messageHeadline": "Fix mismerge regarding nBcDig vs. places", + "oid": "70f118574077b6e61cae08bd576ca7fccc167786" + }, + { + "authoredDate": "2019-04-27T08:40:14Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T08:40:14Z", + "messageBody": "…e current rdx", + "messageHeadline": "Fix segmentation fault that occurs if the target rdx is lower than th…", + "oid": "6189d95036f123d48d505bf4d4a49ba11ca30aee" + }, + { + "authoredDate": "2019-04-27T08:42:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T08:42:00Z", + "messageBody": "", + "messageHeadline": "Add simple debug print macro", + "oid": "cdda6e99974b8f9551ad1bc184b3c735afac6f4a" + }, + { + "authoredDate": "2019-04-27T11:47:09Z", + "authors": [ + { + "email": "root@StefanEsser.freebsd.org", + "id": "", + "login": "", + "name": "Charlie Root" + } + ], + "committedDate": "2019-04-27T11:47:09Z", + "messageBody": "", + "messageHeadline": "Fix calculation of scale in multiplications", + "oid": "ac244bdb3ebe6e6a2693f3d5c2ae13d7723b3517" + }, + { + "authoredDate": "2019-04-27T12:36:28Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T12:36:28Z", + "messageBody": "", + "messageHeadline": "Fix seg fault in bc_num_shiftLeft()", + "oid": "b1d29c24cb4bfa07f3bc3e665811ab8b100b0b5e" + }, + { + "authoredDate": "2019-04-27T12:40:58Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin D. Howard" + } + ], + "committedDate": "2019-04-27T12:40:58Z", + "messageBody": "Newton-Raphson based division", + "messageHeadline": "Merge pull request #16 from stesser/d9", + "oid": "769fcbed7a3a0005a60254c0ed5203406b533ae3" + }, + { + "authoredDate": "2019-04-27T12:41:58Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T12:41:58Z", + "messageBody": "", + "messageHeadline": "Fix some style", + "oid": "2e736dee1ae4ddadbe4305296fc98ecc9a917e45" + }, + { + "authoredDate": "2019-04-27T12:43:57Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T12:43:57Z", + "messageBody": "", + "messageHeadline": "Fix the multiplication scale back", + "oid": "cf9f246919f39e50c911c6552d9b16f05a0fc2cf" + }, + { + "authoredDate": "2019-04-27T12:51:33Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T12:51:33Z", + "messageBody": "", + "messageHeadline": "Merge branch 'master' into base9", + "oid": "5de0bd695347a0ef5bde2d526472a2a3ba6d2a17" + }, + { + "authoredDate": "2019-04-27T13:26:35Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:26:35Z", + "messageBody": "", + "messageHeadline": "Add another print debug function", + "oid": "5b40e402dc37897052129db14441695a25bd86f8" + }, + { + "authoredDate": "2019-04-27T13:28:24Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:28:24Z", + "messageBody": "", + "messageHeadline": "Change bc_num_printDigs() a bit", + "oid": "37118f4c4f26f64bb4becb0caa55149659ca8ac3" + }, + { + "authoredDate": "2019-04-27T13:28:45Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:28:45Z", + "messageBody": "", + "messageHeadline": "Fix a divide by 0", + "oid": "edd9d9dd1459746a4bb2012194a3d3c831414c68" + }, + { + "authoredDate": "2019-04-27T13:28:56Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:28:56Z", + "messageBody": "", + "messageHeadline": "Fix some style", + "oid": "034b5b9e16e57becf5121ed60ae1dac8b8dc4ece" + }, + { + "authoredDate": "2019-04-27T13:33:16Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:33:16Z", + "messageBody": "", + "messageHeadline": "Fix more style", + "oid": "c88e5231008923290d1ead34ff987fb2e17043c5" + }, + { + "authoredDate": "2019-04-27T13:34:13Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:34:13Z", + "messageBody": "", + "messageHeadline": "Fix even more style", + "oid": "20afaeab2ffca9a32e1fa65feeb33050d9c4e204" + }, + { + "authoredDate": "2019-04-27T13:53:23Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:53:23Z", + "messageBody": "", + "messageHeadline": "Move an item", + "oid": "948b639a0674f3ce836fe3ba843e2253ef798cd8" + }, + { + "authoredDate": "2019-04-27T13:53:36Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T13:53:36Z", + "messageBody": "", + "messageHeadline": "Remove two unused functions", + "oid": "2316cb42fdff7b768debf3d9c65b73c9c8fc6137" + }, + { + "authoredDate": "2019-04-27T14:09:32Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T14:09:32Z", + "messageBody": "", + "messageHeadline": "Add length and scale tests", + "oid": "805328cdb9342eb249dc398b4569190d7ca78747" + }, + { + "authoredDate": "2019-04-27T14:30:10Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-27T14:30:10Z", + "messageBody": "", + "messageHeadline": "Make length work", + "oid": "b41483b364bf8fe8841e8875febeb4d58743e32f" + }, + { + "authoredDate": "2019-04-27T21:33:08Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:33:08Z", + "messageBody": "…upstream changes", + "messageHeadline": "Updated implementation of Newton-Raphson division algorithm to match …", + "oid": "b5aeb445a556de9d9b41a7b2d196b59bcaca90ae" + }, + { + "authoredDate": "2019-04-27T21:41:21Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:41:21Z", + "messageBody": "", + "messageHeadline": "Small optimization of the division function", + "oid": "6e129fc621b358d219036e6e4d01f572adb133ff" + }, + { + "authoredDate": "2019-04-27T21:43:02Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:43:02Z", + "messageBody": "", + "messageHeadline": "Small optimization of the division function", + "oid": "217379d6199e6bb8b586716b382731882c6096fe" + }, + { + "authoredDate": "2019-04-27T21:45:48Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:45:48Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "45a56123c3c6ede3cf157419e56427a01ff48e2a" + }, + { + "authoredDate": "2019-04-28T00:04:02Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Eßer" + } + ], + "committedDate": "2019-04-28T00:04:02Z", + "messageBody": "He says that he made division work. Cool.", + "messageHeadline": "Import more code from Stefan", + "oid": "daaaaa795095115e813ad7c7afbae0937a046246" + }, + { + "authoredDate": "2019-04-28T10:30:47Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T10:30:47Z", + "messageBody": "I had missed to set scsale values in the parameters passed in by the divide\nfunction and thus got results that had 0 fractional digits.", + "messageHeadline": "Undo change to scale calculation in bc_num_m", + "oid": "d793fa5c3a03370627e45d5f03968039b10f34c6" + }, + { + "authoredDate": "2019-04-28T12:58:58Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T12:58:58Z", + "messageBody": "This function will be used in the division algorithm.", + "messageHeadline": "Add function to round number to a given number of decimal places", + "oid": "db970636e68f62f41c17c6053e5ccc242161e5a0" + }, + { + "authoredDate": "2019-04-28T13:50:14Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T13:50:14Z", + "messageBody": "I had a local change that made bc_num_invert implicily extend this variable,\nbut noticed with that change reverted that the precision of the calculation\nwas reduced to BC_BASE_POWER decimals, leading to imprecise division results.", + "messageHeadline": "Fix division: Extend variable to required number of decimal places", + "oid": "70997150a28b4df49639924431cb0706a403207f" + }, + { + "authoredDate": "2019-04-28T15:21:34Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T15:21:34Z", + "messageBody": "For now, keep the Newton-Raphson algorithm in an #if 0 block for reference and to\nallow to compare them in further tests.\n\nI have noticed segmentation faults when dividing very large numbers, which probably\nare due to missing calls of bc_num_extend() for destination variables of arithmetic\noperations. I'll try to fix the length calculations, but I do not know the exact\nsemantics of a number of low level calls.", + "messageHeadline": "Replace Newton-Raphson algorithm by Goldschmidt algorithm.", + "oid": "154b473a9c65f081d673556ce163c50754cf75de" + }, + { + "authoredDate": "2019-04-28T18:19:51Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T18:19:51Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "307ce024f26a0433460a84ad5ad22bd3ac6f094f" + }, + { + "authoredDate": "2019-04-28T19:32:13Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T19:32:13Z", + "messageBody": "", + "messageHeadline": "Optimize bc_num_pow10", + "oid": "72109f49b8cd1e877c4b4252652d73f21d0ad689" + }, + { + "authoredDate": "2019-04-28T22:59:32Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T22:59:32Z", + "messageBody": "This makes bc complete the tests without crash, but with a result that\nhas too few digits printed. This will need to be debugged next ...", + "messageHeadline": "Fix scale parameters and remove bogus bc_num_extend calls", + "oid": "4c1e43af931618094a761dff7d1e4b0374e7576d" + }, + { + "authoredDate": "2019-04-29T10:56:32Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T10:56:32Z", + "messageBody": "Now all division and multiplication tests pass.", + "messageHeadline": "Fix position of decimal point when dividing by a very small number.", + "oid": "40b53d23eb92b69a9d079ead59def298cb089370" + }, + { + "authoredDate": "2019-04-29T11:00:23Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T11:00:23Z", + "messageBody": "", + "messageHeadline": "Improve format of dumped BcNum values in debug traces", + "oid": "33a1c689f4d5cf2026c92a954c36a50f6e772c8e" + }, + { + "authoredDate": "2019-04-29T12:24:31Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T12:24:31Z", + "messageBody": "There were 4 places where \"rdx\" had to be replaced by \"scale\".\nThis version passes all tests.", + "messageHeadline": "Fix \"power\" operator (bc_num_p).", + "oid": "c66e44871c84fc81a3595d21d9174082b62da1d3" + }, + { + "authoredDate": "2019-04-29T13:06:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T13:06:00Z", + "messageBody": "Results seem to be correct except for the number of decimals calculated and returned.\nThe tests still fail for that reason, but show results that are near to what is expected.", + "messageHeadline": "Mostly fix the sqrt operation.", + "oid": "627693667ff6b0bc70f4a636bd282423af74df62" + }, + { + "authoredDate": "2019-04-29T13:36:46Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-29T13:36:46Z", + "messageBody": "", + "messageHeadline": "Start building Goldschmidt", + "oid": "fdbcd063e2eab65ca07be9f62bdd10cc965a220d" + }, + { + "authoredDate": "2019-04-29T13:56:04Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-29T13:56:04Z", + "messageBody": "", + "messageHeadline": "Add a useful function", + "oid": "08f7856b38ca730b120e450dea482d0e18fd2232" + }, + { + "authoredDate": "2019-04-29T15:10:43Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T15:10:43Z", + "messageBody": "…orithm\n\nIntroduce and use a function bc_num_int_digits() that counts the number of digits\nto the left of the decimalpoint.", + "messageHeadline": "Fix and improve the calculation of the initial value for the sqrt alg…", + "oid": "cc7cd938dadfd8ecbaf61e79f7fba8060ff7194c" + }, + { + "authoredDate": "2019-04-29T16:14:21Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-29T16:14:21Z", + "messageBody": "There are still some cases that fail, but this is mostly working, and I\nwould like to save my progress.", + "messageHeadline": "Make most of divide work", + "oid": "36ec987c22af5d7ccc3b8aef0fe9758ce85c56a0" + }, + { + "authoredDate": "2019-04-29T16:28:33Z", + "authors": [ + { + "email": "yzena.tech@gmail.com", + "id": "", + "login": "", + "name": "Gavin Howard" + } + ], + "committedDate": "2019-04-29T16:28:33Z", + "messageBody": "", + "messageHeadline": "Make divide work", + "oid": "cef0397c810152aed4116fdc56dcf920d20eda32" + } + ], + "createdAt": "2019-04-29T11:21:03Z", + "deletions": 234, + "files": [ + { + "path": "include/num.h", + "additions": 71, + "deletions": 4 + }, + { + "path": "include/status.h", + "additions": 2, + "deletions": 0 + }, + { + "path": "include/vm.h", + "additions": 0, + "deletions": 2 + }, + { + "path": "src/num.c", + "additions": 838, + "deletions": 223 + }, + { + "path": "src/program.c", + "additions": 2, + "deletions": 2 + }, + { + "path": "tests/all.sh", + "additions": 1, + "deletions": 1 + }, + { + "path": "tests/bc/all.txt", + "additions": 4, + "deletions": 2 + }, + { + "path": "tests/bc/decimal.txt", + "additions": 23, + "deletions": 0 + }, + { + "path": "tests/bc/decimal_results.txt", + "additions": 23, + "deletions": 0 + }, + { + "path": "tests/bc/divide.txt", + "additions": 31, + "deletions": 0 + }, + { + "path": "tests/bc/divide_results.txt", + "additions": 30, + "deletions": 0 + }, + { + "path": "tests/bc/length.txt", + "additions": 59, + "deletions": 0 + }, + { + "path": "tests/bc/length_results.txt", + "additions": 57, + "deletions": 0 + }, + { + "path": "tests/bc/scale.txt", + "additions": 56, + "deletions": 0 + }, + { + "path": "tests/bc/scale_results.txt", + "additions": 56, + "deletions": 0 + }, + { + "path": "tests/bc/shift.txt", + "additions": 5280, + "deletions": 0 + }, + { + "path": "tests/bc/shift_results.txt", + "additions": 5280, + "deletions": 0 + } + ], + "fullDatabaseId": "274334078", + "headRefName": "d9", + "headRefOid": "914a7f66807b3567fa438c8d668a040e9d2bcc4a", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjc0MzM0MDc4", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "914a7f66807b3567fa438c8d668a040e9d2bcc4a" + }, + "mergeStateStatus": "UNKNOWN", + "mergeable": "UNKNOWN", + "mergedAt": "2019-05-06T13:42:00Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 18, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Division and modulo pass all tests", + "updatedAt": "2019-05-06T13:42:00Z", + "url": "https://github.com/gavinhoward/bc/pull/18" + }, + { + "additions": 295, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "base9", + "baseRefOid": "e396dff5929071da830a84b64405f7a7c8e0113e", + "body": "I'm still not sure about correct scale values and situations in which bc_num_extend must be called to prepare a BcNum that is to receive the result of an arithmetic operation. This leads to overflow for large values (the algorithm is essentially correct, but variables need to be extended in some cases).", + "changedFiles": 4, + "closed": true, + "closedAt": "2019-05-06T13:42:50Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ4NzM5MDI1OA==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "How does this new algorithm compare to Newton-Raphson performance-wise?", + "createdAt": "2019-04-28T15:38:21Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/17#issuecomment-487390258", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDQ4NzQwNzQ5NA==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Also, would it be possible for you to fix the crashes on both algorithms? The test suite crashes on both. It would also be nice if you could put them in a #if 0 #else #endif set so I can test the changes and see which one is faster. Thank you.", + "createdAt": "2019-04-28T19:14:59Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/17#issuecomment-487407494", + "viewerDidAuthor": true + }, + { + "id": "MDEyOklzc3VlQ29tbWVudDQ4OTYyNTA2NA==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Closed by manually merging.", + "createdAt": "2019-05-06T13:42:50Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/17#issuecomment-489625064", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-04-27T21:33:08Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:33:08Z", + "messageBody": "…upstream changes", + "messageHeadline": "Updated implementation of Newton-Raphson division algorithm to match …", + "oid": "b5aeb445a556de9d9b41a7b2d196b59bcaca90ae" + }, + { + "authoredDate": "2019-04-27T21:41:21Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:41:21Z", + "messageBody": "", + "messageHeadline": "Small optimization of the division function", + "oid": "6e129fc621b358d219036e6e4d01f572adb133ff" + }, + { + "authoredDate": "2019-04-27T21:43:02Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:43:02Z", + "messageBody": "", + "messageHeadline": "Small optimization of the division function", + "oid": "217379d6199e6bb8b586716b382731882c6096fe" + }, + { + "authoredDate": "2019-04-27T21:45:48Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T21:45:48Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "45a56123c3c6ede3cf157419e56427a01ff48e2a" + }, + { + "authoredDate": "2019-04-28T10:30:47Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T10:30:47Z", + "messageBody": "I had missed to set scsale values in the parameters passed in by the divide\nfunction and thus got results that had 0 fractional digits.", + "messageHeadline": "Undo change to scale calculation in bc_num_m", + "oid": "d793fa5c3a03370627e45d5f03968039b10f34c6" + }, + { + "authoredDate": "2019-04-28T12:58:58Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T12:58:58Z", + "messageBody": "This function will be used in the division algorithm.", + "messageHeadline": "Add function to round number to a given number of decimal places", + "oid": "db970636e68f62f41c17c6053e5ccc242161e5a0" + }, + { + "authoredDate": "2019-04-28T13:50:14Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T13:50:14Z", + "messageBody": "I had a local change that made bc_num_invert implicily extend this variable,\nbut noticed with that change reverted that the precision of the calculation\nwas reduced to BC_BASE_POWER decimals, leading to imprecise division results.", + "messageHeadline": "Fix division: Extend variable to required number of decimal places", + "oid": "70997150a28b4df49639924431cb0706a403207f" + }, + { + "authoredDate": "2019-04-28T15:21:34Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T15:21:34Z", + "messageBody": "For now, keep the Newton-Raphson algorithm in an #if 0 block for reference and to\nallow to compare them in further tests.\n\nI have noticed segmentation faults when dividing very large numbers, which probably\nare due to missing calls of bc_num_extend() for destination variables of arithmetic\noperations. I'll try to fix the length calculations, but I do not know the exact\nsemantics of a number of low level calls.", + "messageHeadline": "Replace Newton-Raphson algorithm by Goldschmidt algorithm.", + "oid": "154b473a9c65f081d673556ce163c50754cf75de" + }, + { + "authoredDate": "2019-04-28T18:19:51Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T18:19:51Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "307ce024f26a0433460a84ad5ad22bd3ac6f094f" + }, + { + "authoredDate": "2019-04-28T19:32:13Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T19:32:13Z", + "messageBody": "", + "messageHeadline": "Optimize bc_num_pow10", + "oid": "72109f49b8cd1e877c4b4252652d73f21d0ad689" + }, + { + "authoredDate": "2019-04-28T22:59:32Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-28T22:59:32Z", + "messageBody": "This makes bc complete the tests without crash, but with a result that\nhas too few digits printed. This will need to be debugged next ...", + "messageHeadline": "Fix scale parameters and remove bogus bc_num_extend calls", + "oid": "4c1e43af931618094a761dff7d1e4b0374e7576d" + }, + { + "authoredDate": "2019-04-29T10:56:32Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T10:56:32Z", + "messageBody": "Now all division and multiplication tests pass.", + "messageHeadline": "Fix position of decimal point when dividing by a very small number.", + "oid": "40b53d23eb92b69a9d079ead59def298cb089370" + }, + { + "authoredDate": "2019-04-29T11:00:23Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T11:00:23Z", + "messageBody": "", + "messageHeadline": "Improve format of dumped BcNum values in debug traces", + "oid": "33a1c689f4d5cf2026c92a954c36a50f6e772c8e" + }, + { + "authoredDate": "2019-04-29T12:24:31Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T12:24:31Z", + "messageBody": "There were 4 places where \"rdx\" had to be replaced by \"scale\".\nThis version passes all tests.", + "messageHeadline": "Fix \"power\" operator (bc_num_p).", + "oid": "c66e44871c84fc81a3595d21d9174082b62da1d3" + }, + { + "authoredDate": "2019-04-29T13:06:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T13:06:00Z", + "messageBody": "Results seem to be correct except for the number of decimals calculated and returned.\nThe tests still fail for that reason, but show results that are near to what is expected.", + "messageHeadline": "Mostly fix the sqrt operation.", + "oid": "627693667ff6b0bc70f4a636bd282423af74df62" + }, + { + "authoredDate": "2019-04-29T15:10:43Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T15:10:43Z", + "messageBody": "…orithm\n\nIntroduce and use a function bc_num_int_digits() that counts the number of digits\nto the left of the decimalpoint.", + "messageHeadline": "Fix and improve the calculation of the initial value for the sqrt alg…", + "oid": "cc7cd938dadfd8ecbaf61e79f7fba8060ff7194c" + }, + { + "authoredDate": "2019-04-29T18:13:51Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T18:13:51Z", + "messageBody": "", + "messageHeadline": "Make more Sqrt tests work", + "oid": "8f7c5a565c0c8cb4f674982c6fbb3174d6eaeee9" + }, + { + "authoredDate": "2019-04-29T18:49:15Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T18:49:15Z", + "messageBody": "", + "messageHeadline": "Make all Sqrt tests work", + "oid": "1f0f69f0d249d14270fe14a993405926a536ce05" + }, + { + "authoredDate": "2019-04-29T19:28:52Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T19:28:52Z", + "messageBody": "", + "messageHeadline": "Apply existing style to my changes - no functional change", + "oid": "f76f0365e272d675c73fb62dcfa09653960106fc" + }, + { + "authoredDate": "2019-04-29T20:10:41Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-29T20:10:41Z", + "messageBody": "", + "messageHeadline": "Fix debug printing of BcNum variables", + "oid": "0dea79ffb116b3395b949b18d80473af9e969ced" + }, + { + "authoredDate": "2019-04-30T08:47:06Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-30T08:47:06Z", + "messageBody": "…uns easier to decode", + "messageHeadline": "Make debug printing of BcNum variables use signed values to make over…", + "oid": "f8610b15aeed384d520d83ba66c964abd828d096" + }, + { + "authoredDate": "2019-04-30T09:24:44Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-30T09:24:44Z", + "messageBody": "", + "messageHeadline": "Fix printing of numbers with obase != 10 (length of fractional part)", + "oid": "36220832c7341fd267fdfb4010c579c5bc840a60" + }, + { + "authoredDate": "2019-05-02T08:43:02Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-02T08:43:02Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "4534283defbcd20faf921666b0b32693633c3ec2" + }, + { + "authoredDate": "2019-05-02T08:43:21Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-02T08:43:21Z", + "messageBody": "…results.\n\nThe implementation can be changed back to a macro that accesses the array\nwithout any further computation, if the function should take non-negligible\ntime. But the function will be inlined or optimized away in most cases and\nthus should not have a significant impact on the run-time ...", + "messageHeadline": "Revert bc_num_pow10 to a function instead of an array that holds the …", + "oid": "6167e2231df4f606278ca414931612a0e7d595e1" + }, + { + "authoredDate": "2019-05-02T08:56:01Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-02T08:56:01Z", + "messageBody": "", + "messageHeadline": "Add back the forward declaration of bc_num_pow10.", + "oid": "5b2af58b477230aea07d7f69d401390d500b5a75" + }, + { + "authoredDate": "2019-05-02T11:38:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-02T11:38:00Z", + "messageBody": "", + "messageHeadline": "Allow to pass BC_BASE_POWER on the compiler command line", + "oid": "4d90ccff6ac554b33b5832d79bca935cb8d03fc3" + }, + { + "authoredDate": "2019-05-04T07:12:09Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T07:12:09Z", + "messageBody": "", + "messageHeadline": "Fix decoding of BcNum in debug print function", + "oid": "f28be31518134f169a64d4a8104414c335b5c947" + }, + { + "authoredDate": "2019-05-04T07:14:02Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T07:14:02Z", + "messageBody": "", + "messageHeadline": "Fix merge errors in idivision based on Goldschmidt algorithm", + "oid": "10bca1171455d813a70b60a6bb05538b40831c1a" + }, + { + "authoredDate": "2019-05-04T07:24:27Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T07:24:27Z", + "messageBody": "\"shift\" operations are used within all arithmetic operations\n\"print\" is a pre-requisite of generating the results file for the \"parse\" test", + "messageHeadline": "Change order of tests to first test features that later tests depend on", + "oid": "f213e28e1a70e1ca581f9d137a1498dedcf97095" + }, + { + "authoredDate": "2019-05-04T13:58:41Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T13:58:41Z", + "messageBody": "…compiler warning", + "messageHeadline": "Change type of variables in debug print function to int to silence a …", + "oid": "013aeffa913df9dd96eec9c2dacfb64c9e766868" + }, + { + "authoredDate": "2019-05-04T14:19:12Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T14:19:12Z", + "messageBody": "The correction is derived from the difference of the input parameter times it inverse.\nThis value could be used for a final Newton-Raphson step (at the cost of an additional\nmultiplication), but since we can assume that the input\tparameter was very near\tto 1.0,\nthe multiplication would only add non-zero digits beyond the current scale range.\n\nThe Goldschmidt\talgorithm is an\tinfinite series\tof ever smaller positive values\tand\nif the series is cut off at some point,\tthe result is known to be exact\tor smaller\nthan the exact value.\n\nThe correction applied is meant\tto compensate for the neglected\tseries elements.\nIf it is found that there are boundary cases where we over-compensate, then the\nNewton-Raphson step could be used to apply a slightly smaller correction.", + "messageHeadline": "Add correction to result of Goldschmidt\talgorithm", + "oid": "85f59a665e6b20380accdb7c9f5fbca0d39d693b" + }, + { + "authoredDate": "2019-05-04T14:24:40Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T14:24:40Z", + "messageBody": "After a correction is applied to the returned reciprocal to account for the finite\nnumber of elements used in teh Goldschmidt algorithm, the result should be correct\nwithout the final rounding step.\n\nWhile here also remove the assignment of 1 to a variable that is not used for the\nspecific case anymore, anyway ...", + "messageHeadline": "Adapt division algorithm to use the updated bc_num_invert()", + "oid": "7e21b3cca2b93e7d5509e05dbf3d2076dcffa74d" + }, + { + "authoredDate": "2019-05-04T15:01:21Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T15:01:21Z", + "messageBody": "", + "messageHeadline": "Fix width of value printed for base > 17", + "oid": "017f0c843a3439651ce310cdb6ffc90cc09f6203" + }, + { + "authoredDate": "2019-05-04T15:05:12Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T15:05:12Z", + "messageBody": "", + "messageHeadline": "Fix printing of fractional parts for obase > 10", + "oid": "1a503e62ff9e642740577f8df68e439a1b9e1d10" + }, + { + "authoredDate": "2019-05-04T16:02:15Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T16:02:15Z", + "messageBody": "It has been found to be too low e.g. when calculating l(256)/l(16) with scale=40.\nThe result is exact with this increased correction applied.", + "messageHeadline": "Double correction value applied in bc_num_invert()", + "oid": "b9db23ba3b452798cc5b4ded0125565e5940f3e3" + }, + { + "authoredDate": "2019-05-04T18:12:43Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T18:12:43Z", + "messageBody": "The locations with these markers should be checked, although the tests seem to\nsucceed wíthiut them.\n\nCurrently test succeed until \"reference.bc2\", which returns zeroes for some of\nthe test arrays. But these marked locations are probably not related to that\ntest failing.", + "messageHeadline": "Mark a few places where changes might be required with // <se>", + "oid": "276de8c876ba72f1357dd0ce7cc1ef403902cedf" + }, + { + "authoredDate": "2019-05-04T21:48:51Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T21:48:51Z", + "messageBody": "This change has been performed due to a source code analysis.\nNo tests failed with the old code (i.e., no test covered this case).", + "messageHeadline": "Fix length parameter which obviously should be scale not rdx", + "oid": "e6bd86bdb390d0a74b31aabdde56d5824f38741c" + }, + { + "authoredDate": "2019-05-04T21:50:38Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-04T21:50:38Z", + "messageBody": "", + "messageHeadline": "Add comments to the division based on the Goldschmidt algorithm", + "oid": "28ffb91991cb5ca2c8687de2ff355161088d5997" + }, + { + "authoredDate": "2019-05-05T19:54:54Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-05T19:54:54Z", + "messageBody": "… crashing\n\nThe cut-off value is arbitrary, a significantly lower limit could be applied.", + "messageHeadline": "Make shiftLeft return an error for too large shift amounts instead of…", + "oid": "e274dbe523657c7bfc4228ddbf2e6dfbbca36059" + }, + { + "authoredDate": "2019-05-05T20:00:21Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-05-05T20:00:21Z", + "messageBody": "The Goldschmidt algorithm needs larger arguments than supported by the\narray.\n\nA larger array could be used, but a disassembly showed, that the array\naccess was converted to an inlined and rolled out chain of comparisons\nand assignments.", + "messageHeadline": "Optimize bc_num_pow10() and remove the unused bc_num_pow10 array", + "oid": "914a7f66807b3567fa438c8d668a040e9d2bcc4a" + } + ], + "createdAt": "2019-04-28T15:29:42Z", + "deletions": 63, + "files": [ + { + "path": "include/num.h", + "additions": 33, + "deletions": 13 + }, + { + "path": "src/data.c", + "additions": 0, + "deletions": 19 + }, + { + "path": "src/num.c", + "additions": 260, + "deletions": 29 + }, + { + "path": "tests/bc/all.txt", + "additions": 2, + "deletions": 2 + } + ], + "fullDatabaseId": "274187961", + "headRefName": "d9", + "headRefOid": "914a7f66807b3567fa438c8d668a040e9d2bcc4a", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjc0MTg3OTYx", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": null, + "mergeStateStatus": "DIRTY", + "mergeable": "CONFLICTING", + "mergedAt": null, + "mergedBy": null, + "milestone": null, + "number": 17, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "CLOSED", + "statusCheckRollup": [], + "title": "Implementation of an alternate algorithm for reciprocal values", + "updatedAt": "2019-05-06T13:42:51Z", + "url": "https://github.com/gavinhoward/bc/pull/17" + }, + { + "additions": 147, + "assignees": [], + "author": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "is_bot": false, + "login": "stesser", + "name": "Stefan Eßer" + }, + "autoMergeRequest": null, + "baseRefName": "base9", + "baseRefOid": "c25fd61637390cc993c91258dda2c01404b37147", + "body": "The code is not cleaned up, but since you said your are waiting for it ...", + "changedFiles": 1, + "closed": true, + "closedAt": "2019-04-27T12:40:59Z", + "comments": [ + { + "id": "MDEyOklzc3VlQ29tbWVudDQ4NzI4Mjk1Ng==", + "author": { + "login": "gavinhoward" + }, + "authorAssociation": "OWNER", + "body": "Merged. Will get to work on it now.", + "createdAt": "2019-04-27T12:41:09Z", + "includesCreatedEdit": false, + "isMinimized": false, + "minimizedReason": "", + "reactionGroups": [], + "url": "https://github.com/gavinhoward/bc/pull/16#issuecomment-487282956", + "viewerDidAuthor": true + } + ], + "commits": [ + { + "authoredDate": "2019-04-26T23:29:01Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-26T23:29:01Z", + "messageBody": "", + "messageHeadline": "Iterative division based on Newton Raphson algorithm", + "oid": "193f8529ad93306e39914ca7a2aa877669383f6f" + }, + { + "authoredDate": "2019-04-27T07:16:26Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T07:16:26Z", + "messageBody": "", + "messageHeadline": "Merge branch 'base9' of https://github.com/gavinhoward/bc into d9", + "oid": "87c27b5715646eb4deec4a6795c17b4c5facc408" + }, + { + "authoredDate": "2019-04-27T08:39:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T08:39:00Z", + "messageBody": "", + "messageHeadline": "Fix mismerge regarding nBcDig vs. places", + "oid": "70f118574077b6e61cae08bd576ca7fccc167786" + }, + { + "authoredDate": "2019-04-27T08:40:14Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T08:40:14Z", + "messageBody": "…e current rdx", + "messageHeadline": "Fix segmentation fault that occurs if the target rdx is lower than th…", + "oid": "6189d95036f123d48d505bf4d4a49ba11ca30aee" + }, + { + "authoredDate": "2019-04-27T08:42:00Z", + "authors": [ + { + "email": "se@freebsd.org", + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "login": "stesser", + "name": "Stefan Esser" + } + ], + "committedDate": "2019-04-27T08:42:00Z", + "messageBody": "", + "messageHeadline": "Add simple debug print macro", + "oid": "cdda6e99974b8f9551ad1bc184b3c735afac6f4a" + }, + { + "authoredDate": "2019-04-27T11:47:09Z", + "authors": [ + { + "email": "root@StefanEsser.freebsd.org", + "id": "", + "login": "", + "name": "Charlie Root" + } + ], + "committedDate": "2019-04-27T11:47:09Z", + "messageBody": "", + "messageHeadline": "Fix calculation of scale in multiplications", + "oid": "ac244bdb3ebe6e6a2693f3d5c2ae13d7723b3517" + } + ], + "createdAt": "2019-04-26T23:33:21Z", + "deletions": 63, + "files": [ + { + "path": "src/num.c", + "additions": 147, + "deletions": 63 + } + ], + "fullDatabaseId": "274063201", + "headRefName": "d9", + "headRefOid": "ac244bdb3ebe6e6a2693f3d5c2ae13d7723b3517", + "headRepository": { + "id": "MDEwOlJlcG9zaXRvcnkxODAzNzI3NzY=", + "name": "bc" + }, + "headRepositoryOwner": { + "id": "MDQ6VXNlcjYyNjQ1NDY=", + "name": "Stefan Eßer", + "login": "stesser" + }, + "id": "MDExOlB1bGxSZXF1ZXN0Mjc0MDYzMjAx", + "isCrossRepository": true, + "isDraft": false, + "labels": [], + "latestReviews": [], + "maintainerCanModify": false, + "mergeCommit": { + "oid": "769fcbed7a3a0005a60254c0ed5203406b533ae3" + }, + "mergeStateStatus": "DIRTY", + "mergeable": "CONFLICTING", + "mergedAt": "2019-04-27T12:40:59Z", + "mergedBy": { + "id": "MDQ6VXNlcjMxNzI2ODc=", + "is_bot": false, + "login": "gavinhoward", + "name": "Gavin D. Howard" + }, + "milestone": null, + "number": 16, + "potentialMergeCommit": null, + "projectCards": [], + "projectItems": [], + "reactionGroups": [], + "reviewDecision": "", + "reviewRequests": [], + "reviews": [], + "state": "MERGED", + "statusCheckRollup": [], + "title": "Newton-Raphson based division", + "updatedAt": "2019-04-27T12:41:09Z", + "url": "https://github.com/gavinhoward/bc/pull/16" + } +] diff --git a/contrib/bc/project/issue10.md b/contrib/bc/project/issue10.md new file mode 100644 index 000000000000..4c417f1922ab --- /dev/null +++ b/contrib/bc/project/issue10.md @@ -0,0 +1,104 @@ +# "scale" not set correctly with -l when first command is a syntax error + +## `mathieu` + +I just hit a (small and unlikely to be triggered) problem when using the `-l` flag: + +``` +$ bc -l +>>> 2+; # or any other syntax error it seems + +Parse error: bad expression + <stdin>:1 + +>>> l(1000) +6 +>>> scale +0 +``` + +The math library still gets loaded but `scale` doesn't get set (or gets reset)? + +The syntax error has to be on the first command and other kinds of errors (like say a divide by zero) don't seem to cause the problem. + +## `gavin` + +Hmm...let me investigate this and get back to you. This does seem like a bug. + +## `gavin` + +I'm not seeing the behavior. Can you send me the output of `bc -v`? + +## `gavin` + +I should also ask: what OS are you on? What version? What compiler did you use? Did you install from a package? + +Basically, send me as much info as you can. I would appreciate it. + +## `mathieu` + +Oh sorry yeah I should've given more details. + +That's on FreeBSD with the base system's bc, built with the default base compiler. + +On recent 12.2-STABLE: + +``` +$ bc -v +bc 4.0.1 +Copyright (c) 2018-2021 Gavin D. Howard and contributors +Report bugs at: https://git.yzena.com/gavin/bc + +This is free software with ABSOLUTELY NO WARRANTY. +``` + +Your bc is not default on 12.X yet but I enabled it with WITH_GH_BC=yes in /etc/src.conf to try it out. + +And on somewhat less recent 14-CURRENT: + +``` +$ bc -v +bc 4.0.0 +Copyright (c) 2018-2021 Gavin D. Howard and contributors +Report bugs at: https://git.yzena.com/gavin/bc + +This is free software with ABSOLUTELY NO WARRANTY. +``` + +Both amd64. Happens every time on both. + +I could give it a try on 13-STABLE too if that helps but I'd need to reboot something. + +The syntax error really has to be the FIRST input, even entering an empty line before it makes the problem not happen. + +I thought it could be an editline(3) problem since some programs end up using that pretty much only on the BSDs it seems, but that's not it. + +## `gavin` + +Yeah, my `bc` uses a custom history implementation, so it could be mine, but not `editline(3)`. + +I will pull up a FreeBSD VM and check it out. Sorry for the wait. + +## `gavin` + +I have confirmed the bug on FreeBSD with the port at version `4.0.1`. Since it is the port, and not the system one, I think the problem may lie with some incompatibility between my history implementation and what FreeBSD provides. + +This one may take me a long time to debug because I have to do it manually in the VM. Thank you for your patience. + +## `gavin` + +I found the problem! + +It is fixed in `299a4fd353`, but if you can pull that down and test, I would appreciate it. + +I will put out a release as soon as I can, and my FreeBSD contact will probably update 14-CURRENT soon thereafter. He will also update the port, but the version in 12.2 may not be updated for a bit. + +Feel free to reopen if the fix does not work for you. + +## `mathieu` + +Oof... yeah makes sense that an rc file could interfere with this. + +Yes, that fixes it here too. With that diff applied on both 12.2-STABLE and 14-CURRENT's versions. And everything else seems to still work fine too. + +Thanks for fixing this! You'd think it's really hard to trigger but I do enough typos and I start bc (with an alias with -l) often enough to make a quick calculation that I hit it twice and had decimals mysteriously missing before I started trying to reproduce it. |