codegreen 0.3.1__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. {codegreen-0.3.1 → codegreen-0.3.2}/CMakeLists.txt +1 -1
  2. {codegreen-0.3.1/codegreen.egg-info → codegreen-0.3.2}/PKG-INFO +1 -1
  3. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/profilers.py +68 -0
  4. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/suites/__init__.py +4 -0
  5. codegreen-0.3.2/benchmark/suites/dacapo.py +45 -0
  6. codegreen-0.3.2/benchmark/suites/renaissance.py +48 -0
  7. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/__init__.py +1 -1
  8. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/cli/cli.py +21 -2
  9. {codegreen-0.3.1 → codegreen-0.3.2/codegreen.egg-info}/PKG-INFO +1 -1
  10. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen.egg-info/SOURCES.txt +2 -0
  11. {codegreen-0.3.1 → codegreen-0.3.2}/pyproject.toml +1 -1
  12. {codegreen-0.3.1 → codegreen-0.3.2}/tests/test_instrumentation.py +2 -3
  13. {codegreen-0.3.1 → codegreen-0.3.2}/LICENSE +0 -0
  14. {codegreen-0.3.1 → codegreen-0.3.2}/MANIFEST.in +0 -0
  15. {codegreen-0.3.1 → codegreen-0.3.2}/README.md +0 -0
  16. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/__init__.py +0 -0
  17. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/__main__.py +0 -0
  18. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/compilers.py +0 -0
  19. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/config.py +0 -0
  20. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/harness.py +0 -0
  21. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/results.py +0 -0
  22. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/suites/base.py +0 -0
  23. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/suites/benchmarksgame.py +0 -0
  24. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/suites/perfopt.py +0 -0
  25. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/validation/__init__.py +0 -0
  26. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/validation/analysis.py +0 -0
  27. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/validation/experiments.py +0 -0
  28. {codegreen-0.3.1 → codegreen-0.3.2}/benchmark/validation/reporting.py +0 -0
  29. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/__init__.py +0 -0
  30. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/_ts_java.py +0 -0
  31. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/__init__.py +0 -0
  32. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/builder.py +0 -0
  33. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/callgraph.py +0 -0
  34. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/dataflow.py +0 -0
  35. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/energy_flow.py +0 -0
  36. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/features.py +0 -0
  37. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/pdg.py +0 -0
  38. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/types.py +0 -0
  39. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analysis/cfg/visualization.py +0 -0
  40. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analyzer/__init__.py +0 -0
  41. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/analyzer/plot.py +0 -0
  42. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/cli/__init__.py +0 -0
  43. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/cli/entrypoint.py +0 -0
  44. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/config.json +0 -0
  45. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/__init__.py +0 -0
  46. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/ast_processor.py +0 -0
  47. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/bridge_analyze.py +0 -0
  48. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/bridge_instrument.py +0 -0
  49. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/config.py +0 -0
  50. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/configs/TEMPLATE.json +0 -0
  51. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/configs/c.json +0 -0
  52. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/configs/cpp.json +0 -0
  53. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/configs/java.json +0 -0
  54. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/configs/javascript.json +0 -0
  55. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/configs/python.json +0 -0
  56. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/engine.py +0 -0
  57. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_configs.py +0 -0
  58. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_engine.py +0 -0
  59. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_runtimes/c/codegreen_runtime.h +0 -0
  60. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_runtimes/cpp/codegreen/runtime.hpp +0 -0
  61. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_runtimes/java/codegreen/runtime/CodeGreenRuntime.java +0 -0
  62. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_runtimes/java/codegreen/runtime/CodeGreenStandaloneRuntime.java +0 -0
  63. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/instrumentation/language_runtimes/python/codegreen_runtime.py +0 -0
  64. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/utils/__init__.py +0 -0
  65. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/utils/binary.py +0 -0
  66. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen/utils/platform.py +0 -0
  67. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen.egg-info/dependency_links.txt +0 -0
  68. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen.egg-info/entry_points.txt +0 -0
  69. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen.egg-info/not-zip-safe +0 -0
  70. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen.egg-info/requires.txt +0 -0
  71. {codegreen-0.3.1 → codegreen-0.3.2}/codegreen.egg-info/top_level.txt +0 -0
  72. {codegreen-0.3.1 → codegreen-0.3.2}/requirements.txt +0 -0
  73. {codegreen-0.3.1 → codegreen-0.3.2}/setup.cfg +0 -0
  74. {codegreen-0.3.1 → codegreen-0.3.2}/setup.py +0 -0
  75. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/binarytrees/2.c +0 -0
  76. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/helloworld/1.c +0 -0
  77. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/knucleotide/1.c +0 -0
  78. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/mandelbrot/1-ffi.c +0 -0
  79. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/mandelbrot/1-mffi.c +0 -0
  80. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/nbody/2.c +0 -0
  81. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/nbody/5.c +0 -0
  82. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/nbody/8-i.c +0 -0
  83. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/nsieve/1.c +0 -0
  84. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/3.c +0 -0
  85. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/4.c +0 -0
  86. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/5-im.c +0 -0
  87. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/6-im.c +0 -0
  88. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/aligned_indent.c +0 -0
  89. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/array.c +0 -0
  90. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/comment.c +0 -0
  91. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/compound_lit.c +0 -0
  92. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/cond.c +0 -0
  93. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/enum.c +0 -0
  94. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/expr.c +0 -0
  95. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/func.c +0 -0
  96. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/if_else.c +0 -0
  97. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/issue-1568.c +0 -0
  98. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/issue-2086.c +0 -0
  99. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/issue-4079.c +0 -0
  100. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/issue-4117.c +0 -0
  101. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/issue-4525.c +0 -0
  102. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/label.c +0 -0
  103. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/loop.c +0 -0
  104. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/no_braces.c +0 -0
  105. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/preproc_cond.c +0 -0
  106. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/preproc_func.c +0 -0
  107. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/string.c +0 -0
  108. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/struct.c +0 -0
  109. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/switch.c +0 -0
  110. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/ternary.c +0 -0
  111. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/indent/c/unfinished_comment.c +0 -0
  112. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/nvim-treesitter/tests/query/highlights/c/enums-as-constants.c +0 -0
  113. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/crates/cli/src/templates/PARSER_NAME.h +0 -0
  114. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/crates/cli/src/templates/py-binding.c +0 -0
  115. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/crates/generate/src/templates/alloc.h +0 -0
  116. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/crates/generate/src/templates/array.h +0 -0
  117. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/crates/highlight/include/tree_sitter/highlight.h +0 -0
  118. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/crates/tags/include/tree_sitter/tags.h +0 -0
  119. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/CMakeLists.txt +0 -0
  120. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/binding_web/lib/tree-sitter.c +0 -0
  121. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/include/tree_sitter/api.h +0 -0
  122. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/alloc.c +0 -0
  123. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/alloc.h +0 -0
  124. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/array.h +0 -0
  125. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/atomic.h +0 -0
  126. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/clock.h +0 -0
  127. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/error_costs.h +0 -0
  128. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/get_changed_ranges.c +0 -0
  129. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/get_changed_ranges.h +0 -0
  130. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/host.h +0 -0
  131. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/language.c +0 -0
  132. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/language.h +0 -0
  133. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/length.h +0 -0
  134. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/lexer.c +0 -0
  135. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/lexer.h +0 -0
  136. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/lib.c +0 -0
  137. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/node.c +0 -0
  138. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/parser.c +0 -0
  139. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/parser.h +0 -0
  140. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/point.h +0 -0
  141. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/portable/endian.h +0 -0
  142. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/query.c +0 -0
  143. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/reduce_action.h +0 -0
  144. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/reusable_node.h +0 -0
  145. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/stack.c +0 -0
  146. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/stack.h +0 -0
  147. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/subtree.c +0 -0
  148. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/subtree.h +0 -0
  149. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/tree.c +0 -0
  150. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/tree.h +0 -0
  151. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/tree_cursor.c +0 -0
  152. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/tree_cursor.h +0 -0
  153. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/ts_assert.h +0 -0
  154. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode/ptypes.h +0 -0
  155. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode/umachine.h +0 -0
  156. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode/urename.h +0 -0
  157. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode/utf.h +0 -0
  158. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode/utf16.h +0 -0
  159. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode/utf8.h +0 -0
  160. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/unicode.h +0 -0
  161. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/wasm/stdlib.c +0 -0
  162. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/wasm/wasm-stdlib.h +0 -0
  163. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/wasm_store.c +0 -0
  164. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/lib/src/wasm_store.h +0 -0
  165. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/depends_on_column/scanner.c +0 -0
  166. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/epsilon_external_extra_tokens/scanner.c +0 -0
  167. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/epsilon_external_tokens/scanner.c +0 -0
  168. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/external_and_internal_anonymous_tokens/scanner.c +0 -0
  169. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/external_and_internal_tokens/scanner.c +0 -0
  170. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/external_extra_tokens/scanner.c +0 -0
  171. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/external_tokens/scanner.c +0 -0
  172. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/external_unicode_column_alignment/scanner.c +0 -0
  173. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/get_col_eof/scanner.c +0 -0
  174. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/get_col_should_hang_not_crash/scanner.c +0 -0
  175. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/inverted_external_token/scanner.c +0 -0
  176. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter/test/fixtures/test_grammars/uses_current_column/scanner.c +0 -0
  177. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/CMakeLists.txt +0 -0
  178. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/bindings/c/tree_sitter/tree-sitter-c.h +0 -0
  179. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/bindings/python/tree_sitter_c/binding.c +0 -0
  180. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/bindings/swift/TreeSitterC/c.h +0 -0
  181. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/examples/cluster.c +0 -0
  182. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/examples/malloc.c +0 -0
  183. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/examples/parser.c +0 -0
  184. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/src/parser.c +0 -0
  185. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/src/tree_sitter/alloc.h +0 -0
  186. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/src/tree_sitter/array.h +0 -0
  187. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/src/tree_sitter/parser.h +0 -0
  188. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/test/highlight/keywords.c +0 -0
  189. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-c/test/highlight/names.c +0 -0
  190. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/CMakeLists.txt +0 -0
  191. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/bindings/c/tree-sitter-cpp.h +0 -0
  192. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/bindings/python/tree_sitter_cpp/binding.c +0 -0
  193. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/bindings/swift/TreeSitterCPP/cpp.h +0 -0
  194. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/examples/marker-index.h +0 -0
  195. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/src/parser.c +0 -0
  196. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/src/scanner.c +0 -0
  197. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/src/tree_sitter/alloc.h +0 -0
  198. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/src/tree_sitter/array.h +0 -0
  199. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-cpp/src/tree_sitter/parser.h +0 -0
  200. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/CMakeLists.txt +0 -0
  201. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/bindings/c/tree-sitter-java.h +0 -0
  202. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/bindings/python/tree_sitter_java/binding.c +0 -0
  203. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/bindings/swift/TreeSitterJava/java.h +0 -0
  204. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/src/parser.c +0 -0
  205. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/src/tree_sitter/alloc.h +0 -0
  206. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/src/tree_sitter/array.h +0 -0
  207. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-java/src/tree_sitter/parser.h +0 -0
  208. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/CMakeLists.txt +0 -0
  209. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/bindings/c/tree-sitter-python.h +0 -0
  210. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/bindings/python/tree_sitter_python/binding.c +0 -0
  211. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/bindings/swift/TreeSitterPython/python.h +0 -0
  212. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/src/parser.c +0 -0
  213. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/src/scanner.c +0 -0
  214. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/src/tree_sitter/alloc.h +0 -0
  215. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/src/tree_sitter/array.h +0 -0
  216. {codegreen-0.3.1 → codegreen-0.3.2}/third_party/tree-sitter-python/src/tree_sitter/parser.h +0 -0
