Description
This is a placeholder for TODO items needed to have the release calc version 3 (after calc 2.15.1.x is released and stable). Think of this TOOD list as a planned set of changes that will come with calc v3
Things TODO when starting work on calc v3
-
create calcv2 bran 8000 ch on GitHub
See How to Create a New Branch in GitHub - What's a Branch, Anyway?
See Creating and deleting branches within your repository -
on master branch change calc version to 3.0.0
-
check in to ==>> master <<== branch the calc version to 3.0.0 change as a unstable release
-
use
calloc(3)
instead ofmalloc(3)
were reasonable -
assume C has const
use const instead of CONST
eliminate use of have_const.h -
assume C has extern
use extern instead of E_FUNC and EXTERN
NOTE: address the DLL need for Cygwin compilers, so
perhaps use external DLL instead?
clean up decl.h -
assume C has static
use static instead of STATIC
clean up decl.h -
require <inttypes.h>
eliminate use of have_inttypes.h -
require <limits.h>
eliminate use of have_limits.h -
assume use of memmove()
eliminate use of have_memmv.h -
assume use of memcpy() and memset()
-
do not assume getprid()
eliminate use of have_getprid.h
eliminate code that depends on HAVE_GETPRID -
require <stdbool.h>
eliminate use of have_stdbool.h
eliminate use of bool.h -
require <stdint.h>
eliminate use of have_stdint.h -
require <stdlib.h>
eliminate use of have_stdlib.h -
require <strdup.h>
eliminate use of have_strdup.h -
require <string.h>
eliminate use of have_string.h -
require <unistd.h>
eliminate use of have_unistd.h -
require use of <stdarg.h>
eliminate use of have_stdvs.c
eliminate use of have_varvs.c
remove code that depends on VARARGS being defined -
assume use of vsnprintf() and vsnprintf()
-
require use of c17 or later C compiler
update banned.h to ban gmtime()
update banned.h to ban localtime()
update banned.h to ban ctime()
update banned.h to ban ctime_r()
update banned.h to ban asctime()
update banned.h to ban asctime_r()
change chk_c.c to test for c17 or later. -
eliminate BASEB == 16 option
-
remove any #include of calc *.h files that are not needed
-
make v_type and v_subtype an int32_t in value.h
This will allow for number larger than 4GB in size -
reformat C code using Xformat
The format is TBD (perhaps discussed in a comment below) -
test for support of 128-bit and also for 256-bit data types
This would allow for a BASEB of 64 and 128
See issue Enhancement: Try to support BASEB == 64 #48 -
Remove
calc -O
and the old classic defaults -
Change the calc default as of the following had been set:
config("tilde_space",1),;
config("fraction_space",1),;
config("complex_space",1),; -
Support hex float constants
A "hex float' matches the following regex:[+-]?0x[0-9a-f]+([.][0-9a-f]+)?(p[+-]?[0-9]+)?
See issue Enhancement: support hex floats #14 for more details. -
Document or flag as syntax error when the numerator is assumed
When calc is given just/2
(no numerator), calc assumes a numerator of 1.
This/x
becomes equivalent of1/x
. If this a bug, then flag as a syntax error,
otherwise if this a a feature then document underhelp/unexpected
.
See issue Enhancement: Document or warn when the numerator is assumed #49 for more details. -
Change
#define CONFIG_SOMETHING
in config.h into an enum -
Move to a 3-level version system
UpdateREADME.RELEASE
to use a 3 level version system.
See issue Move to a more ordinary versioning scheme or document current scheme #113 -
Improve how someone can control where calc installs things
Improve the documentation on how and where calc installs things.
See issue [Msys2] It will always install to/usr
regardless of whetherPREFIX
is set or not #108 -
Improve use of readline and the programmable completion feature
Look into completing the names of functions, variables, and providing lists of available help files or functions
See issue command completion? #115. -
Add pre-defined constants to calc
See comment 1749699647 below.
See also comment 1751269852, comment 1751309220, and comment 1751332488 -
Release calc also as a macOS DMG for universal binary
NOTE: A single DMG for x86_64 and Apple Silicon -
Release calc also as a s390x RPM
NOTE: See Support self-hosted runner on linux-s390x platform
NOTE: See also Run-On-Arch GitHub Action -
Release calc as a Debian ".deb" binary package
NOTE: See Debian packaging -
Split
help/command
into separate help files
Havehelp/read
just report on the read command, for example.
Thehelp/command
should be a concatenation of these separate help files.
Thehelp/command
at the top should suggesthelp usage
andhelp man
. -
Improve
help help
The currenthelp/help
file need to be improved, both in the order of items presented as well as to provide topics of better interest.
Consider howman perl
breaks up and names sections. This might be a useful model. -
Add
help man
to print the formatted calc man page.
Replacehelp usage
withhelp man
and print the formatted man page.
Aliashelp calc.1
tohelp man
. -
Move
help/functlist*
outside of the help dir
Put only help files andhelp/Makefile
under thehelp/
directory. -
Change
help/Makefile
to print a special help file about calc Makefiles.
Aliashelp makefile
tohelp Makefile
. -
Change
help/usage
and changecalc -h
to print information about the calc command line
This print a short message about using the help command, and then print a typical command line usage summary. -
Add
help faq
to print a calc frequently asked questions file
Look over open and closed discussions and old Email for various FAQ ideas. -
Explore the possibility of being able to save and restore calc history in machine ("native") form
See comment 1754161473 -
Integrate calc with
gnuplot(1)
Come up with a good way for calc to drive gnuplot.
See issue Enhancement: Plotting #126. -
Rewrite the Blum-Blum-Shub pseudo-random number generator seed code in
zrandom.c
Rewrite the seed code to be a straightforward generator seeding, while maintaining backward compatibility.
That is, no difference from a user's perspective. Fix the one known and minor calc memory leak as well. -
Add a pipe object
Give calc the ability to perform I/O with programs it launches: I.e., core concepts relating to "pipes, forks, and I/O with other processes, etc."
See also pull request #153 that was created by @vike2000 for additional ideas.
MORE TODOs to be added over time.