What's Changed
* Set up testing infrastructure by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/43
* Change G3VectorInt to wrap vector<int64_t> by mhasself in https://github.com/CMB-S4/spt3g_software/pull/42
* OSX Testing Workflow by arahlin in https://github.com/CMB-S4/spt3g_software/pull/44
* Better handling of weights when performing arithmetic between FlatSkyMap objects by kferguson42 in https://github.com/CMB-S4/spt3g_software/pull/46
* Store data extracted from ARC files in serializable form by arahlin in https://github.com/CMB-S4/spt3g_software/pull/47
* G3Writer: release the GIL during IO by mhasself in https://github.com/CMB-S4/spt3g_software/pull/48
* Add option to suppress map weight object in map binner output. by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/51
* MapBinner optimization by arahlin in https://github.com/CMB-S4/spt3g_software/pull/52
* Consistent handling of `shift_ra` attribute for `HealpixSkyMap` objects by arahlin in https://github.com/CMB-S4/spt3g_software/pull/54
* Add mass units by arahlin in https://github.com/CMB-S4/spt3g_software/pull/55
* Correct handling of patch extraction/insertion with flat sky G3SkyMapWeights objects by arahlin in https://github.com/CMB-S4/spt3g_software/pull/53
* Add G3Constants namespace and python bindings by arahlin in https://github.com/CMB-S4/spt3g_software/pull/58
* Improve mapmaking effiiciency with OpenMP by arahlin in https://github.com/CMB-S4/spt3g_software/pull/56
* Ensure that comparison operators applied to maps return unweighted, unitless map objects by arahlin in https://github.com/CMB-S4/spt3g_software/pull/60
* core/python.cxx: disambiguate something for gcc 11.1 by mhasself in https://github.com/CMB-S4/spt3g_software/pull/61
* Include G3Units.h only where necessary by arahlin in https://github.com/CMB-S4/spt3g_software/pull/59
* Improvements to MapMockObserver by arahlin in https://github.com/CMB-S4/spt3g_software/pull/63
* Update the build system to support installing. by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/57
* New G3Frame types by arahlin in https://github.com/CMB-S4/spt3g_software/pull/64
* Memory efficient map masking utilities by arahlin in https://github.com/CMB-S4/spt3g_software/pull/66
* Handle the polarization convention of the input map properly during mock observation by arahlin in https://github.com/CMB-S4/spt3g_software/pull/68
* Add boost dependency information to exported Spt3gConfig.cmake by tskisner in https://github.com/CMB-S4/spt3g_software/pull/71
* G3TimesampleMap: support G3VectorBool by mhasself in https://github.com/CMB-S4/spt3g_software/pull/72
* rotate weights with flatten_pol if possible, warn if weights are missing by arahlin in https://github.com/CMB-S4/spt3g_software/pull/73
* Add gcp.ARCFile class analogous to core.G3File by arahlin in https://github.com/CMB-S4/spt3g_software/pull/74
* Add support in the MapBinner for per-scan (or sub-obs) map-making. by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/75
* Add ReprojectMaps pipeline module to simplify reprojection of entire map frames by arahlin in https://github.com/CMB-S4/spt3g_software/pull/76
* G3SkyMap.QueryDisc method and MakePointSourceMask function by arahlin in https://github.com/CMB-S4/spt3g_software/pull/77
* Record first and last sample times in output map by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/78
* Bug fix in detector pointing calculation by arahlin in https://github.com/CMB-S4/spt3g_software/pull/79
* Add seek and tell functions from so3g.G3IndexedReader by arahlin in https://github.com/CMB-S4/spt3g_software/pull/81
* More efficient ARC frame calibration by arahlin in https://github.com/CMB-S4/spt3g_software/pull/82
* Super Timestream: Integrate non-double types and array contiguity to timestreams and timestream maps by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/80
* More complete set of python bindings for G3Timestream and friends by arahlin in https://github.com/CMB-S4/spt3g_software/pull/84
* G3SkyMap API Improvements by arahlin in https://github.com/CMB-S4/spt3g_software/pull/85
* Support for boolean/mask maps by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/49
* Area-preserving bilinear interpolation for Healpix maps by arahlin in https://github.com/CMB-S4/spt3g_software/pull/89
* Tweak python detection by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/91
* Add missing include by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/96
* Require fork for multiprocessing by arahlin in https://github.com/CMB-S4/spt3g_software/pull/100
* xy_to_pixel and pixel_to_xy methods for flat sky maps by arahlin in https://github.com/CMB-S4/spt3g_software/pull/99
* Enable direct construction of compact Timestream Maps by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/95
* Explicitly force G3TimestreamMap to have assignment operators by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/102
* G3NetworkSender background serialization by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/98
* Timestream serialization speed by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/103
* Update docstring parser to work with Python 3.11 by arahlin in https://github.com/CMB-S4/spt3g_software/pull/105
* Make serialized masks more compact. by nwhitehorn in https://github.com/CMB-S4/spt3g_software/pull/108
* Bug fix for QueryDisc for center outside the map by arahlin in https://github.com/CMB-S4/spt3g_software/pull/109
* MapTODPointing pipeline module by arahlin in https://github.com/CMB-S4/spt3g_software/pull/110
* Updates to dfmux library for compatibility with hidfmux IceBoard firmware by arahlin in https://github.com/CMB-S4/spt3g_software/pull/106
* Add frame-level bzip2 compression and decompression by arahlin in https://github.com/CMB-S4/spt3g_software/pull/112
* Print core logging messages with timestamps by default by arahlin in https://github.com/CMB-S4/spt3g_software/pull/111
* Partial installation with poetry/pip by marius311 in https://github.com/CMB-S4/spt3g_software/pull/97
* Force caching of Python_NumPy_FOUND to fix repeated application of cmake by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/115
* Track source filename for G3Frame objects that are read in using G3Reader by arahlin in https://github.com/CMB-S4/spt3g_software/pull/118
* Healpix maps with nside > 8192 by arahlin in https://github.com/CMB-S4/spt3g_software/pull/120
* HitsBinner module to compute simple hits maps by arahlin in https://github.com/CMB-S4/spt3g_software/pull/116
* Improvements to maps.CoaddMaps by arahlin in https://github.com/CMB-S4/spt3g_software/pull/117
* Add G3MapQuat and G3MapVectorQuat objects by arahlin in https://github.com/CMB-S4/spt3g_software/pull/121
* Add new pointing model adjustment parameters by arahlin in https://github.com/CMB-S4/spt3g_software/pull/130
* More informative sky map descriptions by arahlin in https://github.com/CMB-S4/spt3g_software/pull/129
* StokesVector and MuellerMatrix Improvements by arahlin in https://github.com/CMB-S4/spt3g_software/pull/126
* Quaternions for sky map pointing by arahlin in https://github.com/CMB-S4/spt3g_software/pull/124
* Map weights subtraction operators by arahlin in https://github.com/CMB-S4/spt3g_software/pull/132
* Make FlattenPol set flat_pol attribute of T maps and weights by cailmdaley in https://github.com/CMB-S4/spt3g_software/pull/136
* Skip empty files in G3Reader by arahlin in https://github.com/CMB-S4/spt3g_software/pull/137
* Disable FITS image compression by default by arahlin in https://github.com/CMB-S4/spt3g_software/pull/138
* Implement custom loading of pybindings to replace `imp.load_dynamic` by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/131
* Preserve source name in scans with calibrator enabled by arahlin in https://github.com/CMB-S4/spt3g_software/pull/142
* Allow extra calibration frames to follow proper calframe files in pipelines by arahlin in https://github.com/CMB-S4/spt3g_software/pull/139
* Avoid unnecessary error log messages in MapBinner by arahlin in https://github.com/CMB-S4/spt3g_software/pull/141
* Efficient storage of integer G3Map and G3Vector objects by arahlin in https://github.com/CMB-S4/spt3g_software/pull/140
* Smarter handling of map polarization properties by arahlin in https://github.com/CMB-S4/spt3g_software/pull/133
* G3PythonContext class for handling the Python GIL by arahlin in https://github.com/CMB-S4/spt3g_software/pull/146
* Update language dialect to C++14 by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/148
* Isolate serialization of python objects in G3PipelineInfo interface by arahlin in https://github.com/CMB-S4/spt3g_software/pull/147
* Testing environment cleanup by arahlin in https://github.com/CMB-S4/spt3g_software/pull/144
* Do not allow seek after EOF in G3Reader by arahlin in https://github.com/CMB-S4/spt3g_software/pull/153
* Optionally disable pipeline halt on SIGINT by arahlin in https://github.com/CMB-S4/spt3g_software/pull/154
* Interface for consistent bolometer band string formatting by arahlin in https://github.com/CMB-S4/spt3g_software/pull/151
* Update dfmux HousekeepingConsumer for mkids firmware by arahlin in https://github.com/CMB-S4/spt3g_software/pull/152
* Update compiler requirements for C++14 by cnweaver in https://github.com/CMB-S4/spt3g_software/pull/149
* Update minimum cmake version to 3.5 by arahlin in https://github.com/CMB-S4/spt3g_software/pull/150
* Add a read-only current_file attribute for G3MultiFileWriter by arahlin in https://github.com/CMB-S4/spt3g_software/pull/155
* Optionally ignore wiring information in HousekeepingConsumer by arahlin in https://github.com/CMB-S4/spt3g_software/pull/156
* Consistent handling of RA sign by arahlin in https://github.com/CMB-S4/spt3g_software/pull/157
* G3Writer as a python context by arahlin in https://github.com/CMB-S4/spt3g_software/pull/158
* Fix and reenable all compiler warnings by arahlin in https://github.com/CMB-S4/spt3g_software/pull/160
* Clean up core library python bindings by arahlin in https://github.com/CMB-S4/spt3g_software/pull/162
* Use smart cmake targets for linking by arahlin in https://github.com/CMB-S4/spt3g_software/pull/161
* Separate shared libraries and python modules by arahlin in https://github.com/CMB-S4/spt3g_software/pull/163
* Build Python wheels by arahlin in https://github.com/CMB-S4/spt3g_software/pull/159
New Contributors
* kferguson42 made their first contribution in https://github.com/CMB-S4/spt3g_software/pull/46
* cnweaver made their first contribution in https://github.com/CMB-S4/spt3g_software/pull/57
* tskisner made their first contribution in https://github.com/CMB-S4/spt3g_software/pull/71
* cailmdaley made their first contribution in https://github.com/CMB-S4/spt3g_software/pull/136
**Full Changelog**: https://github.com/CMB-S4/spt3g_software/compare/0.3...0.4