@@ -84,7 +84,7 @@ add_custom_target(dev-install ALL
84
84
  DEPENDS codegreen-nemb
85
85
  COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/lib
86
86
  COMMAND ${CMAKE_COMMAND} -E copy
87
- ${CMAKE_BINARY_DIR}/lib/libcodegreen-nemb${CMAKE_SHARED_LIBRARY_SUFFIX}
87
+ $<TARGET_FILE:codegreen-nemb>
88
88
  ${CMAKE_SOURCE_DIR}/lib/
89
89
  COMMENT "Dev-install: copying NEMB to ${CMAKE_SOURCE_DIR}/lib/"
90
90
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codegreen
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Energy-aware software development tool for measuring and optimizing code energy consumption
5
5
  Author-email: Saurabhsingh Rajput <saurabh@dal.ca>
6
6
  Maintainer-email: Saurabhsingh Rajput <saurabh@dal.ca>
@@ -202,11 +202,79 @@ class NativeProfiler(ProfilerInterface):
202
202
  def is_available(self) -> bool:
203
203
  return True
204
204
 
205
+ class CodeCarbonProfiler(ProfilerInterface):
206
+ """Wraps CodeCarbon for energy measurement (requires: pip install codecarbon)."""
207
+ def run(self, cmd: List[str], timeout: int = 300) -> ProfileResult:
208
+ try:
209
+ from codecarbon import EmissionsTracker
210
+ except ImportError:
211
+ return ProfileResult(0.0, 0.0, "", [], {"error": "codecarbon not installed"})
212
+ tracker = EmissionsTracker(log_level="error", save_to_file=False)
213
+ tracker.start()
214
+ start = time.perf_counter()
215
+ result = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)
216
+ elapsed = time.perf_counter() - start
217
+ emissions = tracker.stop()
218
+ energy = tracker._total_energy.kWh * 3_600_000 # kWh -> J
219
+ return ProfileResult(energy, elapsed, result.stdout, [],
220
+ {"emissions_kg_co2": emissions, "energy_kwh": tracker._total_energy.kWh})
221
+
222
+ def is_available(self) -> bool:
223
+ try:
224
+ import codecarbon
225
+ return True
226
+ except ImportError:
227
+ return False
228
+
229
+
230
+ class JoularJXProfiler(ProfilerInterface):
231
+ """Wraps JoularJX for Java energy measurement (requires JoularJX agent jar)."""
232
+ def __init__(self, agent_path: str = ""):
233
+ self.agent_path = agent_path or self._find_agent()
234
+
235
+ def _find_agent(self) -> str:
236
+ for p in [Path("joularjx-agent.jar"), Path.home() / ".joularjx" / "joularjx-agent.jar"]:
237
+ if p.exists():
238
+ return str(p)
239
+ return ""
240
+
241
+ def run(self, cmd: List[str], timeout: int = 300) -> ProfileResult:
242
+ if not self.agent_path:
243
+ return ProfileResult(0.0, 0.0, "", [], {"error": "JoularJX agent not found"})
244
+ jx_cmd = cmd.copy()
245
+ if cmd[0] == "java":
246
+ jx_cmd.insert(1, f"-javaagent:{self.agent_path}")
247
+ start = time.perf_counter()
248
+ result = subprocess.run(jx_cmd, capture_output=True, text=True, timeout=timeout)
249
+ elapsed = time.perf_counter() - start
250
+ energy = self._parse_joularjx_output()
251
+ return ProfileResult(energy, elapsed, result.stdout, [], {"agent": self.agent_path})
252
+
253
+ def _parse_joularjx_output(self) -> float:
254
+ csv_path = Path("joularJX-all-methods-energy.csv")
255
+ if not csv_path.exists():
256
+ return 0.0
257
+ total = 0.0
258
+ for line in csv_path.read_text().splitlines()[1:]:
259
+ parts = line.split(",")
260
+ if len(parts) >= 2:
261
+ try:
262
+ total += float(parts[-1])
263
+ except ValueError:
264
+ pass
265
+ return total
266
+
267
+ def is_available(self) -> bool:
268
+ return bool(self.agent_path) and Path(self.agent_path).exists()
269
+
270
+
205
271
  def get_profiler(name: str) -> ProfilerInterface:
