xref: /freebsd/contrib/bc/README.md (revision 10041e99a0c29c9f99c4148fc173bb12dd26aa8d)
1252884aeSStefan Eßer# `bc`
2252884aeSStefan Eßer
3252884aeSStefan Eßer***WARNING: This project has moved to [https://git.yzena.com/][20] for [these
4252884aeSStefan Eßerreasons][21], though GitHub will remain a mirror.***
5252884aeSStefan Eßer
6252884aeSStefan EßerThis is an implementation of the [POSIX `bc` calculator][12] that implements
7252884aeSStefan Eßer[GNU `bc`][1] extensions, as well as the period (`.`) extension for the BSD
8252884aeSStefan Eßerflavor of `bc`.
9252884aeSStefan Eßer
103aa99676SStefan EßerFor more information, see this `bc`'s full manual.
11252884aeSStefan Eßer
12252884aeSStefan EßerThis `bc` also includes an implementation of `dc` in the same binary, accessible
13252884aeSStefan Eßervia a symbolic link, which implements all FreeBSD and GNU extensions. (If a
14252884aeSStefan Eßerstandalone `dc` binary is desired, `bc` can be copied and renamed to `dc`.) The
15252884aeSStefan Eßer`!` command is omitted; I believe this poses security concerns and that such
16252884aeSStefan Eßerfunctionality is unnecessary.
17252884aeSStefan Eßer
183aa99676SStefan EßerFor more information, see the `dc`'s full manual.
19252884aeSStefan Eßer
208ea90135SStefan EßerThis `bc` also provides `bc`'s math as a library with C bindings, called `bcl`.
218ea90135SStefan Eßer
228ea90135SStefan EßerFor more information, see the full manual for `bcl`.
238ea90135SStefan Eßer
2444d4804dSStefan Eßer## License
2544d4804dSStefan Eßer
26252884aeSStefan EßerThis `bc` is Free and Open Source Software (FOSS). It is offered under the BSD
27252884aeSStefan Eßer2-clause License. Full license text may be found in the [`LICENSE.md`][4] file.
28252884aeSStefan Eßer
29252884aeSStefan Eßer## Prerequisites
30252884aeSStefan Eßer
317e5c51e5SStefan EßerThis `bc` only requires either:
327e5c51e5SStefan Eßer
337e5c51e5SStefan Eßer1.	Windows 10 or later, or
347e5c51e5SStefan Eßer2.	A C99-compatible compiler and a (mostly) POSIX 2008-compatible system with
357e5c51e5SStefan Eßer	the XSI (X/Open System Interfaces) option group.
36252884aeSStefan Eßer
37252884aeSStefan EßerSince POSIX 2008 with XSI requires the existence of a C99 compiler as `c99`, any
38252884aeSStefan EßerPOSIX and XSI-compatible system will have everything needed.
39252884aeSStefan Eßer
407e5c51e5SStefan EßerPOSIX-compatible systems that are known to work:
41252884aeSStefan Eßer
42252884aeSStefan Eßer* Linux
43252884aeSStefan Eßer* FreeBSD
44252884aeSStefan Eßer* OpenBSD
45252884aeSStefan Eßer* NetBSD
46252884aeSStefan Eßer* Mac OSX
473aa99676SStefan Eßer* Solaris* (as long as the Solaris version supports POSIX 2008)
48252884aeSStefan Eßer* AIX
4910328f8bSStefan Eßer* HP-UX* (except for history)
50252884aeSStefan Eßer
517e5c51e5SStefan EßerIn addition, there is compatibility code to make this `bc` work on Windows.
527e5c51e5SStefan Eßer
53252884aeSStefan EßerPlease submit bug reports if this `bc` does not build out of the box on any
547e5c51e5SStefan Eßersystem.
55252884aeSStefan Eßer
56252884aeSStefan Eßer## Build
57252884aeSStefan Eßer
5844d4804dSStefan EßerThis `bc` should build unmodified on any POSIX-compliant system or on Windows
5944d4804dSStefan Eßerstarting with Windows 10 (though earlier versions may work).
6044d4804dSStefan Eßer
61*10041e99SStefan EßerFor more complex build requirements than the ones below, see the [build
62*10041e99SStefan Eßermanual][5].
6344d4804dSStefan Eßer
647e5c51e5SStefan Eßer### Windows
657e5c51e5SStefan Eßer
667e5c51e5SStefan EßerThere is no guarantee that this `bc` will work on any version of Windows earlier
677e5c51e5SStefan Eßerthan Windows 10 (I cannot test on earlier versions), but it is guaranteed to
687e5c51e5SStefan Eßerwork on Windows 10 at least.
697e5c51e5SStefan Eßer
707e5c51e5SStefan EßerAlso, if building with MSBuild, the MSBuild bundled with Visual Studio is
717e5c51e5SStefan Eßerrequired.
727e5c51e5SStefan Eßer
737e5c51e5SStefan Eßer**Note**: Unlike the POSIX-compatible platforms, only one build configuration is
747e5c51e5SStefan Eßersupported on Windows: extra math and prompt enabled, history and NLS (locale
757e5c51e5SStefan Eßersupport) disabled, with both calculators built.
767e5c51e5SStefan Eßer
777e5c51e5SStefan Eßer#### `bc`
787e5c51e5SStefan Eßer
79*10041e99SStefan EßerTo build `bc`, you can open the `vs/bc.sln` file in Visual Studio, select the
807e5c51e5SStefan Eßerconfiguration, and build.
817e5c51e5SStefan Eßer
827e5c51e5SStefan EßerYou can also build using MSBuild with the following from the root directory:
837e5c51e5SStefan Eßer
847e5c51e5SStefan Eßer```
85*10041e99SStefan Eßermsbuild -property:Configuration=<config> vs/bc.sln
867e5c51e5SStefan Eßer```
877e5c51e5SStefan Eßer
887e5c51e5SStefan Eßerwhere `<config>` is either one of `Debug` or `Release`.
897e5c51e5SStefan Eßer
90*10041e99SStefan EßerOn Windows, the calculators are built as `vs/bin/<platform>/<config>/bc.exe` and
91*10041e99SStefan Eßer`vs/bin/<Platform>/<Config>/dc.exe`, where `<platform>` can be either `Win32` or
92*10041e99SStefan Eßer`x64`, and `<config>` can be `Debug` or `Release`.
93*10041e99SStefan Eßer
94*10041e99SStefan Eßer**Note**: On Windows, `dc.exe` is just copied from `bc.exe`; it is not linked.
95*10041e99SStefan EßerPatches are welcome for a way to do that.
96*10041e99SStefan Eßer
977e5c51e5SStefan Eßer#### `bcl` (Library)
987e5c51e5SStefan Eßer
99*10041e99SStefan EßerTo build the library, you can open the `vs/bcl.sln` file in Visual Studio,
100*10041e99SStefan Eßerselect the configuration, and build.
1017e5c51e5SStefan Eßer
1027e5c51e5SStefan EßerYou can also build using MSBuild with the following from the root directory:
1037e5c51e5SStefan Eßer
1047e5c51e5SStefan Eßer```
105*10041e99SStefan Eßermsbuild -property:Configuration=<config> vs/bcl.sln
1067e5c51e5SStefan Eßer```
1077e5c51e5SStefan Eßer
108*10041e99SStefan Eßerwhere `<config>` is either one of `Debug`, `ReleaseMD`, or `ReleaseMT`.
109*10041e99SStefan Eßer
110*10041e99SStefan EßerOn Windows, the library is built as `vs/lib/<platform>/<config>/bcl.lib`, where
111*10041e99SStefan Eßer`<platform>` can be either `Win32` or `x64`, and `<config>` can be `Debug`,
112*10041e99SStefan Eßer`ReleaseMD`, or `ReleaseMT`.
1137e5c51e5SStefan Eßer
1147e5c51e5SStefan Eßer### POSIX-Compatible Systems
1157e5c51e5SStefan Eßer
1167e5c51e5SStefan EßerOn POSIX-compatible systems, `bc` is built as `bin/bc` and `dc` is built as
117*10041e99SStefan Eßer`bin/dc` by default.
1187e5c51e5SStefan Eßer
1197e5c51e5SStefan Eßer#### Default
120252884aeSStefan Eßer
121252884aeSStefan EßerFor the default build with optimization, use the following commands in the root
122252884aeSStefan Eßerdirectory:
123252884aeSStefan Eßer
124252884aeSStefan Eßer```
125252884aeSStefan Eßer./configure.sh -O3
126252884aeSStefan Eßermake
127252884aeSStefan Eßer```
128252884aeSStefan Eßer
1297e5c51e5SStefan Eßer#### One Calculator
130252884aeSStefan Eßer
131252884aeSStefan EßerTo only build `bc`, use the following commands:
132252884aeSStefan Eßer
133252884aeSStefan Eßer```
134252884aeSStefan Eßer./configure.sh --disable-dc
135252884aeSStefan Eßermake
136252884aeSStefan Eßer```
137252884aeSStefan Eßer
138252884aeSStefan EßerTo only build `dc`, use the following commands:
139252884aeSStefan Eßer
140252884aeSStefan Eßer```
141252884aeSStefan Eßer./configure.sh --disable-bc
142252884aeSStefan Eßermake
143252884aeSStefan Eßer```
144252884aeSStefan Eßer
1457e5c51e5SStefan Eßer#### Debug
146252884aeSStefan Eßer
147252884aeSStefan EßerFor debug builds, use the following commands in the root directory:
148252884aeSStefan Eßer
149252884aeSStefan Eßer```
150252884aeSStefan Eßer./configure.sh -g
151252884aeSStefan Eßermake
152252884aeSStefan Eßer```
153252884aeSStefan Eßer
1547e5c51e5SStefan Eßer#### Install
155252884aeSStefan Eßer
156252884aeSStefan EßerTo install, use the following command:
157252884aeSStefan Eßer
158252884aeSStefan Eßer```
159252884aeSStefan Eßermake install
160252884aeSStefan Eßer```
161252884aeSStefan Eßer
162252884aeSStefan EßerBy default, `bc` and `dc` will be installed in `/usr/local`. For installing in
163252884aeSStefan Eßerother locations, use the `PREFIX` environment variable when running
164252884aeSStefan Eßer`configure.sh` or pass the `--prefix=<prefix>` option to `configure.sh`. See the
165252884aeSStefan Eßer[build manual][5], or run `./configure.sh --help`, for more details.
166252884aeSStefan Eßer
1677e5c51e5SStefan Eßer#### Library
16850696a6eSStefan Eßer
16950696a6eSStefan EßerThis `bc` does provide a way to build a math library with C bindings. This is
17050696a6eSStefan Eßerdone by the `-a` or `--library` options to `configure.sh`:
17150696a6eSStefan Eßer
17250696a6eSStefan Eßer```
17350696a6eSStefan Eßer./configure.sh -a
17450696a6eSStefan Eßer```
17550696a6eSStefan Eßer
17650696a6eSStefan EßerWhen building the library, the executables are not built. For more information,
17750696a6eSStefan Eßersee the [build manual][5].
17850696a6eSStefan Eßer
17950696a6eSStefan EßerThe library API can be found in [`manuals/bcl.3.md`][26] or `man bcl` once the
18050696a6eSStefan Eßerlibrary is installed.
18150696a6eSStefan Eßer
1827e5c51e5SStefan EßerThe library is built as `bin/libbcl.a` on POSIX-compatible systems or as
1837e5c51e5SStefan Eßer`Release/bcl/bcl.lib` on Windows.
18450696a6eSStefan Eßer
1857e5c51e5SStefan Eßer#### Package and Distro Maintainers
186252884aeSStefan Eßer
187*10041e99SStefan EßerThis section is for package and distro maintainers.
188*10041e99SStefan Eßer
189*10041e99SStefan Eßer##### Out-of-Source Builds
190*10041e99SStefan Eßer
191*10041e99SStefan EßerOut-of-source builds are supported; just call `configure.sh` from the directory
192*10041e99SStefan Eßerwhere the actual build will happen.
193*10041e99SStefan Eßer
194*10041e99SStefan EßerFor example, if the source is in `bc`, the build should happen in `build`, then
195*10041e99SStefan Eßercall `configure.sh` and `make` like so:
196*10041e99SStefan Eßer
197*10041e99SStefan Eßer```
198*10041e99SStefan Eßer../bc/configure.sh
199*10041e99SStefan Eßermake
200*10041e99SStefan Eßer```
201*10041e99SStefan Eßer
202*10041e99SStefan Eßer***WARNING***: The path to `configure.sh` from the build directory must not have
203*10041e99SStefan Eßerspaces because `make` does not support target names with spaces.
204*10041e99SStefan Eßer
2057e5c51e5SStefan Eßer##### Recommended Compiler
206252884aeSStefan Eßer
207252884aeSStefan EßerWhen I ran benchmarks with my `bc` compiled under `clang`, it performed much
208252884aeSStefan Eßerbetter than when compiled under `gcc`. I recommend compiling this `bc` with
209252884aeSStefan Eßer`clang`.
210252884aeSStefan Eßer
211252884aeSStefan EßerI also recommend building this `bc` with C11 if you can because `bc` will detect
212252884aeSStefan Eßera C11 compiler and add `_Noreturn` to any relevant function(s).
213252884aeSStefan Eßer
2147e5c51e5SStefan Eßer##### Recommended Optimizations
215252884aeSStefan Eßer
216252884aeSStefan EßerI wrote this `bc` with Separation of Concerns, which means that there are many
217252884aeSStefan Eßersmall functions that could be inlined. However, they are often called across
218252884aeSStefan Eßerfile boundaries, and the default optimizer can only look at the current file,
219252884aeSStefan Eßerwhich means that they are not inlined.
220252884aeSStefan Eßer
221252884aeSStefan EßerThus, because of the way this `bc` is built, it will automatically be slower
222252884aeSStefan Eßerthan other `bc` implementations when running scripts with no math. (My `bc`'s
223252884aeSStefan Eßermath is *much* faster, so any non-trivial script should run faster in my `bc`.)
224252884aeSStefan Eßer
225252884aeSStefan EßerSome, or all, of the difference can be made up with the right optimizations. The
226252884aeSStefan Eßeroptimizations I recommend are:
227252884aeSStefan Eßer
228252884aeSStefan Eßer1.	`-O3`
229252884aeSStefan Eßer2.	`-flto` (link-time optimization)
230252884aeSStefan Eßer
231252884aeSStefan Eßerin that order.
232252884aeSStefan Eßer
233252884aeSStefan EßerLink-time optimization, in particular, speeds up the `bc` a lot. This is because
234252884aeSStefan Eßerwhen link-time optimization is turned on, the optimizer can look across files
235252884aeSStefan Eßerand inline *much* more heavily.
236252884aeSStefan Eßer
237252884aeSStefan EßerHowever, I recommend ***NOT*** using `-march=native`. Doing so will reduce this
238252884aeSStefan Eßer`bc`'s performance, at least when building with link-time optimization. See the
239252884aeSStefan Eßer[benchmarks][19] for more details.
240252884aeSStefan Eßer
2417e5c51e5SStefan Eßer##### Stripping Binaries
242252884aeSStefan Eßer
243252884aeSStefan EßerBy default, non-debug binaries are stripped, but stripping can be disabled with
244252884aeSStefan Eßerthe `-T` option to `configure.sh`.
245252884aeSStefan Eßer
2467e5c51e5SStefan Eßer##### Using This `bc` as an Alternative
247252884aeSStefan Eßer
248252884aeSStefan EßerIf this `bc` is packaged as an alternative to an already existing `bc` package,
249252884aeSStefan Eßerit is possible to rename it in the build to prevent name collision. To prepend
250252884aeSStefan Eßerto the name, just run the following:
251252884aeSStefan Eßer
252252884aeSStefan Eßer```
253252884aeSStefan EßerEXECPREFIX=<some_prefix> ./configure.sh
254252884aeSStefan Eßer```
255252884aeSStefan Eßer
256252884aeSStefan EßerTo append to the name, just run the following:
257252884aeSStefan Eßer
258252884aeSStefan Eßer```
259252884aeSStefan EßerEXECSUFFIX=<some_suffix> ./configure.sh
260252884aeSStefan Eßer```
261252884aeSStefan Eßer
262252884aeSStefan EßerIf a package maintainer wishes to add both a prefix and a suffix, that is
263252884aeSStefan Eßerallowed.
264252884aeSStefan Eßer
265252884aeSStefan Eßer**Note**: The suggested name (and package name) when `bc` is not available is
266252884aeSStefan Eßer`bc-gh`.
267252884aeSStefan Eßer
2687e5c51e5SStefan Eßer##### Karatsuba Number
269252884aeSStefan Eßer
270252884aeSStefan EßerPackage and distro maintainers have one tool at their disposal to build this
27144d4804dSStefan Eßer`bc` in the optimal configuration: `scripts/karatsuba.py`.
272252884aeSStefan Eßer
273252884aeSStefan EßerThis script is not a compile-time or runtime prerequisite; it is for package and
274252884aeSStefan Eßerdistro maintainers to run once when a package is being created. It finds the
275252884aeSStefan Eßeroptimal Karatsuba number (see the [algorithms manual][7] for more information)
276252884aeSStefan Eßerfor the machine that it is running on.
277252884aeSStefan Eßer
278252884aeSStefan EßerThe easiest way to run this script is with `make karatsuba`.
279252884aeSStefan Eßer
280252884aeSStefan EßerIf desired, maintainers can also skip running this script because there is a
281252884aeSStefan Eßersane default for the Karatsuba number.
282252884aeSStefan Eßer
283252884aeSStefan Eßer## Status
284252884aeSStefan Eßer
285252884aeSStefan EßerThis `bc` is robust.
286252884aeSStefan Eßer
287252884aeSStefan EßerIt is well-tested, fuzzed, and fully standards-compliant (though not certified)
288252884aeSStefan Eßerwith POSIX `bc`. The math has been tested with 40+ million random problems, so
289252884aeSStefan Eßerit is as correct as I can make it.
290252884aeSStefan Eßer
291252884aeSStefan EßerThis `bc` can be used as a drop-in replacement for any existing `bc`. This `bc`
292252884aeSStefan Eßeris also compatible with MinGW toolchains, though history is not supported on
293252884aeSStefan EßerWindows.
294252884aeSStefan Eßer
295252884aeSStefan EßerIn addition, this `bc` is considered complete; i.e., there will be no more
296252884aeSStefan Eßerreleases with additional features. However, it *is* actively maintained, so if
297252884aeSStefan Eßerany bugs are found, they will be fixed in new releases. Also, additional
298252884aeSStefan Eßertranslations will also be added as they are provided.
299252884aeSStefan Eßer
30044d4804dSStefan Eßer### Development
30144d4804dSStefan Eßer
30244d4804dSStefan EßerIf I (Gavin D. Howard) get [hit by a bus][27] and future programmers need to
30344d4804dSStefan Eßerhandle work themselves, the best place to start is the [Development manual][28].
30444d4804dSStefan Eßer
30544d4804dSStefan Eßer## Vim Syntax
30644d4804dSStefan Eßer
30744d4804dSStefan EßerI have developed (using other people's code to start) [`vim` syntax files][17]
30844d4804dSStefan Eßerfor this `bc` and `dc`, including the extensions.
30944d4804dSStefan Eßer
31044d4804dSStefan Eßer## `bc` Libs
31144d4804dSStefan Eßer
31244d4804dSStefan EßerI have gathered some excellent [`bc` and `dc` libraries][18]. These libraries
31344d4804dSStefan Eßermay prove useful to any serious users.
31444d4804dSStefan Eßer
315252884aeSStefan Eßer## Comparison to GNU `bc`
316252884aeSStefan Eßer
317252884aeSStefan EßerThis `bc` compares favorably to GNU `bc`.
318252884aeSStefan Eßer
3197e5c51e5SStefan Eßer* This `bc` builds natively on Windows.
320252884aeSStefan Eßer* It has more extensions, which make this `bc` more useful for scripting.
321252884aeSStefan Eßer* This `bc` is a bit more POSIX compliant.
322252884aeSStefan Eßer* It has a much less buggy parser. The GNU `bc` will give parse errors for what
323252884aeSStefan Eßer  is actually valid `bc` code, or should be. For example, putting an `else` on
324252884aeSStefan Eßer  a new line after a brace can cause GNU `bc` to give a parse error.
325252884aeSStefan Eßer* This `bc` has fewer crashes.
326252884aeSStefan Eßer* GNU `bc` calculates the wrong number of significant digits for `length(x)`.
327252884aeSStefan Eßer* GNU `bc` will sometimes print numbers incorrectly. For example, when running
328252884aeSStefan Eßer  it on the file `tests/bc/power.txt` in this repo, GNU `bc` gets all the right
329252884aeSStefan Eßer  answers, but it fails to wrap the numbers at the proper place when outputting
330252884aeSStefan Eßer  to a file.
331252884aeSStefan Eßer* This `bc` is faster. (See [Performance](#performance).)
332252884aeSStefan Eßer
333252884aeSStefan Eßer### Performance
334252884aeSStefan Eßer
335252884aeSStefan EßerBecause this `bc` packs more than `1` decimal digit per hardware integer, this
336252884aeSStefan Eßer`bc` is faster than GNU `bc` and can be *much* faster. Full benchmarks can be
337252884aeSStefan Eßerfound at [manuals/benchmarks.md][19].
338252884aeSStefan Eßer
339252884aeSStefan EßerThere is one instance where this `bc` is slower: if scripts are light on math.
340252884aeSStefan EßerThis is because this `bc`'s intepreter is slightly slower than GNU `bc`, but
341252884aeSStefan Eßerthat is because it is more robust. See the [benchmarks][19].
342252884aeSStefan Eßer
343252884aeSStefan Eßer## Algorithms
344252884aeSStefan Eßer
345252884aeSStefan EßerTo see what algorithms this `bc` uses, see the [algorithms manual][7].
346252884aeSStefan Eßer
347252884aeSStefan Eßer## Locales
348252884aeSStefan Eßer
3497e5c51e5SStefan EßerCurrently, there is no locale support on Windows.
3507e5c51e5SStefan Eßer
3517e5c51e5SStefan EßerAdditionally, this `bc` only has support for English (and US English), French,
352252884aeSStefan EßerGerman, Portuguese, Dutch, Polish, Russian, Japanese, and Chinese locales.
353252884aeSStefan EßerPatches are welcome for translations; use the existing `*.msg` files in
354252884aeSStefan Eßer`locales/` as a starting point.
355252884aeSStefan Eßer
356252884aeSStefan EßerIn addition, patches for improvements are welcome; the last two messages in
357252884aeSStefan EßerPortuguese were made with Google Translate, and the Dutch, Polish, Russian,
358252884aeSStefan EßerJapanese, and Chinese locales were all generated with [DeepL][22].
359252884aeSStefan Eßer
360252884aeSStefan EßerThe message files provided assume that locales apply to all regions where a
361252884aeSStefan Eßerlanguage is used, but this might not be true for, e.g., `fr_CA` and `fr_CH`.
362252884aeSStefan EßerAny corrections or a confirmation that the current texts are acceptable for
363252884aeSStefan Eßerthose regions would be appreciated, too.
364252884aeSStefan Eßer
365252884aeSStefan Eßer## Other Projects
366252884aeSStefan Eßer
367252884aeSStefan EßerOther projects based on this bc are:
368252884aeSStefan Eßer
369252884aeSStefan Eßer* [busybox `bc`][8]. The busybox maintainers have made their own changes, so any
370252884aeSStefan Eßer  bugs in the busybox `bc` should be reported to them.
371252884aeSStefan Eßer
372252884aeSStefan Eßer* [toybox `bc`][9]. The maintainer has also made his own changes, so bugs in the
373252884aeSStefan Eßer  toybox `bc` should be reported there.
374252884aeSStefan Eßer
3753aa99676SStefan Eßer* [FreeBSD `bc`][23]. While the `bc` in FreeBSD is kept up-to-date, it is better
3765d934bc0SStefan Eßer  to [report bugs there][24], as well as [submit patches][25], and the
3775d934bc0SStefan Eßer  maintainers of the package will contact me if necessary.
3783aa99676SStefan Eßer
379252884aeSStefan Eßer## Language
380252884aeSStefan Eßer
3817e5c51e5SStefan EßerThis `bc` is written in pure ISO C99, using POSIX 2008 APIs with custom Windows
3827e5c51e5SStefan Eßercompatibility code.
383252884aeSStefan Eßer
384252884aeSStefan Eßer## Commit Messages
385252884aeSStefan Eßer
386252884aeSStefan EßerThis `bc` uses the commit message guidelines laid out in [this blog post][10].
387252884aeSStefan Eßer
388252884aeSStefan Eßer## Semantic Versioning
389252884aeSStefan Eßer
390252884aeSStefan EßerThis `bc` uses [semantic versioning][11].
391252884aeSStefan Eßer
392252884aeSStefan Eßer## Contents
393252884aeSStefan Eßer
394252884aeSStefan EßerItems labeled with `(maintainer use only)` are not included in release source
395252884aeSStefan Eßertarballs.
396252884aeSStefan Eßer
397252884aeSStefan EßerFiles:
398252884aeSStefan Eßer
399252884aeSStefan Eßer	.gitignore           The git ignore file (maintainer use only).
4007e5c51e5SStefan Eßer	.gitattributes       The git attributes file (maintainer use only).
401*10041e99SStefan Eßer	bcl.pc.in            A template pkg-config file for bcl.
402252884aeSStefan Eßer	configure            A symlink to configure.sh to make packaging easier.
403252884aeSStefan Eßer	configure.sh         The configure script.
404252884aeSStefan Eßer	LICENSE.md           A Markdown form of the BSD 2-clause License.
405252884aeSStefan Eßer	Makefile.in          The Makefile template.
406*10041e99SStefan Eßer	NEWS.md              The changelog.
407252884aeSStefan Eßer	NOTICE.md            List of contributors and copyright owners.
408252884aeSStefan Eßer	RELEASE.md           A checklist for making a release (maintainer use only).
409252884aeSStefan Eßer
410252884aeSStefan EßerFolders:
411252884aeSStefan Eßer
412252884aeSStefan Eßer	gen      The bc math library, help texts, and code to generate C source.
413252884aeSStefan Eßer	include  All header files.
414252884aeSStefan Eßer	locales  Locale files, in .msg format. Patches welcome for translations.
415252884aeSStefan Eßer	manuals  Manuals for both programs.
416252884aeSStefan Eßer	src      All source code.
41744d4804dSStefan Eßer	scripts  A bunch of shell scripts to help with development and building.
418252884aeSStefan Eßer	tests    All tests.
419*10041e99SStefan Eßer	vs       Files needed for the build on Windows.
420252884aeSStefan Eßer
421252884aeSStefan Eßer[1]: https://www.gnu.org/software/bc/
422252884aeSStefan Eßer[4]: ./LICENSE.md
423252884aeSStefan Eßer[5]: ./manuals/build.md
424252884aeSStefan Eßer[7]: ./manuals/algorithms.md
425252884aeSStefan Eßer[8]: https://git.busybox.net/busybox/tree/miscutils/bc.c
426252884aeSStefan Eßer[9]: https://github.com/landley/toybox/blob/master/toys/pending/bc.c
427252884aeSStefan Eßer[10]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
428252884aeSStefan Eßer[11]: http://semver.org/
429252884aeSStefan Eßer[12]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html
43044d4804dSStefan Eßer[17]: https://git.yzena.com/gavin/vim-bc
43144d4804dSStefan Eßer[18]: https://git.yzena.com/gavin/bc_libs
432252884aeSStefan Eßer[19]: ./manuals/benchmarks.md
433252884aeSStefan Eßer[20]: https://git.yzena.com/gavin/bc
434252884aeSStefan Eßer[21]: https://gavinhoward.com/2020/04/i-am-moving-away-from-github/
435252884aeSStefan Eßer[22]: https://www.deepl.com/translator
4369a995fe1SStefan Eßer[23]: https://cgit.freebsd.org/src/tree/contrib/bc
4375d934bc0SStefan Eßer[24]: https://bugs.freebsd.org/
4385d934bc0SStefan Eßer[25]: https://reviews.freebsd.org/
43950696a6eSStefan Eßer[26]: ./manuals/bcl.3.md
44044d4804dSStefan Eßer[27]: https://en.wikipedia.org/wiki/Bus_factor
44144d4804dSStefan Eßer[28]: ./manuals/development.md
442