Build
One piece of maintenance that is high on the agenda is to port backwards some of the superior testing and build technology that Eliot developed for Iguana X to Iguana 6.
There is no real reason that products shouldn't benefit from the better technology that Eliot developed for Iguana X.
Iguana X has a simpler build system which Eliot designed and a better faster multi threaded testing infra-structure.
What does this matter? Faster builds and iterations make for better support and making sure that Iguana 6 is also set up for long term success.
You can see the contrast with the two systems here. This is Iguana 6's system:
CPP IGCutilsDll.cpp
MODULE IGCI
CPP IGCImessageProcessor.cpp
LIB libIGCI.a
MODULE FMT
MODULE DRC
MODULE DAP
MODULE openssl_src
CPP DAPclient.cpp
CPP DAPerror.cpp
CPP DAPlabels.cpp
CPP DAPmessage.cpp
CPP DAPparser.cpp
CPP DAPquery.cpp
CPP DAPqueryResult.cpp
LIB libDAP.a
MODULE NTBS
MODULE openssl_src
MODULE HTPC
LIB libHTPC.a
MODULE HTTP
CPP HTTPbasicAuthent.cpp
CPP HTTPbodyParser.cpp
CPP HTTPcookie.cpp
CPP HTTPfile.cpp
CPP HTTPheader.cpp
CPP HTTPheaderParser.cpp
CPP HTTPmimeLookup.cpp
CPP HTTPmultiPart.cpp
CPP HTTPparser.cpp
CPP HTTPrequest.cpp
CPP HTTPrequestParser.cpp
CPP HTTPresponse.cpp
CPP HTTPresponseParser.cpp
CPP HTTPsession.cpp
CPP HTTPsessionHandler.cpp
CPP HTTPutils.cpp
CPP HTTPvariables.cpp
LIB libHTTP.a
This build system goes against one of Eliot's core design values which is transparency. Build warnings are swallowed by the system. It also requires a lot more effort to add files to the system.
Everytime a file is added, it has to be listed in the makefile system:
LIBRARY=HTTP
SRC=\
HTTPbasicAuthent.cpp\
HTTPbodyParser.cpp\
HTTPcookie.cpp\
HTTPfile.cpp\
HTTPheader.cpp\
HTTPheaderParser.cpp\
HTTPmimeLookup.cpp\
HTTPmultiPart.cpp\
HTTPparser.cpp\
HTTPrequest.cpp\
HTTPrequestParser.cpp\
HTTPresponse.cpp\
HTTPresponseParser.cpp\
HTTPsession.cpp\
HTTPsessionHandler.cpp\
HTTPutils.cpp\
HTTPvariables.cpp\
include ../makefiles/library.makefile
Compare this Iguana X's build system and it's much simpler with Iguana X, which scans the directory for code files and automatically compiles and links them.
The same library only requires:
include ../make/makefile.library
No need to list all of the files like the old system. This is very aligned with all of Eliot's design ideas. The modern build system is much more transparent which makes it faster to diagnose problems and compiler security warnings visible.
EliotHomeServer:~/products/iguanax/HTTP % make
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPbasicAuthent.o HTTPbasicAuthent.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPbodyParser.o HTTPbodyParser.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPcookie.o HTTPcookie.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPfile.o HTTPfile.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPheader.o HTTPheader.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPheaderParser.o HTTPheaderParser.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPmimeLookup.o HTTPmimeLookup.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPmultiPart.o HTTPmultiPart.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPparser.o HTTPparser.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPprecomp.o HTTPprecomp.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPrequest.o HTTPrequest.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPrequestParser.o HTTPrequestParser.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPresponse.o HTTPresponse.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPresponseParser.o HTTPresponseParser.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPsession.o HTTPsession.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPsessionHandler.o HTTPsessionHandler.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPutils.o HTTPutils.cpp
ccache c++ -MMD -I../ -Werror -std=c++11 -Wno-unused-value -c -o HTTPvariables.o HTTPvariables.cpp