206
272
  profilers = {
207
273
  "codegreen": CodeGreenProfiler,
208
274
  "perf": PerfProfiler,
209
275
  "native": NativeProfiler,
276
+ "codecarbon": CodeCarbonProfiler,
277
+ "joularjx": JoularJXProfiler,
210
278
  }
211
279
  if name not in profilers:
212
280
  raise ValueError(f"Unknown profiler: {name}. Available: {list(profilers.keys())}")
@@ -2,10 +2,14 @@
2
2
  from benchmark.suites.base import Suite, Task
3
3
  from benchmark.suites.benchmarksgame import BenchmarksgameSuite
4
4
  from benchmark.suites.perfopt import PerfOptSuite
5
+ from benchmark.suites.dacapo import DaCapoSuite
6
+ from benchmark.suites.renaissance import RenaissanceSuite
5
7
 
6
8
  SUITES = {
7
9
  "benchmarksgame": BenchmarksgameSuite,
8
10
  "perfopt": PerfOptSuite,
11
+ "dacapo": DaCapoSuite,
12
+ "renaissance": RenaissanceSuite,
9
13
  }
10
14
 
11
15
  def get_suite(name: str, **kwargs) -> Suite:
@@ -0,0 +1,45 @@
1
+ """DaCapo benchmark suite for Java workloads.
2
+ Requires: DaCapo jar downloaded from https://dacapobench.org/
3
+ Usage: codegreen benchmark --suite dacapo --dataset-dir /path/to/dacapo.jar
4
+ """
5
+ from pathlib import Path
6
+ from typing import List, Optional
7
+ from benchmark.suites.base import Suite, Task
8
+
9
+ DACAPO_BENCHMARKS = [
10
+ "avrora", "batik", "biojava", "cassandra", "eclipse", "fop",
11
+ "graphchi", "h2", "h2o", "jme", "jython", "kafka",
12
+ "luindex", "lusearch", "pmd", "spring", "sunflow",
13
+ "tomcat", "tradebeans", "tradesoap", "xalan", "zxing",
14
+ ]
15
+
16
+
17
+ class DaCapoSuite(Suite):
18
+ def __init__(self, dataset_dir: str = "", benchmarks: List[str] = None):
19
+ self.jar_path = Path(dataset_dir) if dataset_dir else None
20
+ self.benchmarks = benchmarks or DACAPO_BENCHMARKS
21
+
22
+ @property
23
+ def name(self) -> str:
24
+ return "dacapo"
25
+
26
+ def discover(self, filters: Optional[dict] = None) -> List[Task]:
27
+ if not self.jar_path or not self.jar_path.exists():
28
+ raise FileNotFoundError(f"DaCapo jar not found at {self.jar_path}. "
29
+ "Download from https://dacapobench.org/")
30
+ selected = self.benchmarks
31
+ if filters and "benchmarks" in filters:
32
+ selected = [b for b in selected if b in filters["benchmarks"]]
33
+ return [Task(
34
+ name=b, language="java",
35
+ run_command=["java", "-jar", str(self.jar_path), b],
36
+ variant="default",
37
+ metadata={"suite": "dacapo", "benchmark": b}
38
+ ) for b in selected]
39
+
40
+ def build(self, task: Task) -> Task:
41
+ return task # DaCapo is pre-built
42
+
43
+ @property
44
+ def default_timeout(self) -> int:
45
+ return 600
@@ -0,0 +1,48 @@
1
+ """Renaissance benchmark suite for modern JVM workloads.
2
+ Requires: Renaissance jar downloaded from https://renaissance.dev/
3
+ Usage: codegreen benchmark --suite renaissance --dataset-dir /path/to/renaissance.jar
4
+ """
5
+ from pathlib import Path
6
+ from typing import List, Optional
7
+ from benchmark.suites.base import Suite, Task
8
+
9
+ RENAISSANCE_BENCHMARKS = [
10
+ "akka-uct", "als", "chi-square", "db-shootout", "dec-tree",
11
+ "dotty", "finagle-chirper", "finagle-http", "fj-kmeans",
12
+ "future-genetic", "gauss-mix", "log-regression", "mnemonics",
13
+ "movie-lens", "naive-bayes", "neo4j-analytics", "page-rank",
14
+ "par-mnemonics", "philosophers", "reactors", "rx-scrabble",
15
+ "scala-doku", "scala-kmeans", "scala-stm-bench7", "scrabble",
16
+ ]
17
+
18
+
19
+ class RenaissanceSuite(Suite):
20
+ def __init__(self, dataset_dir: str = "", benchmarks: List[str] = None, repetitions: int = 1):
21
+ self.jar_path = Path(dataset_dir) if dataset_dir else None
22
+ self.benchmarks = benchmarks or RENAISSANCE_BENCHMARKS
23
+ self.repetitions = repetitions
24
+
25
+ @property
26
+ def name(self) -> str:
27
+ return "renaissance"
28
+
29
+ def discover(self, filters: Optional[dict] = None) -> List[Task]:
30
+ if not self.jar_path or not self.jar_path.exists():
31
+ raise FileNotFoundError(f"Renaissance jar not found at {self.jar_path}. "
32
+ "Download from https://renaissance.dev/")
33
+ selected = self.benchmarks
34
+ if filters and "benchmarks" in filters:
35
+ selected = [b for b in selected if b in filters["benchmarks"]]
36
+ return [Task(
37
+ name=b, language="java",
38
+ run_command=["java", "-jar", str(self.jar_path), b, "-r", str(self.repetitions)],
39
+ variant="default",
40
+ metadata={"suite": "renaissance", "benchmark": b, "repetitions": self.repetitions}
41
+ ) for b in selected]
42
+
43
+ def build(self, task: Task) -> Task:
44
+ return task
45
+
46
+ @property
47
+ def default_timeout(self) -> int:
48
+ return 900
@@ -5,7 +5,7 @@ A comprehensive energy measurement and code optimization tool for developers
5
5
  and researchers who need precise, fine-grained energy consumption analysis.
