{:highlights [{:id #uuid "644ed66c-547d-4fc4-86f7-6471409f2d89", :page 1, :position {:bounding {:x1 0, :y1 509.84375, :x2 630.8952026367188, :y2 1937.5, :width 1305.6, :height 1689.6}, :rects ({:x1 351.54583740234375, :y1 509.84375, :x2 630.8952026367188, :y2 533.34375, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 535.3515625, :x2 151.540283203125, :y2 558.8515625, :width 1305.6, :height 1689.6} {:x1 0, :y1 1918.5, :x2 0, :y2 1937.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text " lack of an official formal semantics."}, :properties {:color "purple"}} {:id #uuid "644ed678-8c79-42a6-a523-2cea2d8ef419", :page 1, :position {:bounding {:x1 0, :y1 535.3515625, :x2 627.294189453125, :y2 1969.5, :width 1305.6, :height 1689.6}, :rects ({:x1 519.3114624023438, :y1 535.3515625, :x2 627.294189453125, :y2 558.8515625, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 560.8515625, :x2 627.2883911132812, :y2 584.3515625, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 586.359375, :x2 301.814453125, :y2 609.859375, :width 1305.6, :height 1689.6} {:x1 0, :y1 1934.5, :x2 0, :y2 1953.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 1950.5, :x2 0, :y2 1969.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "approach to define an executable semantics targeting the development of optimizing compilers."}, :properties {:color "green"}} {:id #uuid "644ed708-429c-49c9-95d3-39140d8b08f2", :page 1, :position {:bounding {:x1 344.28607177734375, :y1 611.859375, :x2 442.00927734375, :y2 635.359375, :width 1305.6, :height 1689.6}, :rects ({:x1 344.28607177734375, :y1 611.859375, :x2 442.00927734375, :y2 635.359375, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "ype checks"}, :properties {:color "green"}} {:id #uuid "644ed70b-5f81-4cf4-998e-8b60e9879bf1", :page 1, :position {:bounding {:x1 452.85302734375, :y1 611.859375, :x2 531, :y2 635.359375, :width 1305.6, :height 1689.6}, :rects ({:x1 452.85302734375, :y1 611.859375, :x2 531, :y2 635.359375, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "primitive "}, :properties {:color "green"}} {:id #uuid "644ed70f-1d40-476a-8baf-2c841cf958ab", :page 1, :position {:bounding {:x1 0, :y1 611.859375, :x2 630.8919067382812, :y2 2001.5, :width 1305.6, :height 1689.6}, :rects ({:x1 540.7593994140625, :y1 611.859375, :x2 630.8919067382812, :y2 635.359375, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 637.3671875, :x2 271.83697509765625, :y2 660.8671875, :width 1305.6, :height 1689.6} {:x1 0, :y1 1982.5, :x2 0, :y2 2001.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "alues boxing and unboxing"}, :properties {:color "green"}} {:id #uuid "644ed716-2eb6-4108-8d99-95474df37342", :page 1, :position {:bounding {:x1 317.55718994140625, :y1 637.3671875, :x2 442.14630126953125, :y2 660.8671875, :width 1305.6, :height 1689.6}, :rects ({:x1 317.55718994140625, :y1 637.3671875, :x2 442.14630126953125, :y2 660.8671875, :width 1305.6, :height 1689.6}), :page 1}, :content {:text " function calls"}, :properties {:color "green"}} {:id #uuid "644ed738-190c-4729-b578-00c935ec543c", :page 1, :position {:bounding {:x1 0, :y1 662.875, :x2 630.8911743164062, :y2 2033.5, :width 1305.6, :height 1689.6}, :rects ({:x1 435.53125, :y1 662.875, :x2 630.8911743164062, :y2 686.375, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 688.375, :x2 396.146484375, :y2 711.875, :width 1305.6, :height 1689.6} {:x1 0, :y1 2014.5, :x2 0, :y2 2033.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "semPy, a partial evaluator of our executable semantics "}, :properties {:color "purple"}} {:id #uuid "644ed74b-53ad-44c3-ae5e-2f1801a6b0d3", :page 1, :position {:bounding {:x1 0, :y1 764.890625, :x2 627.2916259765625, :y2 2113.5, :width 1305.6, :height 1689.6}, :rects ({:x1 461.7727355957031, :y1 764.890625, :x2 627.290283203125, :y2 788.390625, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 790.390625, :x2 627.2916259765625, :y2 813.890625, :width 1305.6, :height 1689.6} {:x1 115.1953125, :y1 815.8984375, :x2 328.3880920410156, :y2 839.3984375, :width 1305.6, :height 1689.6} {:x1 0, :y1 2078.5, :x2 0, :y2 2097.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 2094.5, :x2 0, :y2 2113.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "On some tasks, Zipi displays performance competitive with that of state of art Python implementations"}, :properties {:color "purple"}} {:id #uuid "644ed772-c110-49c2-af3b-7cc5df1a8792", :page 1, :position {:bounding {:x1 0, :y1 426.953125, :x2 1190.4078369140625, :y2 2625.5, :width 1305.6, :height 1689.6}, :rects ({:x1 805.642578125, :y1 426.953125, :x2 1190.406005859375, :y2 450.453125, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 452.4609375, :x2 1190.4078369140625, :y2 475.9609375, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 477.9609375, :x2 1079.1153564453125, :y2 501.4609375, :width 1305.6, :height 1689.6} {:x1 0, :y1 2590.5, :x2 0, :y2 2609.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 2606.5, :x2 0, :y2 2625.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "While the syntax is formally specified, this is not the case of the semantics, leaving room for ambiguities and making it difficult to reason about Python"}, :properties {:color "purple"}} {:id #uuid "644ed797-342f-4736-9ef3-7c4e3b5db4b6", :page 1, :position {:bounding {:x1 751.02734375, :y1 579.9765625, :x2 1094.8753662109375, :y2 603.4765625, :width 1305.6, :height 1689.6}, :rects ({:x1 751.02734375, :y1 579.9765625, :x2 1094.8753662109375, :y2 603.4765625, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "CPython, the reference implementation"}, :properties {:color "purple"}} {:id #uuid "644ed7b1-91e2-4842-b8d9-938da5e84915", :page 1, :position {:bounding {:x1 837.8670043945312, :y1 809.5234375, :x2 1021.1603393554688, :y2 833.0234375, :width 1305.6, :height 1689.6}, :rects ({:x1 837.8670043945312, :y1 809.5234375, :x2 1021.1603393554688, :y2 833.0234375, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "RPython experiment"}, :properties {:color "green"}} {:id #uuid "644ed7c1-2f39-45db-a99c-a11a463fb4ad", :page 1, :position {:bounding {:x1 0, :y1 835.0234375, :x2 1192.7374267578125, :y2 2897.5, :width 1305.6, :height 1689.6}, :rects ({:x1 1075.6336669921875, :y1 835.0234375, :x2 1190.38818359375, :y2 858.5234375, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 860.53125, :x2 1192.7374267578125, :y2 884.03125, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 886.03125, :x2 1190.38671875, :y2 909.53125, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 911.5390625, :x2 857.1242065429688, :y2 935.0390625, :width 1305.6, :height 1689.6} {:x1 0, :y1 2846.5, :x2 0, :y2 2865.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 2862.5, :x2 0, :y2 2881.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 2878.5, :x2 0, :y2 2897.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text " development of an executable semantics, written in the Python syntax, that aims to automate part of the implementation of a Python optimizing compiler."}, :properties {:color "purple"}} {:id #uuid "644ed7e1-a4e8-4625-ba5e-e78640abda1d", :page 1, :position {:bounding {:x1 749.2779541015625, :y1 962.546875, :x2 1033.7733154296875, :y2 986.046875, :width 1305.6, :height 1689.6}, :rects ({:x1 749.2779541015625, :y1 962.546875, :x2 1033.7733154296875, :y2 986.046875, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "overview of Python’s semantics"}, :properties {:color "green"}} {:id #uuid "644ed7e8-7ea9-4d0f-b32c-8443ce2bfd91", :page 1, :position {:bounding {:x1 0, :y1 988.0546875, :x2 1190.794677734375, :y2 2961.5, :width 1305.6, :height 1689.6}, :rects ({:x1 763.9066772460938, :y1 988.0546875, :x2 1190.794677734375, :y2 1011.5546875, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 1013.5546875, :x2 923.3004150390625, :y2 1037.0546875, :width 1305.6, :height 1689.6} {:x1 0, :y1 2942.5, :x2 0, :y2 2961.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "executable semantics that describes the behavior of various Python operations."}, :properties {:color "green"}} {:id #uuid "644ed7f3-c2b3-4d30-8662-a0250b933bb8", :page 1, :position {:bounding {:x1 0, :y1 1039.0625, :x2 1193.987060546875, :y2 3025.5, :width 1305.6, :height 1689.6}, :rects ({:x1 694.8248291015625, :y1 1039.0625, :x2 1193.987060546875, :y2 1062.5625, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 1064.5625, :x2 1190.38671875, :y2 1088.0625, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 1090.0703125, :x2 1190.3924560546875, :y2 1113.5703125, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 1115.5703125, :x2 836.167724609375, :y2 1139.0703125, :width 1305.6, :height 1689.6} {:x1 0, :y1 2974.5, :x2 0, :y2 2993.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 2990.5, :x2 0, :y2 3009.5, :width 1305.6, :height 1689.6} {:x1 0, :y1 3006.5, :x2 0, :y2 3025.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "technique for partial evaluation of our executable semantics that focuses on removing redundant type checks, boxing and unboxing, and method lookups and invocations from Python operations."}, :properties {:color "green"}} {:id #uuid "644ed82f-68ac-4a06-8ea0-4e18cffa3bf6", :page 1, :position {:bounding {:x1 0, :y1 1115.5703125, :x2 1190.802978515625, :y2 3041.5, :width 1305.6, :height 1689.6}, :rects ({:x1 951.9225463867188, :y1 1115.5703125, :x2 1190.802978515625, :y2 1139.0703125, :width 1305.6, :height 1689.6} {:x1 678.296875, :y1 1141.078125, :x2 1114.9169921875, :y2 1164.578125, :width 1305.6, :height 1689.6} {:x1 0, :y1 3022.5, :x2 0, :y2 3041.5, :width 1305.6, :height 1689.6}), :page 1}, :content {:text "we show how we reused our executable semantics in the implementation of Zipi"}, :properties {:color "green"}} {:id #uuid "644ed8b2-7141-4433-9de8-8d2fed9350a6", :page 1, :position {:bounding {:x1 593.515625, :y1 1162.828125, :x2 873.04833984375, :y2 1183.828125, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 593.515625, :y1 1162.828125, :x2 873.04833984375, :y2 1183.828125, :width 1142.3999999999999, :height 1478.3999999999999}), :page 1}, :content {:text "Python’s semantics is highly dynamic"}, :properties {:color "purple"}} {:id #uuid "644ed8bd-bf6e-43e7-9224-6441ca9d6a37", :page 1, :position {:bounding {:x1 0, :y1 1229.7734375, :x2 1044.852294921875, :y2 3169.5, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 709.50732421875, :y1 1229.7734375, :x2 1044.852294921875, :y2 1250.7734375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 1252.09375, :x2 659.574951171875, :y2 1273.09375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3150.5, :x2 0, :y2 3169.5, :width 1142.3999999999999, :height 1478.3999999999999}), :page 1}, :content {:text "Python does not have an official formal semantics."}, :properties {:color "purple"}} {:id #uuid "644ed8ce-3fff-49a1-8e5c-d211c1596856", :page 1, :position {:bounding {:x1 0, :y1 1296.7265625, :x2 1041.712646484375, :y2 3217.5, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 827.6510009765625, :y1 1296.7265625, :x2 1041.712646484375, :y2 1317.7265625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 1319.0390625, :x2 660.0877075195312, :y2 1340.0390625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3198.5, :x2 0, :y2 3217.5, :width 1142.3999999999999, :height 1478.3999999999999}), :page 1}, :content {:text " we refer to the behavior of CPython"}, :properties {:color "purple"}} {:id #uuid "644edbe1-425d-4f9f-953f-70a1eee826c5", :page 2, :position {:bounding {:x1 555.3038330078125, :y1 226.7611083984375, :x2 626.1943969726562, :y2 252.07223510742188, :width 1387.2, :height 1795.2}, :rects ({:x1 555.3038330078125, :y1 226.7611083984375, :x2 626.1943969726562, :y2 252.07223510742188, :width 1387.2, :height 1795.2}), :page 2}, :content {:text "identity"}, :properties {:color "green"}} {:id #uuid "644edbe4-8fcb-46c2-8f5f-d6b37e62d9bf", :page 2, :position {:bounding {:x1 595.6198120117188, :y1 280.9604187011719, :x2 645.05908203125, :y2 306.27154541015625, :width 1387.2, :height 1795.2}, :rects ({:x1 595.6198120117188, :y1 280.9604187011719, :x2 645.05908203125, :y2 306.27154541015625, :width 1387.2, :height 1795.2}), :page 2}, :content {:text "value"}, :properties {:color "green"}} {:id #uuid "644edc32-9694-427c-b824-203f2500c993", :page 2, :position {:bounding {:x1 0, :y1 319.63543701171875, :x2 588.1430053710938, :y2 1905.666748046875, :width 1224, :height 1584}, :rects ({:x1 204.40806579589844, :y1 319.63543701171875, :x2 588.1430053710938, :y2 341.96875, :width 1224, :height 1584} {:x1 108, :y1 343.546875, :x2 163.78817749023438, :y2 365.8802185058594, :width 1224, :height 1584} {:x1 0, :y1 1886.3333740234375, :x2 0, :y2 1905.666748046875, :width 1224, :height 1584}), :page 2}, :content {:text "type determines the operations allowed on the object. "}, :properties {:color "green"}} {:id #uuid "644edc47-bfd5-47d1-9615-9d964a0fc4eb", :page 2, :position {:bounding {:x1 0, :y1 391.36981201171875, :x2 590.3543548583984, :y2 1969.666748046875, :width 1224, :height 1584}, :rects ({:x1 253.5493621826172, :y1 391.36981201171875, :x2 588.1699676513672, :y2 413.703125, :width 1224, :height 1584} {:x1 107.26042175292969, :y1 415.27606201171875, :x2 590.3543548583984, :y2 437.609375, :width 1224, :height 1584} {:x1 108, :y1 439.1875, :x2 438.3725280761719, :y2 461.5208435058594, :width 1224, :height 1584} {:x1 0, :y1 1934.3333740234375, :x2 0, :y2 1953.666748046875, :width 1224, :height 1584} {:x1 0, :y1 1950.3333740234375, :x2 0, :y2 1969.666748046875, :width 1224, :height 1584}), :page 2}, :content {:text "However, this is not possible for objects whose type is a built-in type such as booleans, floats, integers, strings, lists, tuples, sets and dictionaries"}, :properties {:color "green"}} {:id #uuid "644edc50-0c11-42fa-a519-2c0a86cb13c7", :page 2, :position {:bounding {:x1 127.921875, :y1 463.0989685058594, :x2 498.6274108886719, :y2 485.43231201171875, :width 1224, :height 1584}, :rects ({:x1 127.921875, :y1 463.0989685058594, :x2 498.6274108886719, :y2 485.43231201171875, :width 1224, :height 1584}), :page 2}, :content {:text "All values in a Python program are objects."}, :properties {:color "green"}} {:id #uuid "644fdde3-026c-4d9e-8491-9287b192d97e", :page 2, :position {:bounding {:x1 0, :y1 790.3125, :x2 1041.6783447265625, :y2 3025.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 784.8222045898438, :y1 790.3125, :x2 1041.65185546875, :y2 811.3125, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 812.6302185058594, :x2 1041.6783447265625, :y2 833.6302185058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 834.9427185058594, :x2 1040.33251953125, :y2 855.9427185058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2990.33349609375, :x2 0, :y2 3009.666748046875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3006.33349609375, :x2 0, :y2 3025.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 2}, :content {:text "The expression type(x).__add__ first looks for __add__ on type(x) itself. If no such method is found, it is looked up recursively on the parents of type(x)"}, :properties {:color "green"}} {:id #uuid "644fddef-928d-4d60-889a-275563a5e3b0", :page 2, :position {:bounding {:x1 593.515625, :y1 924.2135620117188, :x2 819.958251953125, :y2 945.2135620117188, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 593.515625, :y1 924.2135620117188, :x2 819.958251953125, :y2 945.2135620117188, :width 1142.3999999999999, :height 1478.3999999999999}), :page 2}, :content {:text "method resolution order (MRO"}, :properties {:color "green"}} {:id #uuid "644fde76-2be1-4d63-8c9f-6b38110e595d", :page 2, :position {:bounding {:x1 0, :y1 1035.7916717529297, :x2 1043.8173217773438, :y2 3201.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 902.6266479492188, :y1 1035.7916717529297, :x2 1041.815185546875, :y2 1056.7916717529297, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 1058.109375, :x2 1043.8173217773438, :y2 1079.109375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 1080.4270935058594, :x2 839.96044921875, :y2 1101.4270935058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3166.33349609375, :x2 0, :y2 3185.666748046875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3182.33349609375, :x2 0, :y2 3201.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 2}, :content {:text "The values of their attributes may be updated, new attributes may be introduced, or existing ones may be removed"}, :properties {:color "green"}} {:id #uuid "644fde84-dc3e-4011-bcb4-53ed1ec50971", :page 2, :position {:bounding {:x1 0, :y1 1147.375, :x2 1041.7553100585938, :y2 3265.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 612.109375, :y1 1147.375, :x2 1041.7553100585938, :y2 1168.375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 1169.6927185058594, :x2 743.0338745117188, :y2 1190.6927185058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3246.33349609375, :x2 0, :y2 3265.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 2}, :content {:text "An important exception is that attributes of all built-in types are read-only"}, :properties {:color "green"}} {:id #uuid "644fde97-7df2-4cd3-be39-61207bf1012b", :page 2, :position {:bounding {:x1 593.515625, :y1 1214.3229370117188, :x2 1044.4176025390625, :y2 1235.3229370117188, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 593.515625, :y1 1214.3229370117188, :x2 1044.4176025390625, :y2 1235.3229370117188, :width 1142.3999999999999, :height 1478.3999999999999}), :page 2}, :content {:text "Immutability of built-in types is part of Python’s semantics."}, :properties {:color "green"}} {:id #uuid "644fdfa2-cf9f-4cf7-8a6c-3c18dfcfca98", :page 2, :position {:bounding {:x1 0, :y1 1296.890625, :x2 1044.9080810546875, :y2 3345.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 593.515625, :y1 1296.890625, :x2 1044.9080810546875, :y2 1317.890625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.515625, :y1 1319.2083435058594, :x2 931.1149291992188, :y2 1340.2083435058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3326.33349609375, :x2 0, :y2 3345.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 2}, :content {:text "Python incorporates features such as dynamic typing, dynamic binding, and dynamic code evaluation."}, :properties {:color "green"}} {:id #uuid "644fe2a1-785f-467f-a592-d08d056273f8", :page 3, :position {:bounding {:x1 0, :y1 203.39584350585938, :x2 548.9083251953125, :y2 1841.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 119.39583587646484, :y1 203.39584350585938, :x2 548.9083251953125, :y2 224.39584350585938, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 100.796875, :y1 225.70834350585938, :x2 155.86651611328125, :y2 246.70834350585938, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 1822.3333740234375, :x2 0, :y2 1841.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "Python supports modular programming through module objects"}, :properties {:color "green"}} {:id #uuid "644fe2b7-09a9-4c4d-9acd-b237e76f9e6e", :page 3, :position {:bounding {:x1 0, :y1 314.9739685058594, :x2 552.1912841796875, :y2 1937.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 452.12957763671875, :y1 314.9739685058594, :x2 552.1912841796875, :y2 335.9739685058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 100.796875, :y1 337.29168701171875, :x2 549.0374145507812, :y2 358.29168701171875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 100.796875, :y1 359.609375, :x2 202.58580017089844, :y2 380.609375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 1902.33349609375, :x2 0, :y2 1921.666748046875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 1918.33349609375, :x2 0, :y2 1937.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "any modifications applied to a module’s attributes is reflected on its global environment."}, :properties {:color "green"}} {:id #uuid "644fe32c-2c30-4f7b-a62b-6e740481f75a", :page 3, :position {:bounding {:x1 0, :y1 477.88543701171875, :x2 1044.9090118408203, :y2 2849.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 941.4032592773438, :y1 477.88543701171875, :x2 1040.8266906738281, :y2 498.88543701171875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5156402587891, :y1 500.203125, :x2 1044.9090118408203, :y2 521.203125, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5156402587891, :y1 522.515625, :x2 1041.6084289550781, :y2 543.515625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5156402587891, :y1 547.7448120117188, :x2 731.9284057617188, :y2 566.7448120117188, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2798.33349609375, :x2 0, :y2 2817.666748046875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2814.33349609375, :x2 0, :y2 2833.666748046875, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2830.33349609375, :x2 0, :y2 2849.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text " An operation as simple as subtracting an integer and a floating point number requires two method searches in the MRO of int and float respectively"}, :properties {:color "green"}} {:id #uuid "644fe360-695a-4a9b-8f4f-44a1e790e943", :page 3, :position {:bounding {:x1 0, :y1 790.3125, :x2 1041.6108703613281, :y2 3041.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 643.8892974853516, :y1 790.3125, :x2 1041.6108703613281, :y2 811.3125, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5156402587891, :y1 812.6302185058594, :x2 789.8420715332031, :y2 833.6302185058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3022.33349609375, :x2 0, :y2 3041.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "This procedure, known as boxing and unboxing, leads to additional overhead [5]"}, :properties {:color "green"}} {:id #uuid "644fe36e-583b-4982-b50a-3efa431d3d0b", :page 3, :position {:bounding {:x1 0, :y1 917.515625, :x2 1044.9065856933594, :y2 3089.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 759.2085876464844, :y1 917.515625, :x2 1044.9065856933594, :y2 938.515625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5156402587891, :y1 939.8333435058594, :x2 863.0601348876953, :y2 960.8333435058594, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3070.33349609375, :x2 0, :y2 3089.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "xecutable semantics aimed at developing optimizing Python compilers"}, :properties {:color "green"}} {:id #uuid "644fe378-f02f-4626-bb6b-1b797d6c12b3", :page 3, :position {:bounding {:x1 0, :y1 962.1510620117188, :x2 1041.7571716308594, :y2 3121.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 717.1788024902344, :y1 962.1510620117188, :x2 1041.7571716308594, :y2 983.1510620117188, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5156402587891, :y1 984.4635620117188, :x2 660.4688110351562, :y2 1005.4635620117188, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 3102.33349609375, :x2 0, :y2 3121.666748046875, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "1) automate the implementation of a Python compiler,"}, :properties {:color "yellow"}} {:id #uuid "644fe3a1-93fb-427e-aec2-147425967c89", :page 3, :position {:bounding {:x1 690.2107086181641, :y1 984.4635620117188, :x2 1041.7570343017578, :y2 1005.4635620117188, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 690.2107086181641, :y1 984.4635620117188, :x2 1041.7570343017578, :y2 1005.4635620117188, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "be easily reusable by existing Python compilers"}, :properties {:color "green"}} {:id #uuid "644fe3ad-606d-4a0f-b985-8134947edfcd", :page 3, :position {:bounding {:x1 653.5902709960938, :y1 1006.78125, :x2 910.3463745117188, :y2 1027.78125, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 653.5902709960938, :y1 1006.78125, :x2 910.3463745117188, :y2 1027.78125, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "yield performant implementations"}, :properties {:color "yellow"}} {:id #uuid "644fe5dc-a608-41ec-90ac-479206bfdf0c", :page 3, :position {:bounding {:x1 866.4790954589844, :y1 1207.6302490234375, :x2 940.6032104492188, :y2 1228.6302490234375, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 866.4790954589844, :y1 1207.6302490234375, :x2 940.6032104492188, :y2 1228.6302490234375, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "RPython "}, :properties {:color "yellow"}} {:id #uuid "644fe60f-0f34-42c5-a2bc-2cb6ac4060f0", :page 3, :position {:bounding {:x1 691.2206420898438, :y1 1252.2604370117188, :x2 899.1989135742188, :y2 1273.2604370117188, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 691.2206420898438, :y1 1252.2604370117188, :x2 899.1989135742188, :y2 1273.2604370117188, :width 1142.3999999999999, :height 1478.3999999999999}), :page 3}, :content {:text "It differs in that we instead"}, :properties {:color "yellow"}} {:id #uuid "644fe635-ccc4-4ded-9720-af2852297010", :page 4, :position {:bounding {:x1 167.5104217529297, :y1 303.8177185058594, :x2 379.2359619140625, :y2 324.8177185058594, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 167.5104217529297, :y1 303.8177185058594, :x2 379.2359619140625, :y2 324.8177185058594, :width 1142.3999999999999, :height 1478.3999999999999}), :page 4}, :content {:text "compiler intrinsics statement"}, :properties {:color "yellow"}} {:id #uuid "644fe6e2-b255-472c-ae84-a88032fe6835", :page 4, :position {:bounding {:x1 0, :y1 356.1979179382324, :x2 470.77852630615234, :y2 1985.6666679382324, :width 979.1999999999999, :height 1267.1999999999998}, :rects ({:x1 159.44737243652344, :y1 356.1979179382324, :x2 469.61705017089844, :y2 373.8646049499512, :width 979.1999999999999, :height 1267.1999999999998} {:x1 86.39583587646484, :y1 375.3281364440918, :x2 470.77852630615234, :y2 392.9947929382324, :width 979.1999999999999, :height 1267.1999999999998} {:x1 86.39583587646484, :y1 394.4583549499512, :x2 305.5602035522461, :y2 412.1250114440918, :width 979.1999999999999, :height 1267.1999999999998} {:x1 0, :y1 1950.3334159851074, :x2 0, :y2 1969.6666679382324, :width 979.1999999999999, :height 1267.1999999999998} {:x1 0, :y1 1966.3334159851074, :x2 0, :y2 1985.6666679382324, :width 979.1999999999999, :height 1267.1999999999998}), :page 4}, :content {:text "Intrinsics imported with the compiler intrinsics statement are static, they cannot be shadowed by another assignment or assigned to a variab"}, :properties {:color "green"}} {:id #uuid "644fe729-e3a8-4f0b-a916-b478f3a6370f", :page 4, :position {:bounding {:x1 314.186279296875, :y1 681.3802337646484, :x2 367.9613037109375, :y2 699.0469207763672, :width 979.1999999999999, :height 1267.1999999999998}, :rects ({:x1 314.186279296875, :y1 681.3802337646484, :x2 367.9613037109375, :y2 699.0469207763672, :width 979.1999999999999, :height 1267.1999999999998}), :page 4}, :content {:text "addition"}, :properties {:color "green"}} {:id #uuid "644fe73b-7ce7-4159-8c24-735bba4f43be", :page 4, :position {:bounding {:x1 0, :y1 700.5052490234375, :x2 470.45957946777344, :y2 2257.6666870117188, :width 979.1999999999999, :height 1267.1999999999998}, :rects ({:x1 85.91667175292969, :y1 700.5052490234375, :x2 470.45957946777344, :y2 718.1719055175781, :width 979.1999999999999, :height 1267.1999999999998} {:x1 86.39583587646484, :y1 719.6354370117188, :x2 344.3099899291992, :y2 737.3021240234375, :width 979.1999999999999, :height 1267.1999999999998} {:x1 0, :y1 2238.3334350585938, :x2 0, :y2 2257.6666870117188, :width 979.1999999999999, :height 1267.1999999999998}), :page 4}, :content {:text "These examples effectively illustrate why seemingly simple operations incur a significant overhead."}, :properties {:color "green"}} {:id #uuid "644feb0a-3015-4266-907b-40e6abd43436", :page 2, :position {:bounding {:x1 508, :y1 104, :x2 943, :y2 575, :width 1019.9999999999999, :height 1319.9999999999998}, :rects (), :page 2}, :content {:text "[:span]", :image 1682959114081}, :properties {:color "green"}} {:id #uuid "6450131f-fb3a-445f-a406-c06df5147bea", :page 4, :position {:bounding {:x1 100.2265625, :y1 813.1953125, :x2 192.25677490234375, :y2 829.6953125, :width 920.0000000000001, :height 1190.5882352941178}, :rects ({:x1 100.2265625, :y1 813.1953125, :x2 192.25677490234375, :y2 829.6953125, :width 920.0000000000001, :height 1190.5882352941178}), :page 4}, :content {:text "class_getattr"}, :properties {:color "green"}} {:id #uuid "64501321-fece-4916-90c2-f9dd0f7cb56c", :page 4, :position {:bounding {:x1 222.1484375, :y1 831.171875, :x2 264.6275939941406, :y2 846.171875, :width 920.0000000000001, :height 1190.5882352941178}, :rects ({:x1 222.1484375, :y1 831.171875, :x2 264.6275939941406, :y2 846.171875, :width 920.0000000000001, :height 1190.5882352941178}), :page 4}, :content {:text "absent"}, :properties {:color "green"}} {:id #uuid "64501669-7f6e-4d90-852a-4f0f2b0f3cc0", :page 4, :position {:bounding {:x1 316.25, :y1 1121.1015625, :x2 368.989990234375, :y2 1140.1015625, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 316.25, :y1 1121.1015625, :x2 368.989990234375, :y2 1140.1015625, :width 1142.3999999999999, :height 1478.3999999999999}), :page 4}, :content {:text "normal"}, :properties {:color "green"}} {:id #uuid "6450166b-efb7-48b3-9fcd-91e1c789d9b1", :page 4, :position {:bounding {:x1 469.796875, :y1 1121.1015625, :x2 548.9102783203125, :y2 1140.1015625, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 469.796875, :y1 1121.1015625, :x2 548.9102783203125, :y2 1140.1015625, :width 1142.3999999999999, :height 1478.3999999999999}), :page 4}, :content {:text "reflected"}, :properties {:color "green"}} {:id #uuid "64501688-27cb-46fb-8e64-bb7d280a6b77", :page 4, :position {:bounding {:x1 239.25, :y1 1296.7265625, :x2 327.8825378417969, :y2 1317.7265625, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 239.25, :y1 1296.7265625, :x2 327.8825378417969, :y2 1317.7265625, :width 1142.3999999999999, :height 1478.3999999999999}), :page 4}, :content {:text "a semantics"}, :properties {:color "green"}} {:id #uuid "6450168b-d80b-4701-a50a-b0981968b34b", :page 4, :position {:bounding {:x1 387.734375, :y1 1296.7265625, :x2 491.3101806640625, :y2 1317.7265625, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 387.734375, :y1 1296.7265625, :x2 491.3101806640625, :y2 1317.7265625, :width 1142.3999999999999, :height 1478.3999999999999}), :page 4}, :content {:text "semantics of "}, :properties {:color "green"}} {:id #uuid "64501799-4f47-4d73-af89-3a736156bf15", :page 12, :position {:bounding {:x1 0, :y1 1058.5078125, :x2 492.88714599609375, :y2 2017.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 411.41107177734375, :y1 1058.5078125, :x2 489.80438232421875, :y2 1077.0078125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90, :y1 1078.4296875, :x2 492.88714599609375, :y2 1096.9296875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90, :y1 1098.3515625, :x2 408.4648742675781, :y2 1116.8515625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 1982.5, :x2 0, :y2 2001.5, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 1998.5, :x2 0, :y2 2017.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 12}, :content {:text " This allows us to define the notion of behavior, a specialization of an operator for a given combination of built-in types. "}, :properties {:color "green"}} {:id #uuid "645017bf-849d-4665-a879-91a3aa34ab76", :page 12, :position {:bounding {:x1 0, :y1 929.109375, :x2 932.8076782226562, :y2 2193.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 715.2825927734375, :y1 929.109375, :x2 932.8076782226562, :y2 947.609375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 949.0390625, :x2 930.0107421875, :y2 967.5390625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 968.9609375, :x2 562.9948120117188, :y2 987.4609375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2158.5, :x2 0, :y2 2177.5, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2174.5, :x2 0, :y2 2193.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 12}, :content {:text "Zipi compiles behaviors and dispatches operations to their corresponding behaviors at run time."}, :properties {:color "purple"}} {:id #uuid "645017c6-757f-40a8-8461-4f7fb63479dd", :page 12, :position {:bounding {:x1 637.4479370117188, :y1 988.890625, :x2 674.203125, :y2 1007.390625, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 637.4479370117188, :y1 988.890625, :x2 674.203125, :y2 1007.390625, :width 1019.9999999999999, :height 1319.9999999999998}), :page 12}, :content {:text "PyPy"}, :properties {:color "yellow"}} {:id #uuid "645017ec-07e4-4eb9-a940-cb54f7c71008", :page 12, :position {:bounding {:x1 0, :y1 1108.4375, :x2 930.3222045898438, :y2 2337.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 610.3228759765625, :y1 1108.4375, :x2 930.3222045898438, :y2 1126.9375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 1128.3671875, :x2 930.0011596679688, :y2 1146.8671875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 1148.2890625, :x2 683.6935424804688, :y2 1166.7890625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2302.5, :x2 0, :y2 2321.5, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2318.5, :x2 0, :y2 2337.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 12}, :content {:text "It appears to us that they would be well suited for CPython, as they specifically address the known overhead of this implementation"}, :properties {:color "green"}} {:id #uuid "64501b49-37e7-43f6-a9a8-6cd9548c5831", :page 7, :position {:bounding {:x1 0, :y1 146.921875, :x2 930.0010986328125, :y2 2577.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 529.421875, :y1 146.921875, :x2 929.9951782226562, :y2 165.421875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 166.84375, :x2 930.0010986328125, :y2 185.34375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 186.7734375, :x2 845.8085327148438, :y2 205.2734375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2542.5, :x2 0, :y2 2561.5, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2558.5, :x2 0, :y2 2577.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 7}, :content {:text "This section presents semPy3, a Python tool for generating behaviors by removing redundant type checks, boxing and unboxing, and method calls whenever possible"}, :properties {:color "green"}} {:id #uuid "64501b57-a394-4c43-9dd4-f302dd17c5d3", :page 7, :position {:bounding {:x1 0, :y1 206.6953125, :x2 932.8009643554688, :y2 2609.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 546.5234375, :y1 206.6953125, :x2 932.8009643554688, :y2 225.1953125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 226.625, :x2 697.0294189453125, :y2 245.125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2590.5, :x2 0, :y2 2609.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 7}, :content {:text "semPy is a Python partial evaluator supporting the compiler intrinsics statement."}, :properties {:color "yellow"}} {:id #uuid "64501b77-d4f6-400a-869d-8c88ca84fe5b", :page 7, :position {:bounding {:x1 0, :y1 266.4765625, :x2 930.0031127929688, :y2 2657.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 593.5814208984375, :y1 266.4765625, :x2 930.0031127929688, :y2 284.9765625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 286.3984375, :x2 754.0936889648438, :y2 304.8984375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2638.5, :x2 0, :y2 2657.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 7}, :content {:text " It outputs a specialization of the semantics given that context, which is a behavior."}, :properties {:color "purple"}} {:id #uuid "64501b97-fc3f-4ea7-ac34-bec5ce768cb9", :page 7, :position {:bounding {:x1 0, :y1 328.34375, :x2 932.8019409179688, :y2 2721.5, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 529.921875, :y1 328.34375, :x2 932.8019409179688, :y2 346.84375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 346.171875, :x2 930.0035400390625, :y2 364.671875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.921875, :y1 366.1015625, :x2 758.455322265625, :y2 384.6015625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2686.5, :x2 0, :y2 2705.5, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2702.5, :x2 0, :y2 2721.5, :width 1019.9999999999999, :height 1319.9999999999998}), :page 7}, :content {:text "add_intX_floatY was generated from the add semantics (Figure 3) in a context where the left-hand operand is an int and the right-hand operand is a float"}, :properties {:color "blue"}} {:id #uuid "6451854d-ddd6-4638-b46a-065d44249997", :page 11, :position {:bounding {:x1 0, :y1 474.015625, :x2 410.3178176879883, :y2 2113.5, :width 854, :height 1105.1764705882351}, :rects ({:x1 126.93659210205078, :y1 474.015625, :x2 410.3178176879883, :y2 489.515625, :width 854, :height 1105.1764705882351} {:x1 75.3515625, :y1 490.6953125, :x2 408.8498229980469, :y2 506.1953125, :width 854, :height 1105.1764705882351} {:x1 0, :y1 2094.5, :x2 0, :y2 2113.5, :width 854, :height 1105.1764705882351}), :page 11}, :content {:text "we configured our benchmarks to only measure the run time performance of the program after initialization"}, :properties {:color "green"}} {:id #uuid "6451856b-a483-4390-8b4a-5a1513822cd2", :page 11, :position {:bounding {:x1 140.91433715820312, :y1 607.4765625, :x2 156.0430908203125, :y2 622.9765625, :width 854, :height 1105.1764705882351}, :rects ({:x1 140.91433715820312, :y1 607.4765625, :x2 156.0430908203125, :y2 622.9765625, :width 854, :height 1105.1764705882351}), :page 11}, :content {:text "or "}, :properties {:color "red"}} {:id #uuid "645185b1-4388-4327-b89f-dc3b7c9c9f50", :page 11, :position {:bounding {:x1 0, :y1 902.7578125, :x2 410.58984375, :y2 2497.5, :width 854, :height 1105.1764705882351}, :rects ({:x1 228.85504150390625, :y1 902.7578125, :x2 410.58984375, :y2 918.2578125, :width 854, :height 1105.1764705882351} {:x1 75.3515625, :y1 919.4375, :x2 149.31373596191406, :y2 934.9375, :width 854, :height 1105.1764705882351} {:x1 0, :y1 2478.5, :x2 0, :y2 2497.5, :width 854, :height 1105.1764705882351}), :page 11}, :content {:text " operations suffering from poor performance."}, :properties {:color "green"}} {:id #uuid "645185be-c478-4062-b66d-62a1b30f8623", :page 11, :position {:bounding {:x1 0, :y1 919.4375, :x2 410.3141174316406, :y2 2529.5, :width 854, :height 1105.1764705882351}, :rects ({:x1 152.56629943847656, :y1 919.4375, :x2 410.08985900878906, :y2 934.9375, :width 854, :height 1105.1764705882351} {:x1 75.3515625, :y1 936.125, :x2 410.3141174316406, :y2 951.625, :width 854, :height 1105.1764705882351} {:x1 75.3515625, :y1 952.8046875, :x2 128.43418884277344, :y2 968.3046875, :width 854, :height 1105.1764705882351} {:x1 0, :y1 2494.5, :x2 0, :y2 2513.5, :width 854, :height 1105.1764705882351} {:x1 0, :y1 2510.5, :x2 0, :y2 2529.5, :width 854, :height 1105.1764705882351}), :page 11}, :content {:text "The operation being evaluated is wrapped in a loop to reach a measurable time on the order of one second on CPython."}, :properties {:color "green"}} {:id #uuid "6452262b-c2a5-45e9-936e-b1c6aafb4a04", :page 1, :position {:bounding {:x1 0, :y1 298.53125, :x2 490.0767822265625, :y2 1857.3333740234375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 241.079345703125, :y1 298.53125, :x2 490.0767822265625, :y2 317.19793701171875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90, :y1 318.44793701171875, :x2 237.90380859375, :y2 337.1145935058594, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 1838.666748046875, :x2 0, :y2 1857.3333740234375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 1}, :content {:text "uncompetitive in comparison to static languages such as C"}, :properties {:color "green"}} {:id #uuid "645228f1-38c2-4ae0-b579-823a46cf2b28", :page 1, :position {:bounding {:x1 0, :y1 452.94793701171875, :x2 932.809326171875, :y2 2721.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 863.6915283203125, :y1 452.94793701171875, :x2 929.707763671875, :y2 471.6145935058594, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.9166870117188, :y1 472.875, :x2 932.809326171875, :y2 491.54168701171875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.9166870117188, :y1 492.8020935058594, :x2 588.55517578125, :y2 511.46875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2686.666748046875, :x2 0, :y2 2705.33349609375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2702.666748046875, :x2 0, :y2 2721.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 1}, :content {:text "The effort spent getting the semantics right leaves little time for optimization"}, :properties {:color "blue"}} {:id #uuid "64522a40-df2b-40c5-ac97-11a12e2612b1", :page 2, :position {:bounding {:x1 0, :y1 545.09375, :x2 490.07373046875, :y2 2129.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 162.76766967773438, :y1 545.09375, :x2 490.07373046875, :y2 563.760498046875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90, :y1 565.0208740234375, :x2 149.5, :y2 583.6875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2110.666748046875, :x2 0, :y2 2129.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 2}, :content {:text " methods governing operations are called magic methods."}, :properties {:color "purple"}} {:id #uuid "64522aaa-e11f-43f2-b5de-ee3550d58fea", :page 2, :position {:bounding {:x1 0, :y1 883.822998046875, :x2 491.90863037109375, :y2 2417.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 106.60417175292969, :y1 883.822998046875, :x2 491.375, :y2 902.4896240234375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90, :y1 903.75, :x2 491.90863037109375, :y2 922.416748046875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 88.11458587646484, :y1 923.6771240234375, :x2 323.69281005859375, :y2 942.34375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2382.666748046875, :x2 0, :y2 2401.33349609375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2398.666748046875, :x2 0, :y2 2417.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 2}, :content {:text "The only operators that cannot be overloaded are the “is” operator which compares objects by identity, and the “and”,“or” and “not” boolean operators"}, :properties {:color "purple"}} {:id #uuid "64522e0a-730b-4302-97c2-cb1bd4b3acca", :page 3, :position {:bounding {:x1 0, :y1 958.5416870117188, :x2 930.0036010742188, :y2 3217.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 529.9166870117188, :y1 958.5416870117188, :x2 930.0036010742188, :y2 977.2083740234375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.9166870117188, :y1 978.46875, :x2 929.9918823242188, :y2 997.1354370117188, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.9166870117188, :y1 998.3958740234375, :x2 798.53564453125, :y2 1017.0625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 3182.666748046875, :x2 0, :y2 3201.33349609375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 3198.666748046875, :x2 0, :y2 3217.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 3}, :content {:text "automate this process to accelerate development, including that of existing compilers, independently of the language and tools chosen for its implementation."}, :properties {:color "purple"}} {:id #uuid "64522e83-2ecd-4c6a-bacf-e604cfeb447d", :page 3, :position {:bounding {:x1 0, :y1 1038.2396240234375, :x2 929.9926147460938, :y2 3265.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 605.9227294921875, :y1 1038.2396240234375, :x2 929.9926147460938, :y2 1056.90625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 529.9166870117188, :y1 1058.1666870117188, :x2 786.231201171875, :y2 1076.8333740234375, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 3246.666748046875, :x2 0, :y2 3265.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 3}, :content {:text "interface with the semantics by using the parsing infrastructure of an existing compiler."}, :properties {:color "yellow"}} {:id #uuid "64522ec4-6715-4632-9a37-71aef6cd8a67", :page 4, :position {:bounding {:x1 0, :y1 161.53125, :x2 492.889892578125, :y2 1825.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 458.8807067871094, :y1 161.53125, :x2 492.889892578125, :y2 180.19793701171875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90, :y1 181.4583740234375, :x2 448.1468505859375, :y2 200.125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 1806.666748046875, :x2 0, :y2 1825.33349609375, :width 1019.9999999999999, :height 1319.9999999999998}), :page 4}, :content {:text " optimized versions of various operators in sections 5 and"}, :properties {:color "green"}} {:id #uuid "645232f1-27ff-4c60-a8aa-e9ad76f7eff9", :page 6, :position {:bounding {:x1 492.8802185058594, :y1 731.3802185058594, :x2 572.2400207519531, :y2 751.046875, :width 897.6, :height 1161.6000000000001}, :rects ({:x1 492.8802185058594, :y1 731.3802185058594, :x2 572.2400207519531, :y2 751.046875, :width 897.6, :height 1161.6000000000001}), :page 6}, :content {:text "Behaviors"}, :properties {:color "green"}} {:id #uuid "6452331a-4d1a-48c4-b3d9-7c0e01558c82", :page 6, :position {:bounding {:x1 0, :y1 756.0208435058594, :x2 818.3993835449219, :y2 3121.666748046875, :width 897.6, :height 1161.6000000000001}, :rects ({:x1 465.8177185058594, :y1 756.0208435058594, :x2 817.5972595214844, :y2 772.3541870117188, :width 897.6, :height 1161.6000000000001} {:x1 466.3333435058594, :y1 773.5573120117188, :x2 818.1517028808594, :y2 789.890625, :width 897.6, :height 1161.6000000000001} {:x1 465.79168701171875, :y1 791.0885620117188, :x2 818.3993835449219, :y2 807.421875, :width 897.6, :height 1161.6000000000001} {:x1 465.79168701171875, :y1 808.625, :x2 685.5549621582031, :y2 824.9583435058594, :width 897.6, :height 1161.6000000000001} {:x1 0, :y1 3070.33349609375, :x2 0, :y2 3089.666748046875, :width 897.6, :height 1161.6000000000001} {:x1 0, :y1 3086.33349609375, :x2 0, :y2 3105.666748046875, :width 897.6, :height 1161.6000000000001} {:x1 0, :y1 3102.33349609375, :x2 0, :y2 3121.666748046875, :width 897.6, :height 1161.6000000000001}), :page 6}, :content {:text "A compiler can implement arithmetic operators from the semantics defined in Section 3. Yet, by doing so in a naive way, that is calling each magic method, the implementation would likely offer poor performance."}, :properties {:color "green"}} {:id #uuid "64523401-621a-4d9c-af49-0bbc838d177b", :page 6, :position {:bounding {:x1 0, :y1 896.296875, :x2 818.3973083496094, :y2 3217.666748046875, :width 897.6, :height 1161.6000000000001}, :rects ({:x1 524.6785278320312, :y1 896.296875, :x2 818.3973083496094, :y2 912.6302185058594, :width 897.6, :height 1161.6000000000001} {:x1 466.3333435058594, :y1 913.828125, :x2 588.7554016113281, :y2 930.1614685058594, :width 897.6, :height 1161.6000000000001} {:x1 0, :y1 3198.33349609375, :x2 0, :y2 3217.666748046875, :width 897.6, :height 1161.6000000000001}), :page 6}, :content {:text "We exploit that fact to generate optimized versions of Python operators."}, :properties {:color "green"}} {:id #uuid "645270f9-9991-40aa-b8cf-42d909fc85fd", :page 7, :position {:bounding {:x1 0, :y1 638.0729370117188, :x2 1119.3712158203125, :y2 2961.33349609375, :width 1224, :height 1584}, :rects ({:x1 634.9479370117188, :y1 638.0729370117188, :x2 1116.5050048828125, :y2 660.0729370117188, :width 1224, :height 1584} {:x1 635.90625, :y1 661.9896240234375, :x2 1115.65478515625, :y2 683.9896240234375, :width 1224, :height 1584} {:x1 635.90625, :y1 685.8958740234375, :x2 1119.3712158203125, :y2 707.8958740234375, :width 1224, :height 1584} {:x1 635.90625, :y1 709.8125, :x2 1115.9981689453125, :y2 731.8125, :width 1224, :height 1584} {:x1 635.90625, :y1 736.8333740234375, :x2 1115.6387939453125, :y2 756.8333740234375, :width 1224, :height 1584} {:x1 635.90625, :y1 757.625, :x2 1115.992919921875, :y2 779.625, :width 1224, :height 1584} {:x1 635.90625, :y1 781.5416870117188, :x2 1115.9935302734375, :y2 803.5416870117188, :width 1224, :height 1584} {:x1 635.90625, :y1 805.4479370117188, :x2 1115.9898681640625, :y2 827.4479370117188, :width 1224, :height 1584} {:x1 635.90625, :y1 829.3646240234375, :x2 711.1507568359375, :y2 851.3646240234375, :width 1224, :height 1584} {:x1 0, :y1 2830.666748046875, :x2 0, :y2 2849.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2846.666748046875, :x2 0, :y2 2865.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2862.666748046875, :x2 0, :y2 2881.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2878.666748046875, :x2 0, :y2 2897.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2894.666748046875, :x2 0, :y2 2913.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2910.666748046875, :x2 0, :y2 2929.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2926.666748046875, :x2 0, :y2 2945.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2942.666748046875, :x2 0, :y2 2961.33349609375, :width 1224, :height 1584}), :page 7}, :content {:text "When a semantics or magic method is invoked, semPy systematically inlines the callee’s code at the call site. This removes magic method calls from semantics specializations. Magic methods are returned by invocations of the class_getattr intrinsic function. This function is always called on the arguments of a semantics, whose types are provided in the type context, so it is always possible to resolve which magic method is to be called, or if that method is absent."}, :properties {:color "yellow"}} {:id #uuid "64527140-4f7d-40d0-a58c-4db765477243", :page 9, :position {:bounding {:x1 322.25042724609375, :y1 627.1146240234375, :x2 554.510498046875, :y2 649.1146240234375, :width 1224, :height 1584}, :rects ({:x1 322.25042724609375, :y1 627.1146240234375, :x2 554.510498046875, :y2 649.1146240234375, :width 1224, :height 1584}), :page 9}, :content {:text "optimizing Python compiler."}, :properties {:color "purple"}} {:id #uuid "64527182-5134-4f53-9126-eb3069193e4f", :page 9, :position {:bounding {:x1 0, :y1 846.78125, :x2 588.4658203125, :y2 2145.33349609375, :width 1224, :height 1584}, :rects ({:x1 329.9693298339844, :y1 846.78125, :x2 588.0910034179688, :y2 868.78125, :width 1224, :height 1584} {:x1 108, :y1 870.6875, :x2 588.4658203125, :y2 892.6875, :width 1224, :height 1584} {:x1 108, :y1 894.6041870117188, :x2 486.82470703125, :y2 916.6041870117188, :width 1224, :height 1584} {:x1 0, :y1 2110.666748046875, :x2 0, :y2 2129.33349609375, :width 1224, :height 1584} {:x1 0, :y1 2126.666748046875, :x2 0, :y2 2145.33349609375, :width 1224, :height 1584}), :page 9}, :content {:text "Zipi compiles Python to Scheme code, which is then compiled to an executable using either the Bigloo [7] or Gambit [8] Scheme compilers"}, :properties {:color "yellow"}} {:id #uuid "6452738f-a8b3-42c8-bbe8-6887ded91ba9", :page 11, :position {:bounding {:x1 0, :y1 426.54168701171875, :x2 490.08201026916504, :y2 2017.3333129882812, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 295.22767066955566, :y1 426.54168701171875, :x2 490.08201026916504, :y2 445.20831298828125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90.00000190734863, :y1 446.45831298828125, :x2 490.07681465148926, :y2 465.125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90.00000190734863, :y1 466.38543701171875, :x2 346.47375679016113, :y2 485.05206298828125, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 1982.6668090820312, :x2 0, :y2 2001.3333129882812, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 1998.6668090820312, :x2 0, :y2 2017.3333129882812, :width 1019.9999999999999, :height 1319.9999999999998}), :page 11}, :content {:text "Performance was measured through microbenchmarks as well as regular benchmarks implementing well-known algorithms"}, :properties {:color "yellow"}} {:id #uuid "645273a0-f0c0-4759-ae0d-d9717fe0babb", :page 11, :position {:bounding {:x1 0, :y1 486.3125, :x2 490.07627296447754, :y2 2065.3333129882812, :width 1019.9999999999999, :height 1319.9999999999998}, :rects ({:x1 106.60416603088379, :y1 486.3125, :x2 490.07627296447754, :y2 504.97918701171875, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 89.41666603088379, :y1 506.23956298828125, :x2 489.8009433746338, :y2 524.90625, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 90.00000190734863, :y1 526.1666870117188, :x2 408.094820022583, :y2 544.8333129882812, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2030.6668090820312, :x2 0, :y2 2049.3333129882812, :width 1019.9999999999999, :height 1319.9999999999998} {:x1 0, :y1 2046.6668090820312, :x2 0, :y2 2065.3333129882812, :width 1019.9999999999999, :height 1319.9999999999998}), :page 11}, :content {:text "Zipi has a significant compilation overhead because it is AOT and has a deep pipeline that compiles Python code to Scheme, then to C, and finally to machine code."}, :properties {:color "yellow"}} {:id #uuid "6452ba2e-27ba-45bc-bb08-c97e83fa8d55", :page 11, :position {:bounding {:x1 0, :y1 826.8056030273438, :x2 627.3795166015625, :y2 2322.844482421875, :width 1305.6, :height 1689.6}, :rects ({:x1 219.312744140625, :y1 826.8056030273438, :x2 627.3795166015625, :y2 850.6277770996094, :width 1305.6, :height 1689.6} {:x1 115.20000457763672, :y1 855.63330078125, :x2 537.6304168701172, :y2 877.3222045898438, :width 1305.6, :height 1689.6} {:x1 0, :y1 2301.86669921875, :x2 0, :y2 2322.844482421875, :width 1305.6, :height 1689.6}), :page 11}, :content {:text "Benchmarks measure real time using the Python time module which all implementations provide."}, :properties {:color "yellow"}} {:id #uuid "6452bd0c-bde8-477e-b00a-7e3b2747b09f", :page 11, :position {:bounding {:x1 0, :y1 1365.7135620117188, :x2 587.8453216552734, :y2 2545.666748046875, :width 1224, :height 1584}, :rects ({:x1 188.8914031982422, :y1 1365.7135620117188, :x2 587.8453216552734, :y2 1388.046875, :width 1224, :height 1584} {:x1 108, :y1 1389.625, :x2 579.9853515625, :y2 1411.9583740234375, :width 1224, :height 1584} {:x1 0, :y1 2526, :x2 0, :y2 2545.666748046875, :width 1224, :height 1584}), :page 11}, :content {:text "To minimize the loop overhead, its body contains several repetitions of the measured operation (typically 20"}, :properties {:color "yellow"}} {:id #uuid "6452bd82-bae0-4c14-b0e2-c8a13a6dd9db", :page 11, :position {:bounding {:x1 0, :y1 136.58124542236328, :x2 1043.7925109863281, :y2 2609.599998474121, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 928.7417297363281, :y1 136.58124542236328, :x2 1043.7925109863281, :y2 157.3812484741211, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 158.89374542236328, :x2 1041.7342834472656, :y2 179.6937484741211, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 181.2125015258789, :x2 938.6685485839844, :y2 202.01250457763672, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2574.400047302246, :x2 0, :y2 2593.599998474121, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2590.400047302246, :x2 0, :y2 2609.599998474121, :width 1142.3999999999999, :height 1478.3999999999999}), :page 11}, :content {:text " Unfortunately, it does not allow a comparison with PyPy which treats the kernel of many of our benchmarks as dead cod"}, :properties {:color "yellow"}} {:id #uuid "6452bec7-50a0-4330-b516-8e8d2dd905db", :page 11, :position {:bounding {:x1 0, :y1 404.37501525878906, :x2 1044.8913879394531, :y2 2801.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 612.1124877929688, :y1 404.37501525878906, :x2 1041.7461242675781, :y2 425.1750030517578, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 426.6937561035156, :x2 1044.8913879394531, :y2 447.49375915527344, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 449.0062561035156, :x2 638.9649047851562, :y2 469.80625915527344, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2766.4000549316406, :x2 0, :y2 2785.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2782.4000549316406, :x2 0, :y2 2801.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999}), :page 11}, :content {:text "Performance improvements from other optimizations unrelated to behaviors also show up in the microbenchmarks"}, :properties {:color "yellow"}} {:id #uuid "6452becd-3128-4dd1-a6df-c0913f0e70cc", :page 11, :position {:bounding {:x1 0, :y1 449.0062561035156, :x2 1041.7464904785156, :y2 2833.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 648.2349243164062, :y1 449.0062561035156, :x2 1041.7404479980469, :y2 469.80625915527344, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 471.32501220703125, :x2 1041.7464904785156, :y2 492.125, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 493.63751220703125, :x2 657.223876953125, :y2 514.4375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2798.4000549316406, :x2 0, :y2 2817.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2814.4000549316406, :x2 0, :y2 2833.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999}), :page 11}, :content {:text "For instance, assignment to global variables, function calls and iteration on built-in types are all faster than with CPython"}, :properties {:color "yellow"}} {:id #uuid "6452bed2-863a-4a94-becb-c70fe197dbb3", :page 11, :position {:bounding {:x1 0, :y1 493.63751220703125, :x2 1042.2277526855469, :y2 2881.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 666.4523010253906, :y1 493.63751220703125, :x2 1042.2277526855469, :y2 514.4375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 515.9562683105469, :x2 1041.4387512207031, :y2 536.7562561035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 538.2750244140625, :x2 1041.7432556152344, :y2 559.0750122070312, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 560.5875244140625, :x2 749.9634399414062, :y2 581.3875122070312, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2830.4000549316406, :x2 0, :y2 2849.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2846.4000549316406, :x2 0, :y2 2865.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2862.4000549316406, :x2 0, :y2 2881.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999}), :page 11}, :content {:text "On the other hand, some microbenchmarks display poor performance. Those are unoptimized features that we implemented in a naive way, such as function calls with keyword arguments."}, :properties {:color "yellow"}} {:id #uuid "6452beee-2cf9-4990-b595-620cd469b4e5", :page 11, :position {:bounding {:x1 0, :y1 694.4875030517578, :x2 1042.2121887207031, :y2 2977.60009765625, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 675.28466796875, :y1 694.4875030517578, :x2 1042.2121887207031, :y2 715.2875061035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 716.8000030517578, :x2 1041.7437438964844, :y2 737.6000061035156, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 593.5125122070312, :y1 739.1187438964844, :x2 962.9326477050781, :y2 759.9187622070312, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2942.400146484375, :x2 0, :y2 2961.60009765625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 2958.400146484375, :x2 0, :y2 2977.60009765625, :width 1142.3999999999999, :height 1478.3999999999999}), :page 11}, :content {:text "Zipi being at an early development stage, only four benchmarks from PyPerformance are supported at the moment, hence the need for custom benchmarks"}, :properties {:color "yellow"}} {:id #uuid "6452bf9c-18e8-4d21-99ea-58199131bde6", :page 12, :position {:bounding {:x1 0, :y1 951.2625122070312, :x2 552.1714849472046, :y2 1873.6000366210938, :width 1142.3999999999999, :height 1478.3999999999999}, :rects ({:x1 323.72235774993896, :y1 951.2625122070312, :x2 552.1714849472046, :y2 972.0625, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 100.8000020980835, :y1 973.5750122070312, :x2 549.3891439437866, :y2 994.375, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 100.8000020980835, :y1 995.893798828125, :x2 362.33351039886475, :y2 1016.6937866210938, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 1838.4000854492188, :x2 0, :y2 1857.6000366210938, :width 1142.3999999999999, :height 1478.3999999999999} {:x1 0, :y1 1854.4000854492188, :x2 0, :y2 1873.6000366210938, :width 1142.3999999999999, :height 1478.3999999999999}), :page 12}, :content {:text "We wish to extend the behavior optimization to other operations in the future to further analyze its impact on performance"}, :properties {:color "yellow"}}], :extra {:page 3}}