{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,23]],"date-time":"2026-03-23T23:09:16Z","timestamp":1774307356261,"version":"3.50.1"},"reference-count":78,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","license":[{"start":{"date-parts":[[2024,10,8]],"date-time":"2024-10-08T00:00:00Z","timestamp":1728345600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,10,8]]},"abstract":"<jats:p>\n                    Color programmers manipulate lights, materials, and the resulting colors from light-material interactions. Existing libraries for color programming provide only a thin layer of abstraction around matrix operations. Color programs are, thus, vulnerable to bugs arising from mathematically permissible but physically meaningless matrix computations. Correct implementations are difficult to write and optimize. We introduce C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    to facilitate physically correct and computationally efficient color programming. C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    raises the level of abstraction of color programming by allowing programmers to focus on describing the logic of color physics. Correctness and efficiency are handled by C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    . The type system in C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    assigns physical meaning and dimensions to user-defined objects. The typing rules permit only legal computations informed by color physics and perception. Along with type checking, C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    also generates performance-optimized programs using equality saturation. C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    is implemented as a Python library and compiles to ONNX, a common intermediate representation for tensor computations. C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    not only prevents common errors in color programming, but also does so without run-time overhead: even unoptimized C\n                    <jats:sc>ooler<\/jats:sc>\n                    S\n                    <jats:sc>pace<\/jats:sc>\n                    programs out-perform existing Python-based color programming systems by up to 5.7 times; our optimizations provide up to an additional 1.4 times speed-up.\n                  <\/jats:p>","DOI":"10.1145\/3689741","type":"journal-article","created":{"date-parts":[[2024,10,8]],"date-time":"2024-10-08T03:23:04Z","timestamp":1728357784000},"page":"846-875","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["CoolerSpace: A Language for Physically Correct and Computationally Efficient Color Programming"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0009-0008-1250-769X","authenticated-orcid":false,"given":"Ethan","family":"Chen","sequence":"first","affiliation":[{"name":"University of Rochester, Rochester, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3945-925X","authenticated-orcid":false,"given":"Jiwon","family":"Chang","sequence":"additional","affiliation":[{"name":"University of Rochester, Rochester, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2802-0578","authenticated-orcid":false,"given":"Yuhao","family":"Zhu","sequence":"additional","affiliation":[{"name":"University of Rochester, Rochester, USA"}]}],"member":"320","published-online":{"date-parts":[[2024,10,8]]},"reference":[{"key":"e_1_3_2_2_1","unstructured":"2011. Answer to \"adding\/mixing colors in HSV Space\". https:\/\/stackoverflow.com\/a\/7388476."},{"key":"e_1_3_2_3_1","unstructured":"2014. Answer to \"Interpolate from one color to another\". https:\/\/stackoverflow.com\/a\/21010385."},{"key":"e_1_3_2_4_1","unstructured":"2016. Weird interpolation between colors in hsv? https:\/\/stackoverflow.com\/q\/37471461."},{"key":"e_1_3_2_5_1","unstructured":"2021. How to calculate (a physical) ratio of colors to achieve a target color? https:\/\/math.stackexchange.com\/q\/4335003."},{"key":"e_1_3_2_6_1","unstructured":"adriahf. 2016. Increase the velocity of the calculations. \u00b7 Issue #302 \u00b7 colour-science\/colour. https:\/\/github.com\/colour-science\/colour\/issues\/302"},{"key":"e_1_3_2_7_1","doi-asserted-by":"publisher","unstructured":"Willow Ahrens Fredrik Kjolstad and Saman Amarasinghe. 2022. Autoscheduling for sparse tensor algebra with an asymptotic cost model. In Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation. 269\u2013285. https:\/\/doi.org\/10.1145\/3519939.3523442 10.1145\/3519939.3523442","DOI":"10.1145\/3519939.3523442"},{"key":"e_1_3_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1029008"},{"key":"e_1_3_2_9_1","unstructured":"Simon Amarasingham. 2019. Red and green Eclectus Parrots. https:\/\/www.flickr.com\/photos\/22896868@N05\/49257147352\/"},{"key":"e_1_3_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3485486"},{"key":"e_1_3_2_11_1","doi-asserted-by":"publisher","DOI":"10.17613\/d08z-ga34"},{"key":"e_1_3_2_12_1","unstructured":"G. Bradski. 2000. The OpenCV Library. Dr. Dobb\u2019s Journal of Software Tools (2000)."},{"key":"e_1_3_2_13_1","first-page":"10","article-title":"Colorimetry","volume":"3","author":"Brainard David H","year":"2010","unstructured":"David H Brainard and Andrew Stockman. 2010. Colorimetry. The Optical Society of America Handbook of Optics 3 (2010), 10\u20131.","journal-title":"The Optical Society of America Handbook of Optics"},{"key":"e_1_3_2_14_1","doi-asserted-by":"publisher","DOI":"10.1364\/josaa.14.002647"},{"key":"e_1_3_2_15_1","volume-title":"Basic principles of textile coloration","author":"Broadbent Arthur D","year":"2001","unstructured":"Arthur D Broadbent. 2001. Basic principles of textile coloration. Vol. 132. Society of Dyers and Colorists Bradford."},{"key":"e_1_3_2_16_1","unstructured":"Jiwon Chang and Ethan Chen. 2024. eggwrap. https:\/\/github.com\/horizon-research\/eggwrap"},{"key":"e_1_3_2_17_1","unstructured":"Ethan Chen. 2024a. CoolerSpace. https:\/\/github.com\/horizon-research\/CoolerSpace"},{"key":"e_1_3_2_18_1","unstructured":"Ethan Chen. 2024b. CoolerSpace Benchmarker. https:\/\/github.com\/horizon-research\/CoolerSpaceBenchmarker"},{"key":"e_1_3_2_19_1","unstructured":"Ethan Chen and Jiwon Chang. 2024. onneggs. https:\/\/github.com\/horizon-research\/onneggs"},{"key":"e_1_3_2_20_1","doi-asserted-by":"publisher","unstructured":"Ethan Chen Jiwon Chang and Yuhao Zhu. 2024. CoolerSpace Artifacts. https:\/\/doi.org\/10.5281\/zenodo.13621721 10.5281\/zenodo.13621721","DOI":"10.5281\/zenodo.13621721"},{"key":"e_1_3_2_21_1","doi-asserted-by":"publisher","unstructured":"Tianqi Chen Thierry Moreau Ziheng Jiang Lianmin Zheng Eddie Yan Haichen Shen Meghan Cowan Leyuan Wang Yuwei Hu Luis Ceze et al. 2018. {TVM}: An automated {End-to-End} optimizing compiler for deep learning. In 13th USENIX Symposium on Operating Systems Design and Implementation (OSD118). 578\u2013594. https:\/\/doi.org\/10.5555\/3291168.3291211 10.5555\/3291168.3291211","DOI":"10.5555\/3291168.3291211"},{"key":"e_1_3_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1040294.1040301"},{"key":"e_1_3_2_23_1","unstructured":"Jeffrey Clark. 2023. Pillow. https:\/\/github.com\/python-pillow\/Pillow."},{"key":"e_1_3_2_24_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.suscom.2021.100520"},{"key":"e_1_3_2_25_1","unstructured":"Colour Developers. 2015. Colour Science for Python. https:\/\/www.colour-science.org\/."},{"key":"e_1_3_2_26_1","unstructured":"ONNX Runtime Developers. 2021. ONNX Runtime. https:\/\/onnxruntime.ai\/. Version: 1.16."},{"key":"e_1_3_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/15042.15048"},{"issue":"3","key":"e_1_3_2_28_1","doi-asserted-by":"crossref","first-page":"390","DOI":"10.1088\/0959-5309\/52\/3\/310","article-title":"The colour of pigment mixtures","volume":"52","author":"Duncan DR","year":"1940","unstructured":"DR Duncan. 1940. The colour of pigment mixtures. Proceedings of the Physical Society 52, 3 (1940), 390.","journal-title":"Proceedings of the Physical Society"},{"key":"e_1_3_2_29_1","unstructured":"Joshua Ebenezer. 2021. Computational speed for conversions \u00b7 Issue #788 \u00b7 colour-science\/colour. https:\/\/github.com\/colour-science\/colour\/issues\/788"},{"key":"e_1_3_2_30_1","doi-asserted-by":"publisher","DOI":"10.1016\/s0042-6989(00)00050-x"},{"key":"e_1_3_2_31_1","doi-asserted-by":"publisher","unstructured":"Daniel J Fremont Tommaso Dreossi Shromona Ghosh Xiangyu Yue Alberto L Sangiovanni-Vincentelli and Sanjit A Seshia. 2019. Scenic: a language for scenario specification and scene generation. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation. 63\u201378. https:\/\/doi.org\/10.1145\/3314221.3314633 10.1145\/3314221.3314633","DOI":"10.1145\/3314221.3314633"},{"key":"e_1_3_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428241"},{"key":"e_1_3_2_33_1","unstructured":"Romain Guy. 2017. Understanding color. https:\/\/www.youtube.com\/watch?v=r8NeG0wmFXM"},{"key":"e_1_3_2_34_1","doi-asserted-by":"publisher","DOI":"10.1038\/s41586-020-2649-2"},{"key":"e_1_3_2_35_1","unstructured":"Trish Hartmann. 2012. Eleuthera Sunset. https:\/\/openverse.org\/image\/d693e7e7-d7aa-4801-96c5-56674e5715c6"},{"key":"e_1_3_2_36_1","doi-asserted-by":"publisher","DOI":"10.1088\/0508-3443\/15\/8\/310"},{"key":"e_1_3_2_37_1","doi-asserted-by":"publisher","unstructured":"Zhihao Jia Oded Padon James Thomas Todd Warszawski Matei Zaharia and Alex Aiken. 2019. TASO: optimizing deep learning computation with automatic generation of graph substitutions. In Proceedings of the 27th ACM Symposium on Operating Systems Principles. 47\u201362. https:\/\/doi.org\/10.1145\/3341301.3359630 10.1145\/3341301.3359630","DOI":"10.1145\/3341301.3359630"},{"key":"e_1_3_2_38_1","doi-asserted-by":"publisher","unstructured":"Tian Jin Gheorghe-Teodor Bercea Tung D Le Tong Chen Gong Su Haruki Imai Yasushi Negishi Anh Leu Kevin O\u2019Brien Kiyokuni Kawachiya et al. 2020. Compiling onnx neural network models using mlir. arXiv preprint arXiv:2008.08272 (2020). https:\/\/doi.org\/10.48550\/arXiv.2008.08272 10.48550\/arXiv.2008.08272","DOI":"10.48550\/arXiv.2008.08272"},{"key":"e_1_3_2_39_1","doi-asserted-by":"publisher","DOI":"10.1002\/col.10107"},{"key":"e_1_3_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1152649.1152651"},{"key":"e_1_3_2_41_1","doi-asserted-by":"publisher","unstructured":"Michael Karr and David B. Loveman. 1978. Incorporation of units into programming languages. 21 5 (1978) 385\u2013391. https:\/\/doi.org\/10.1145\/359488.359501 10.1145\/359488.359501","DOI":"10.1145\/359488.359501"},{"key":"e_1_3_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133901"},{"key":"e_1_3_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2866569"},{"key":"e_1_3_2_44_1","doi-asserted-by":"publisher","DOI":"10.1364\/JOSA.38.000448"},{"issue":"593","key":"e_1_3_2_45_1","first-page":"259","article-title":"An article on optics of paint layers","volume":"12","author":"Kubelka Paul","year":"1931","unstructured":"Paul Kubelka and Franz Munk. 1931. An article on optics of paint layers. Z. Tech. Phys 12, 593-601 (1931), 259\u20132748.","journal-title":"Z. Tech. Phys"},{"key":"e_1_3_2_46_1","doi-asserted-by":"publisher","DOI":"10.1177\/1948550617697177"},{"key":"e_1_3_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2833157.2833162"},{"key":"e_1_3_2_48_1","unstructured":"Dmitry Lavrov. 2020. Reading 65^3 Iridas 3D LUT is incredibly slow. \u00b7 Issue #573 \u00b7 colour-science\/colour. https:\/\/github.com\/colour-science\/colour\/issues\/573"},{"key":"e_1_3_2_49_1","doi-asserted-by":"publisher","DOI":"10.1002\/col.22131"},{"key":"e_1_3_2_50_1","unstructured":"Bruce Lindbloom. 2017. XYZ to LAB. http:\/\/www.brucelindbloom.com\/index.html?Eqn%5FXYZ%5Fto%5FLab.html"},{"key":"e_1_3_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/3498717"},{"key":"e_1_3_2_52_1","doi-asserted-by":"publisher","DOI":"10.1201\/9781439865521"},{"key":"e_1_3_2_53_1","unstructured":"Francisco Massa. 2021. [feature request] rgb2lab \/ rgb2hsv \/ rgb2gray and other color space conversions (maybe upstream from kornia? or colorsys python core module?) \u00b7 Issue #4029 \u00b7 pytorch\/vision. https:\/\/github.com\/pytorch\/vision\/issues\/4029"},{"key":"e_1_3_2_54_1","unstructured":"Don McCurdy. 2022. Color management. https:\/\/threejs.org\/docs\/#manual\/en\/introduction\/Color-management"},{"key":"e_1_3_2_55_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-02834-3"},{"key":"e_1_3_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/292540.292561"},{"key":"e_1_3_2_57_1","unstructured":"Ryosuke Okuta Yuya Unno Daisuke Nishino Shohei Hido and Crissman Loomis. 2017. CuPy: A NumPy-Compatible Library for NVIDIA GPU Calculations. In Proceedings of Workshop on Machine Learning Systems (LearningSys) in The Thirty-first Annual Conference on Neural Information Processing Systems (NIPS)."},{"key":"e_1_3_2_58_1","unstructured":"Onnx. 2018. Open Neural Network Exchange. https:\/\/github.com\/onnx\/onnx."},{"key":"e_1_3_2_59_1","volume-title":"Physically based rendering: From theory to implementation","author":"Pharr Matt","year":"2023","unstructured":"Matt Pharr, Wenzel Jakob, and Greg Humphreys. 2023. Physically based rendering: From theory to implementation. MIT Press."},{"key":"e_1_3_2_60_1","doi-asserted-by":"publisher","DOI":"10.1016\/B978-0-12-391926-7.50059-X"},{"key":"e_1_3_2_61_1","doi-asserted-by":"publisher","DOI":"10.1088\/978-0-7503-2558-5"},{"key":"e_1_3_2_62_1","doi-asserted-by":"publisher","DOI":"10.1117\/1.oe.59.11.110801"},{"key":"e_1_3_2_63_1","doi-asserted-by":"publisher","DOI":"10.1109\/jsac.2002.806121"},{"key":"e_1_3_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993316.1993518"},{"key":"e_1_3_2_65_1","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1201\/9781420041484","volume-title":"Digital color imaging handbook","author":"Sharma Gaurav","year":"2017","unstructured":"Gaurav Sharma. 2017. Color fundamentals for digital imaging. In Digital color imaging handbook. CRC press, 1\u2013114."},{"key":"e_1_3_2_66_1","doi-asserted-by":"crossref","DOI":"10.1201\/9781420041484","volume-title":"Digital color imaging handbook","author":"Sharma Gaurav","year":"2017","unstructured":"Gaurav Sharma and Raja Bala. 2017. Digital color imaging handbook. CRC press."},{"key":"e_1_3_2_67_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-54833-8_3"},{"key":"e_1_3_2_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/3478513.3480549"},{"key":"e_1_3_2_69_1","unstructured":"van der Walt Stefan. 2017. Finding color space information about image \u00b7 Issue #2175 \u00b7 scikit-image\/scikit-image. https:\/\/github.com\/scikit-image\/scikit-image\/issues\/2175"},{"key":"e_1_3_2_70_1","first-page":"11","article-title":"Color vision mechanisms","volume":"3","author":"Stockman Andrew","year":"2010","unstructured":"Andrew Stockman and David H Brainard. 2010. Color vision mechanisms. The Optical Society of America Handbook of Optics 3 (2010), 11\u20131.","journal-title":"The Optical Society of America Handbook of Optics"},{"key":"e_1_3_2_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/3278122.3278131"},{"key":"e_1_3_2_72_1","doi-asserted-by":"publisher","unstructured":"Ross Tate Michael Stepp Zachary Tatlock and Sorin Lerner. 2009. Equality saturation: a new approach to optimization. In Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 264\u2013276. https:\/\/doi.org\/10.1145\/1480881.1480915 10.1145\/1480881.1480915","DOI":"10.1145\/1480881.1480915"},{"key":"e_1_3_2_73_1","unstructured":"Varkor. 2018. Types for units of measure. https:\/\/varkor.github.io\/blog\/2018\/07\/30\/types-for-units-of-measure.html"},{"key":"e_1_3_2_74_1","doi-asserted-by":"publisher","DOI":"10.48550\/arXiv.1802.04730"},{"key":"e_1_3_2_75_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1520-6378(199908)24:4<243::AID-COL5>3.0.CO;2-3"},{"key":"e_1_3_2_76_1","volume-title":"Foundations of vision","author":"Wandell Brian A","year":"1995","unstructured":"Brian A Wandell. 1995. Foundations of vision. sinauer Associates."},{"key":"e_1_3_2_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/3434304"},{"key":"e_1_3_2_78_1","volume-title":"Color science: concepts and methods, quantitative data and formulae","author":"Wyszecki G\u00fcnther","year":"2000","unstructured":"G\u00fcnther Wyszecki and Walter Stanley Stiles. 2000. Color science: concepts and methods, quantitative data and formulae. Vol. 40. John wiley & sons."},{"key":"e_1_3_2_79_1","first-page":"255","article-title":"Equality saturation for tensor graph superoptimization","volume":"3","author":"Yang Yichen","year":"2021","unstructured":"Yichen Yang, Phitchaya Phothilimthana, Yisu Wang, Max Willsey, Sudip Roy, and Jacques Pienaar. 2021. Equality saturation for tensor graph superoptimization. Proceedings of Machine Learning and Systems 3 (2021), 255\u2013268.","journal-title":"Proceedings of Machine Learning and Systems"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3689741","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3689741","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T09:10:30Z","timestamp":1770196230000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3689741"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,10,8]]},"references-count":78,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2024,10,8]]}},"alternative-id":["10.1145\/3689741"],"URL":"https:\/\/doi.org\/10.1145\/3689741","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,10,8]]},"assertion":[{"value":"2024-04-05","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-10-08","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}