6
6
  """
7
7
 
8
- __version__ = "0.3.1"
8
+ __version__ = "0.3.2"
9
9
  __author__ = "Saurabhsingh Rajput"
10
10
  __email__ = "saurabh@dal.ca"
11
11
  __description__ = "Energy-aware software development tool"
@@ -2325,11 +2325,30 @@ def run_command(
2325
2325
  "budget_exceeded": budget is not None and e_stats.mean > budget
2326
2326
  }, indent=2))
2327
2327
  else:
2328
+ # Coefficient of variation: signal-to-noise indicator
2329
+ cv = (e_stats.std / e_stats.mean * 100) if e_stats.mean > 0 else 0
2330
+ ci_width = e_stats.ci95_upper - e_stats.ci95_lower
2331
+ ci_pct = (ci_width / e_stats.mean * 100) if e_stats.mean > 0 else 0
2332
+
2333
+ # Color-code by measurement quality
2334
+ if cv < 5:
2335
+ quality, color = "excellent", "green"
2336
+ elif cv < 15:
2337
+ quality, color = "good", "yellow"
2338
+ elif cv < 30:
2339
+ quality, color = "moderate", "bright_yellow"
2340
+ else:
2341
+ quality, color = "high noise", "red"
2342
+
2328
2343
  console.print(f"\n[bold]Energy:[/bold] {e_stats.mean:.4f} J +/- {e_stats.std:.4f} J")
2329
- console.print(f" Range: [{e_stats.min:.4f} .. {e_stats.max:.4f}] J, "
2330
- f"CI95: [{e_stats.ci95_lower:.4f}, {e_stats.ci95_upper:.4f}] J")
2344
+ console.print(f" Range: [{e_stats.min:.4f} .. {e_stats.max:.4f}] J")
2345
+ console.print(f" CI95: [{e_stats.ci95_lower:.4f}, {e_stats.ci95_upper:.4f}] J ({ci_pct:.1f}% width)")
2346
+ console.print(f" CV: [{color}]{cv:.1f}% ({quality})[/{color}]")
2331
2347
  console.print(f"[bold]Time:[/bold] {t_stats.mean:.4f} s +/- {t_stats.std:.4f} s")
2348
+ console.print(f"[bold]Power:[/bold] {e_stats.mean / t_stats.mean:.2f} W (avg)")
2332
2349
  console.print(f" Runs: {len(energies)}, Outliers removed: {e_stats.outliers_removed}")
2350
+ if cv > 20:
2351
+ console.print(f"[yellow] Tip: high variance -- try --repeat 30 or reduce background load[/yellow]")
2333
2352
  if budget is not None:
2334
2353
  if e_stats.mean > budget:
2335
2354
  console.print(f"[red]BUDGET EXCEEDED: {e_stats.mean:.4f}J > {budget}J[/red]")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codegreen
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Energy-aware software development tool for measuring and optimizing code energy consumption
5
5
  Author-email: Saurabhsingh Rajput <saurabh@dal.ca>
6
6
  Maintainer-email: Saurabhsingh Rajput <saurabh@dal.ca>
@@ -15,7 +15,9 @@ benchmark/results.py
15
15
  benchmark/suites/__init__.py
16
16
  benchmark/suites/base.py
17
17
  benchmark/suites/benchmarksgame.py
18
+ benchmark/suites/dacapo.py
18
19
  benchmark/suites/perfopt.py
20
+ benchmark/suites/renaissance.py
19
21
  benchmark/validation/__init__.py
20
22
  benchmark/validation/analysis.py
21
23
  benchmark/validation/experiments.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codegreen"
7
- version = "0.3.1"
7
+ version = "0.3.2"
8
8
  description = "Energy-aware software development tool for measuring and optimizing code energy consumption"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -184,7 +184,7 @@ SAMPLES = {
184
184
  "java": (".java", JAVA_SAMPLE, 3),
185
185
  "c": (".c", C_SAMPLE, 3),
186
186
  "cpp": (".cpp", CPP_SAMPLE, 3),
187
- "javascript": (".js", JS_SAMPLE, 2),
187
+ "javascript": (".js", JS_SAMPLE, 4),
188
188
  }
189
189
 
190
190
 
@@ -215,8 +215,7 @@ class TestInstrumentationPoints:
215
215
  ("java", ".java", JAVA_SAMPLE, 3),
216
216
  ("c", ".c", C_SAMPLE, 3),
217
217
  ("cpp", ".cpp", CPP_SAMPLE, 3),
218
- pytest.param("javascript", ".js", JS_SAMPLE, 2,
219
- marks=pytest.mark.xfail(reason="JavaScript instrumentation incomplete")),
218
+ pytest.param("javascript", ".js", JS_SAMPLE, 4),
220
219
  ])
221
220
  def test_finds_instrumentation_points(self, lang, ext, code, min_points):
222
221
  path = _write_sample(lang, code, ext)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes