Frame Io Versions

admin 11/22/2021
71 Comments
  1. Frame Io Versions Free
  2. Frame Io Versions 2
  3. Frame Io Versions List

More prevalent online today than even political opinions or cats, video advertisements dominate the internet. Digital ad spending in the U.S. is forecasted to increase 15.9% this year to $83 billion dollars. TV ad spending was less than $72 billion in 2016, which means the advertising industry has officially decided the internet is the best way to reach their customers (Adweek, Emarketer).

As platforms open up their video capabilities, and as app developers inevitably come up with new ways to create, share, and distribute videos, our once comfortable 16×9 aspect ratio is quickly losing ground. Square (1:1) videos have become the standard for social media videos, as they easily fit into timelines and work across multiple platforms like Facebook, Instagram, and Twitter; but vertical 9×16 videos are quickly gaining ground thanks to advertisers’ growing access to Snapchat’s 158 million daily users (Business Insider).

Motion Array’s Review. Motion Array’s Review has been specifically designed with real-time remote. If you are having trouble in Frame.io and are using one of our supported browsers, try updating the browser to see if this makes a difference. Frame.io is using cutting-edge technology that is only supported on the newest versions of each browser. We uploaded all 552 resulting video clips to the Codec Comparison Project, and we used Frame.io’s Version Stack feature to combine all of the different codecs for each clip into a single asset. With the clips in a version stack, you can use the side-by-side comparison view to look at two different codecs side by side, including their. We uploaded all 552 resulting video clips to the Codec Comparison Project, and we used Frame.io’s Version Stack feature to combine all of the different codecs for each clip into a single asset. With the clips in a version stack, you can use the side-by-side comparison view to look at two different codecs side by side, including their.

Editors these days can often find themselves where one video for a client quickly turns into several deliverablesone for each platform. If you haven’t yet been asked for a 1:1 or 9:16 deliverable, just wait. Love it or hate it, it’s coming, with the force of capitalism driving it on. I remember one project I did for LEGO—I was making four social videos and it suddenly turned into 36 deliverables! Three different end-cards was not so bad—but then you factor in the three orientations for each video and end-card.

More assets definitely mean more challenges, and inevitably more issues (Murphy’s Law anyone?). But having an efficient workflow can save you time and frustration. Keep reading to see some steps and tips to save time and cut down on as many adjustments as possible.

Specifications

The web’s top sites for video ads run a few different orientations these days, and to confuse things even further, a few platforms regularly run multiple video orientations. Pinterest, for instance, runs video ads at both 1:1 and vertical 9×16, while Facebook runs video ads in 1:1, 9×16, AND 16×9. Having the capability and using it are different though. 1:1 and 16×9 video assets will work natively on more platforms, so it makes sense to avoid creating vertical assets for Facebook unless they will also run on Snapchat or Pinterest. As you can tell from the varied aspects, we will have to scale our videos up to go from Widescreen.

Here’s a quick cheat sheet to the biggest platforms and the orientations of video ads they run:

  • Facebook: 1:1, 16×9, and 9×16
  • Instagram: 1:1
  • Twitter: 1:1 and 16×9
  • Pinterest: 9×16 and 1:1
  • Snapchat!: 9×16

What Makes A Good Social Media Edit?

Social Media is all about timelines and newsfeeds—continuously updating lists of posts by you and your friends that you scroll through. Not only does this means your content will be competing for your viewers’ attention with short clips and pictures, but also that most people will scroll by your video while it is still muted.

To stand out, social media clips need to be visually stimulating enough to grab people’s attention in just a few seconds as they are scrolled past without audio. Pacing and striking imagery will play a large part in this—get right into your action and use short clips and quick cuts to catch the viewer’s eye. Go through your original video, and make sure you are showcasing the most visually striking shots and broll early in your edit.

Cutting Down Runtime

One of the harder things about creating social media cuts is the short length required by some platforms, like Instagram at 60 seconds and Snapchat at 10 seconds or less. I have learned a few tips over the years for trimming down videos to these lengths.

The first is to avoid talking heads and interview shots. You can still use dialogue or interview audio, but put it under visually striking or exciting clips or b-roll. If you are required to put in a subject speaking, use a j-cut or l-cut where you cut away from your subject while they’re speaking but keep their audio going under another shot to show more in less time. Named for the shapes they create on your timeline, a J-cut is when sound of the next clip precedes its picture, while in an L-cut the picture changes the but audio from the first clip continues.

The other thing you can do to refocus your edit to a shorter length is to focus in on a specific sound bite or two. If your original video has some good one liners or powerful comments, try to make a short clip that plays one up. This is especially helpful for short 6- to 10-second previews for Snapchat, where you do not have enough time to structure a narrative or cut to music.

1. Start Wide (16×9)

If you will be delivering a 16×9 version of your video, start there. This way you will have the least amount of adjustments to make once you move on to yourother assets.

Go ahead and edit your video as you normally would, including your graphics and titles. Once you are picture locked, you will start making the other assets. If you won’t be delivering anything in Square (1:1) , skip ahead to step 3, otherwise continue to the next step.

2. Square (1:1) – Facebook, Instagram, Pinterest

Create your square asset next to minimize the amount of resizing and repositioning of your clips, titles, and graphics. Duplicate your picture locked 16×9 sequence, and open its sequence settings to change the dimensions from widescreen to 1080px by 1080px.

If most of your action takes place in the center of your frame, you may not have to reframe many of your shots at all when moving from widescreen to square. If more of your action takes place on the sides of frame, you will have to go through your shots and reposition them with the x-axis of the “position” attribute. A time saving tip here if you are in Premiere is to copy and “paste attributes” across all instances of the same clip in your timeline. Right click and “copy” a clip that you have repositioned, and then select all the clips you want to paste the clips position settings to, right click and select “paste attributes.” Premiere will then ask you to check off which attributes you want to paste; select “Motion” to paste the position attributes.

Next, adjust your graphics and titles to fit into your new aspect ratio by scaling them down.

3. Vertical (9×16) – Facebook, Pinterest

Vertical assets will be your last step. If you have already created square assets, then your titles and graphics will already be the right size and width to fit in this frame. To take advantage of this, duplicate your 1:1 sequence and adjust its dimensions to 1080px by 1920px. If you did not have square assets, go ahead and duplicate your 16×9 sequence.

Ideally if you are going to have a vertical edit, your project was shot in 4k or high res as the next step is to scale up your footage to fill the extra vertical space of the new frame size. If your footage is only 1080p, confirm with your producer, but generally most clients are ok with scaling up 1080p footage for Snapchat since it only runs on small phone screens anyway. Go ahead and scale up your footage—typically 178%-180% does the trick, but that also means you could run into some framing issues when coming from Widescreen.

Go through your shots and resize them with the “scale” attribute. Once you’ve done this, use x-axis of the “position” attribute to move the clip left and right as necessary to properly frame your shot. To keep your subject in frame, you may have to keyframe the x-axis attribute; or alternatively, you can scale up the video further to 200% splitting the image into two equal halves that you cut between instead of panning across with the x-position attribute. Again copy and paste attributes across any similar shots if you are editing in Premiere to save time.

Closed Captioning

As more social platforms default their videos to mute, understanding subtitling can help your videos perform their best.

SRT files are the standard for subtitling and you can upload them along with your video on most platforms. They can be made easily in a basic word editor such as Mac’s TextEdit or Windows’ Notepad if you get to understand their formatting. This article from Techwalla gives a great walkthrough about making these properly.

Facebook now has a tool for video in which it uses vocal recognition to auto-generate subtitles for you. It works well enough that I typically ignore the .SRT route if my videos final destination is Facebook.

Snapchat

It’s important to remember that Snapchat ads have their own rules. While vertical, Snapchat requires ads to be a loop between 3 and 10 seconds long, though 4 – 6 seconds is recommended. Be sure to double check with your manager or client what length they are expecting.

Tip: loop your sequence in Premiere.

Click the gear icon on the right side of the Program Window, and toggle on the loop function by selecting ‘Loop’ from the dropdown:

Social Media Edits From Finished Files

Some clients may have you make social media edits out of finished videos, instead of a project you can open up and scale text and graphics as needed. When this is this case, text and graphics probably will not fit on screen in every orientation. Avoid these shots or scale them up enough to frame out the text or graphics—this way you will have a clean shot you can use in your edit and add your own text and graphics too as necessary while retaining control over their size, position, and consistency across your videos.

More Specs: Exporting

Frame Io Versions

When it comes time to export, you will need to double check your platform’s specifics again. For most web video, h.264 is a good bet; but as the old idiom goes, “It’s better to be safe than sorry.” In most NLEs, it’s quick and easy to save settings as a preset, so go ahead and create and name one for each of these platforms as you set them up to export by clicking the first button to the right of the ‘Preset’ dropdown: In addition to a specific aspect ratios, each platform has its own requirements for file types, resolutions, and framerates as well. These can change as the site or apps are updated, so it is important to keep up to date with industry news, or double check these specifications each time to make sure you do not run into any problems.

Tip: For most instances, Premiere and Media Encoder’s h.264 preset ‘Match Source – High Bitrate’ is a great choice for web exports if your sequence settings are accurate. It’s simple, versatile, and great quality for the file size.

In The Real World

In reality, your post supervisors and/or clients may ask for these assets in a less ideal order, which can throw a wrench in your productivity and lead to endless cycles of re-exporting dozens of versions over and over again. If possible, discuss this workflow with them ahead of time so they understand that the widescreen asset is still the main asset that the socials will be created from, and therefore should be picture-locked first to avoid having to update and re-export all of your socials with each edit to the widescreen video.

Knowing your specs or how to find them, making your 16×9 asset first, and creating and using export presets will maximize your efficiency when creating deliverables for multiple social media platforms at once.

As the speed of digital ad spending increases, and businesses find innovative new ways to place their videos thanks to a plethora of available aspect ratios, expect to see video ads on platforms you never expected. When that happens, a whole new world of editing opportunities will be opened for you.

6 February 2021: ASM 9.1 (tag ASM_9_1)

  • JDK 17 support
  • Add some input validations in ClassReader
  • Replace -debug flag in Printer with -nodebug (-debug continues to work)
  • bug fixes
    • 317921: Make Analyzer not require correct maxs or calculate maxs fast
    • 317922: InstructionAdapter shall throw consistent exceptions
    • 317923: Incorrect documentation on ClassReader's use of AnnotationVisitor
    • 317929: ClassRemapper doesn't remap annotation values
    • 317930: Can CheckClassAdapter.checkTypeRef throw a more specific exception?
    • 317931: Shall CheckMethodAdapter.Method.visitLabel throw IllegalStateException?
    • Tests that requires preview features should only run if the preview features of the right JDK are enabled

22 September 2020: ASM 9.0 (tag ASM_9_0)

  • bug fixes
    • 317897: AdviceAdapter incorrectly emits onMethodEnter from a try-catch block in a constructor

14 July 2020: ASM 9.0 beta (tag ASM_9_0_BETA)

  • JDK 16 support (sealed classes), new ASM9 api version
  • bug fixes
    • 317900: Javadoc of ClassVisitor does not specify order of visitRecordComponent
    • 317904: Bug with constructors in AdviceAdapter
    • 317910: Iterating over a InsnList with an iterator traverses the list twice

3 April 2020: ASM 8.0.1 (tag ASM_8_0_1)

  • bug fixes
    • 317898: ASM 8 does not support writing of empty records

28 March 2020: ASM 8.0 (tag ASM_8_0)

  • Java 14 support (RecordComponent)
  • bug fixes
    • 317896: Performance degradation when using dynamic constants as a static paramet to another InDy/ConDy

Frame Io Versions Free

11 January 2020: ASM 7.3.1 (tag ASM_7_3_1)

  • new V15 constant
  • experimental support for PermittedSubtypes and RecordComponent
  • bug fixes
    • 317885: SKIP_DEBUG now skips MethodParameters attributes

29 September 2019: ASM 7.2 (tag ASM_7_2)

  • InsnList now implements Iterable interface
  • bug fixes
    • 317875: Infinite loop when parsing invalid method descriptor

6 July 2019: ASM 7.2 beta (tag ASM_7_2_BETA)

  • add support for Java 14
  • fix missing 'final' on some ClassWriter methods
  • ASMifiable and Textifiable moved to asm-deprecated.jar
  • small refactors to reduce code duplication
  • delete unused code and constants
  • bug fixes
    • 317873: Add support for RET instruction in AdviceAdapter
    • 317872: Throw an exception if visitFrame used incorrectly

3 March 2019: ASM 7.1 (tag ASM_7_1)

  • new constant Opcodes.V13 for Java 13
  • small optimizations in asm.Type
  • check signatures in CheckMethodAdapter.visitLocalVariable
  • refactor unit tests to use Arrange-Act-Assert pattern
  • deprecations
    • deprecate ClassReader.b
    • deprecate ASMifiable and Textifiable (replaced with ASMifierSupport and TextifierSupport)
    • move deprecated Remapping*Adapter classes to new asm-deprecated.jar
    • delete asm.util.Printer buf and appendString (were previously deprecated)
  • bug fixes
    • 317863: Remapper logic for InnerClasses attribute is wrong for method-local Java classes
    • 317866: Expanded frames result in incorrect types for primitive arrays of more than seven dimensions
    • 317868: IllegalArgumentException at Frame.getAbstractTypeFromDescriptor on class name with parentheses
    • 317869: CheckClassAdapter requires non-null ClassVisitor that returns non-null MethodVisitor

27 October 2018: ASM 7.0 (tag ASM_7_0)

  • rollback of !177: Ensure instructions belong only to one list
  • new initJumpTarget method in Frame

29 September 2018: ASM 7.0 beta (tag ASM_7_0_BETA)

  • support of JDK 11 features now official (was experimental)
  • xml package deleted (was deprecated since 6.1)
  • small improvements
    • Type and TypePath now explicitly final
    • Eliminate double-spaced output from Textifier
    • Remap inner class names in Remapper
    • Better UnsupportedOperationException messages
    • Javadoc improvements
    • Check code quality with Checkstyle and PMD
    • Fix performance regression introduced in 6.2
  • bug fixes
    • 317847: Gradle build missing Implementation-Version property
    • 317848: Type names no longer included in declaration comments produced by Textifier
    • 317851: Analyzer gets StackOverflowError when method has lots of jumps
    • 317853: SimpleVerifier merges types incorrectly when one type is an interface
    • 317856: Bug in AdviceAdapter with superclass constructors
    • MethodWriter generates incorrect bytecode for long or double ConstantDynamic
    • Remapper does not remap ConstantDynamic and Handle correctly

5 August 2018: ASM 6.2.1 (tag ASM_6_2_1)

  • small improvements
    • !177: Ensure instructions belong only to one list
    • !178: Allow setting stack values in analysis frames
    • !179: Multiple methods for initializing analysis values
    • !181: Improve exception messages when exceeding classfile limits
    • !182: Minor Javadoc improvements
  • bug fixes
    • 317609: Enhance ClassWriter to take a class loader for use with getCommonSuperClass
    • 317833: When ClassWriter copies constant pool of class reader, ClassWriter.COMPUTE_MAX does not consider changes in argument sizes
    • 317835: COMPUTE_MAX_STACK_AND_LOCAL_FROM_FRAMES does not handle LONG and DOUBLE types correctly
    • 317837: Apparent regression in GeneratorAdapter.java `cast` function
    • 317843: Bug in CheckMethodAdapter

24 May 2018: ASM 6.2 (tag ASM_6_2)

  • experimental support for the upcoming JDK 11 features (nest mates and ConstantDynamic)
  • code quality and readability of commons package improved a lot
  • bug fixes
    • 317817: Allow Kotlin back-tick identifiers by CheckMethodAdapter
    • 317821: Regression in 6.1: 'new Frame' instead of 'newFrame' in Analyzer
    • 317822: ACC_DEPRECATED flag (or corresponding attribute) is lost if the constant pool is copied
    • 317823: Computing maximum stack size does not work correctly with JSR/RET instructions present
    • 317824: ACC_SYNTHETIC attribute is lost for < Java 1.5 if the constant pool is copied
    • 317825: idem
    • 317827: Computing maximum stack size does not work correctly with dead code present

26 March 2018: ASM 6.1.1 (tag ASM_6_1_1)

  • bug fixes
    • 317815: ClassReader.readCode() throws NullPointerException.
    • 317816: ClassReader constructor goes into infinite loop on zero length input streams

11 March 2018: ASM 6.1 (tag ASM_6_1)

Diffs from 6.0:

  • new V10 constant for Java 10 class files
  • xml package deprecated
  • project layout changed to Maven style
  • build system changed from Ant to Gradle
  • coding style changed to Google Java style
  • code quality and readability improved a lot
  • code quality tracked with SonarQube
  • performance improvements
  • unit tests improved: migrated to JUnit 5, faster, coverage > 95%
  • non-regression tests added for past issues
  • benchmarks improved: now use JMH
  • new Gitlab Continuous Integration pipeline
  • bug fixes:
    • 317800: Resizing jump instruction adds invalid stack frame to a class without frames
    • 317802: MethodRemapper.visitInvokeDynamicInsn mutates source bsmArgs
    • 317804: Adjust CheckModuleAdapter so Module attribute in 54.0+ class file cannot contains a requires java.base with ACC_TRANSITIVE or ACC_STATIC_PHASE
    • 317807: Asymmetry of ClassWriter for bytecode versions higher than the one that ClassReader accepts
    • 317809: CheckMethodAdapter rejects valid Java and JVM identifiers with surrogate characters
    • small bug fixes related to modules (https://gitlab.ow2.org/asm/asm/merge_requests/20/, https://gitlab.ow2.org/asm/asm/merge_requests/19/)
  • backward binary compatibility is preserved, but the behavior at runtime has changed in a few areas:
    • ACC_SYNTHETIC flag vs Synthetic attribute, see https://gitlab.ow2.org/asm/asm/merge_requests/17
    • numbering of synthetic parameters: see https://gitlab.ow2.org/asm/asm/merge_requests/56
    • StringBuffer no longer used in util (Printer.buf deprecated, use stringBuilder instead)

23 September 2017: ASM 6.0 (tag ASM_6_0)

Diffs from 5.2:

  • Codebase migrated to gitlab (feature requests 317617, 317619, 317542)
  • Support for modules (JSR 376, feature request 317628)
  • Support for JDK specific module attributes (ModuleTarget, ModuleHashes and ModuleResolution).
  • ASM jars now contain debug info, asm-all jar removed (feature request 317622)
  • Support for removable features deleted (cf SIGNATURES, ANNOTATIONS, etc constants in ClassReader)
  • bug fixes
    • 317793: AnalyzerAdapter calculates wrong type for AALOAD in case of null
    • 317784: NegativeArraySizeException when resizing jump instruction in a class without frames
    • 317780: IllegalArgumentException at CheckMethodAdapter.checkInternalName for non-Java-identifier name
    • 317785: NullPointerException in MethodRemapper with 'chop' stack map frames and tree API
    • 317786: VerifyError when added code pushes the offset of a conditional backward jump below -32768
    • 317791: Invalid class files generated for large methods (regression introduced in 5.2)
    • 317792: Fix the handling of inner classes with EXPAND_ASM_INSNS
    • Bug fix related to stack map frames

16 July 2017: ASM 6.0 beta (tag ASM_6_0_BETA)

Diffs from 6.0 alpha:

  • Codebase migrated to gitlab (feature requests 317617, 317619, 317542)
  • Support for modules updated to the latest version of JSR 376
  • Support for JDK specific module attributes (ModuleTarget, ModuleHashes and ModuleResolution).
  • bug fixes
    • 317749: ClassCheckAdapter should discover invocation of default method from pre-Java 8 class file
    • 317626: AnnotationNode incorrectly process array values in 'visit(final String name, final Object value)' method
    • 317630: Frames are re-calculated for Large Methods
    • 317748: Class after instrumenting loses first BootstrapMethods entry
    • 317784: NegativeArraySizeException when resizing jump instruction in a class without frames
    • 317780: IllegalArgumentException at CheckMethodAdapter.checkInternalName for non-Java-identifier name
    • 317785: NullPointerException in MethodRemapper with 'chop' stack map frames and tree API
    • 317786: VerifyError when added code pushes the offset of a conditional backward jump below -32768

23 December 2016: ASM 5.2 (tag ASM_5_2)

Diffs from 5.1:

  • Better comments in Opcodes.java
  • SuppressWarnings in Opcodes.java for Integer constructor deprecation.
  • More tests to check binary backward compatibility
  • bug fixes
    • 317616: Misleading comment in ClassWriter
    • 317621: Type.getReturnType(desc) returns wrong for types with parenthesis in name
    • 317749: ClassCheckAdapter should discover invocation of default method from pre-Java 8 class file
    • 317626: AnnotationNode incorrectly process array values in 'visit(final String name, final Object value)' method
    • 317630: Frames are re-calculated for Large Methods
    • 317748: Class after instrumenting loses first BootstrapMethods entry

19 June 2016: ASM 6.0 alpha (tag ASM_6_0_ALPHA)

Diffs from 5.1:

  • Preliminary support for modules
  • bug fixes
    • 317616: Misleading comment in ClassWriter
    • 317621: Type.getReturnType(desc) returns wrong for types with parenthesis in name

5 March 2016: ASM 5.1 (tag ASM_5_1)

  • Remapping...Adapter classes are now deprecated, replaced with ...Remapper classes.
  • Add support for method reference on an interface.
  • bug fixes
    • 317567: SerialVersionUIDAdder issues.
    • 317578: incorrect max code size check in MethodWriter getSize().
    • 317579: Signature Process in SignatureRemapper is Broken.
    • 317581: Import-Package headers should denote version by setting the version attribute.
    • 317586: VerifyError caused by LocalVariablesSorter.
    • 317602: Asmifier does not recognize null value for TypePath.
    • 317604: Bug in AdviceAdapter.visitFieldInsn().
    • 317607: Calling add or set on an InsnListIterator throws NPE when at end of list.
    • 317606: Frequent use of StringBuffer instead of StringBuilder is hurting performance.

15 May 2015: ASM 5.0.4 (tag ASM_5_0_4)

Frame Io Versions 2

  • bug fixes
    • Use the pattern .<methodname><methoddesc> to specify mapInvokeDynamicMethodName remappings in SimpleRemapper.
    • 317555: NPE in MethodWriter.resizeInstructions().
    • 317548: Mistakes in API documentation of MethodVisitor and SignatureVisitor.
    • 317545: Asm eat linenumbers if there are several of them on one label.
    • 317539: TypePath not adequately supporting types w/ >10 type arguments.
    • 317538: AnnotationNode in ASM 5.0.3 does not handle null returned from AnnotationVisitor correctly.
    • Bug fix in GeneratorAdapter.catchException.
    • 317534: Modernize ASM code: replace new WrapperType() by autoboxing.
    • 317533: MethodInsnNode.accept() doesn't call acceptAnnotations().

21 April 2014: ASM 5.0.2 (tag ASM_5_0_2)

  • bug fixes
    • 317135 Textifier prints bridge methods to be volatile.
    • 317151 Fix for 316545 is incorrect.
    • 317136 ASMifier 5.0.1 output references package org.objectweb.asm.attrs.

23 March 2014: ASM 5.0.1 (tag ASM_5_0_1)

  • bug fixes
    • 317132 ASM 5.0 do not supported JDK 1.5?
    • 317131 Infinite loop in InstructionAdapter.invokestatic(...).
    • 316691 Incorrect StackMapFrame calculations for large > 32k methods in Java 7.
    • 317123 ASM5.0: Class MethodNode broken?
    • 317127 duplicate entries in InnerClasses attribute.

16 March 2014: ASM 5.0 (tag ASM_5_0)

  • visitMethodInsn(int,String,String,String) is deprecated, and replaced with visitMethodInsn(int,String,String,String,boolean), in order to support invokespecial and invokestatic on interfaces.
  • Added a getMaxStackSize method in asm.tree.analysis.Frame.
  • bug fixes
    • 317111 source debug extension size should not be limeted to 64k
    • 316682 maxLocals not updated in AnalyzerAdapter constructor.
    • 316630 Type verification in CheckAnnotationAdapter.
    • 316545 ASM incorrectly merges Object[] and byte[][] in StackMapTable.
    • 316555 Wrong maxLocals calculation in AnalyzerAdapter.
    • 316553 InsnListIterator can't get previous entry after exec 'remove()'.

12 October 2013: ASM 5.0 beta (tag ASM_5_0_BETA)

  • Full support of Java 8 (annotation on Java types and MethodParameters attribute)

12 October 2013: ASM 4.2 (tag ASM_4_2)

  • bug fixes
    • 316506 ByteVector doesn't validate byteLength in putUTF8().
    • Javadoc typos.
    • 316482 JarOptimizer removes directory entries in resulting jars.
    • Don't create a new ClassWriter instance in toByteArray, in order for this code to work with subclasses.
    • 316416 JSRInlinerAdapter fails with IndexOutOfBoundsException.
    • 316403 LocalVariablesSorter incorrectly assumes it can call visitFrame() with original args.
    • 316373 RemappingSignatureAdapter.visitInnerClassType is broken when handling identifiers with '$' signs.
    • 316380 Bug in org.objectweb.asm.util.CheckClassAdapter.visitInnerClass() regarding inner class name.

14 October 2012: ASM 4.1 (tag ASM_4_1)

  • implicit first frame no longer visited with EXPAND_FRAMES (was necessary to fix bug 316360).
  • performance improvements in ClassReader (about +10 percent speedup).
  • feature requests
    • 316306: More efficient patch for Frame.merge().
    • 316318: Allow generated SVUID field to be marked synthetic.
    • 316321: asm osgi bundles based on BND.
    • Moved checkClassSignature, checkMethodSignature and checkFieldSignature to CheckClassAdapter and made them public.
    • 316345: Support 'synthetic' access modifier in org.objectweb.asm.util.Textifier.appendAccess().
  • bug fixes
    • 316360: MethodWriter.visitFrame(F_NEW,...) requires explicit invocation for the implicit frame at offset zero.
    • 316352: LocalVariableSorter.visitFrame() logic is incorrect.
    • 316326: analysis.Frame.merge() should use !.equals() instead of !=.
    • Fix regression: LDC with a primitive class doesn't work anymore.
    • 316347: GeneratorAdaptor.ifCmp() generates DCMPG/DCMPL incorrectly.
    • 316348: ClassVersion check in ClassReader looks at wrong offset.
    • 316359: ClassWriter toByteArray fails when there are more than 32k constant pool entries.

29 October 2011: ASM 4.0 (tag ASM_4_0)

  • added automatic test of backward binary compatibility in build process.
  • added automatic call to resetLabel in MethodNode when necessary.
  • improved printing of method handles in Textifier.
  • bug fixes
    • 316204 Analyzer produces incorrect lvt types for jsr return targets when jsr frame changes twice during analysis.
    • 316212 org.objectweb.asm.optimizer.ClassOptimizer does not work with classes in default package.
    • fixed incorrectly ASMified method handles.

11 September 2011: ASM 4.0 RC2 (tag ASM_4_0_RC2)

  • ClassVisitor, MethodVisitor, etc interfaces replaced with abstract classes, in order to ensure backward binary compatibility in future ASM versions.
  • ClassAdapter and MethodAdapter merged into ClassVisitor and MethodVisitor, classes using multiple interface inheritance removed (e.g. MemberNode, EmptyVisitor) or adapted (e.g. trace and asmifier classes in asm.util).
  • MethodHandle and MethodType renamed to Handle and Type.
  • improved getCommonSuperClass to avoid resolving loaded classes.
  • improved getCommonSuperClass in ClassWriterComputeFramesTest (more efficient).
  • new checks in CheckClassAdapter.
  • new example, showing how to use the new invokedynamic instruction.
  • bug fixes
    • 315942 asm-xml.dtd fails to mention SWAP element
    • 315984 asm-xml.dtd fails to mention FREM element
    • NOP ATHROW bug (compute frames failed on deadcode in exception handler range)
    • fixed bugs found with FindBugs
    • minor Javadoc improvements and fixes
  • feature requests
    • 316005 Constant pool access
    • 313999 Maven POM should include source-code
    • patch from Ivo Anjo in Analyzer

17 April 2011: ASM 4.0 RC1 (tag ASM_4_0_RC1)

  • full support of Java 7
  • support of the new invokedynamic encoding and bootstrap method arguments. Done with a new visitInvokeDynamicInsn method.
  • added two new classes MethodHandle and MethodType. Can be used either in visitLdcInsn or as last arguments of visitInvokeDynamicInsn.
  • generified the API to use generics and varargs. However, almost all jars are still small and 1.2 compatible.

21 December 2010: ASM 3.3.1 (tag ASM_3_3_1)

  • bug fixes
    • 315135 COMPUTE_FRAMES with CheckClassAdapter gives IndexOutOfBoundsException
    • 315248 Bug in CheckClassAdapter? Fails for untransformed class
    • 315399 AnalyzerAdapter.execute() method doesn't process null array correctly for AALOAD instruction
    • 315417 LocalVariablesSorter.remap() incorrectly process long/double types
    • 315697 DependencyTracker example fails in handling class Object
    • 315698 DependencyTracker example fails in handling finally blocks

30 May 2010: ASM 3.3 (tag ASM_3_3)

  • added new InstructionAdapter class
  • added TryCatchBlockSorter (provided by Adrian Sampson)
  • improved extensibility of analysis package (patch from Markus Heiden)
  • bug fixes
    • 314969 Counterintuitive interaction of arguments to ClassWriter(cr, flags)
    • 314964 AnalyzerAdapter does not treat <init> calls correctly
    • 314934 ASM Handling of method Synthetic attribute causes exception during retransformation
    • 314878 NPE in AnalyzerAdapter, putfield object comes from different control flow branches
    • fixed bug with remapping of RET instructions
    • 314563 exception from asm.commons.LocalVariablesSorterremap
    • fixed bug in GASMifier
    • fixed bug for F_CHOP frames (locals are ignored for these frames)
    • 314719 method length is sometimes calculated incorrectly
    • 314584 ByteCode Outline Eclipse Plugin -- access flags comment is showing in decimal rather than hex
    • 314481 Bug in Remapper related to annotations
    • 314486 SerialVersionUIDAdder generates an incorrect serialVersionUID under 1.6 VMs for anonymous classes
    • fixed bug with padding for xxxSwitch instructions
    • 313909 VOID_TYPE.getSize() != 0
    • 312464 ClassReader does not ensure that NEW has a label associated with it
  • patches (minor code improvements)
    • 314328 minor improvement to serialveruidadder
    • 314329 unnecessary casting, using HashMap v. Map
    • 314330 make sure files get closed
  • feature requests
    • 314119 Provide read access to uninitializedTypes in AnalyzerAdapter
    • 313804 Improve analysis results
  • Javadoc fixes and improvements

11 June 2009: ASM 3.2 (tag ASM_3_2)

  • added support for new invokedynamic opcode
  • added new Type.getArgumentsAndReturnSizes method
  • added new GeneratorAdapter.valueOf method
  • added two new Method.getMethod methods (feature request #308554)
  • added new checks in Check*Adapter
    • check of xRETURN instructions against declared method return type
    • check that labels are not reused across methods (inside same class; check for labels reuse across classes still missing)
    • checks for debug labels and for visitTryCatchBlock calling order
    • new option for data flow checks with BasicVerifier
  • added Jasmin class adapter (with round trip tests) in examples
  • bug fixes
    • 313314 ClassReader.readClass(InputStream) unnecessary copies read buffer two times
    • 311642 StackOverflowException in Label.visitSubroutine
    • 311100 patch to make verifying multiple classes easier
    • 309819 java/lang/Character typo in GeneratorAdapter
    • 312468 Incorrect merging of frames
    • 309037 GeneratorAdapter generates jump instructions wrongly
    • 308875 ClassWriter COMPUTE_MAXS produces invalid class (verify error)
    • 308807 AnalyzerException running CheckClassAdapter.verify() on java.lang.String
    • 308745 BasicInterpreter.newOperation lacks a throws AnalyzerException clause
    • fixed bug submitted by Simon Goldsmith for inner classes
    • fixed bug submitted by Michael Rudolf
    • fixed bug with usage of copyOperation
    • fixed bug in test case
  • Javadoc fixes and improvements
  • added performance tests with JBET, JClassLib, Jiapi, mozilla.classfile, BCEL and AspectJ BCEL using HelloWorld example
  • added performance tests with Cojen library
  • added performance tests for gnu.bytecode and CSG bytecode using HelloWorld example
  • added FindBugs preferences and builder for ASM
  • added debug jar
  • improved Ant build scripts
    • replaced ow_util_ant_tasks (no longer maintained) with standard ant tasks
    • updated test/lib jars with newer versions
    • removed hardcoded JUNIT Eclipse path, made JSE 1.5.0 container as default VM (previously random system JRE)
    • added license info to the parent pom

29 October 2007: ASM 3.1 (tag ASM_3_1)

  • extended semantic of 'internal name' to array classes (internal name equal to descriptor in this case); renamed 'desc' parameter of 'visitTypeInsn' to 'type'
  • new readLabel method in ClassReader
  • new getLabelNode method in MethodNode (see bug 306920)
  • new resetLabel(s) methods in LabelNode and InsnList (feature request 306499)
  • new checks in CheckMethodVisitor (for stack frames)
  • new CheckSignatureAdapter class
  • new Remapper* classes in commons
  • support for primitive types in GeneratorAdaptor.push (feature request 307378)
  • new build options (no writer, no frames support, etc)
  • new tests
  • bug fixes
    • 307600 StackOverflowError in org.objectweb.asm.MethodWriter.findSubroutine()
    • 307392 MethodWriter generates invalid RuntimeInvisibleParameterAnnotations for enum constructors
    • 307242 Patch to compile ASM 2.2.3 against Java 1.4
    • 307011 Typo error in ASM 3.0 User Guide
    • 306921 SignatureReader does not handle inner class extends of other inner class
    • 306920 MethodNode.labelNode(label) smashes 'user' data Label.info
    • 306521 Parameter local of visitFrame() is lost when using a ClassNode
    • 306503 CheckClassAdapter doesn't flush its output
    • 306422 Another code cleanup patch
    • 306349 SerialVersionUIDAdder breaks compile if using JDK 1.4
    • bug fix related to xSTORE in tree.analysis.Frame
    • bug fix in LocalVariableSorter
    • javadoc fixes

1 November 2006: ASM 3.0 (tag ASM_3_0)

  • visit*Annotation methods can now return null
  • COMPUTE_MAXS now works with all subroutines, even very weird ones that cannot be produced by javac
  • new getters in ClassReader, SKIP_DEBUG now skips visitSource
  • new methods in Type: getObjectType, getConstructorDescriptor
  • InsnList now supports ListIterator interface
  • new insertBefore() and insert*() methods in InsnList class
  • improved Analyzer API, support for abstract and native methods
  • improved Method class behavior with default package
  • minor bug fixes
    • 305716 bug in floating point constant handling in constant pool writing
    • 305917 optimizer.ClassConstantsCollector generates an invalid class constant
    • 306058 FieldNode.accept() cannot handle ClassVisitors yielding null as FieldVisitor
  • new tests
  • javadoc improvements

06 July 2006: ASM 3.0 RC1 (tag ASM_3_0_RC1)

  • new API for instruction lists in tree package
  • new JSRInliner class in commons
  • new CodeSizeEvaluator class in commons
  • changes and optimizations in AnalyzerAdapter
  • DataflowInterpreter renamed into SourceInterpreter
  • port of changes from ASM 2.x

06 July 2006: ASM 2.2.3 (tag ASM_2_2_3)

Frame Io Versions List

  • compute maxs option now takes visitLocalVariable into account
  • bug fix in TraceSignatureVisitor
  • minor Javadoc improvements

20 April 2006: ASM 3.0 beta2 (tag ASM_3_0_BETA2)

  • visitFrame is now called after visitLabel in ClassReader
  • new SKIP_FRAMES and SKIP_CODE flags in ClassReader
  • fixed issue with dead code and COMPUTE_FRAMES option in ClassWriter
  • port of bug fixes from ASM_2_2_2
  • refactorings in core package to get same performances as in ASM 2.x (3.0 beta was slightly less performant than 2.x)
  • refactored tests and added many new tests. Tests now cover 100% of the code, except in commons package.

7 April 2006: ASM 2.2.2 (tag ASM_2_2_2)

  • bug fix in ClassWriter for SourceDebugExtension attribute
  • bug fix in LocalVariableSorter when same variable slot is used to save different types
  • all fields in classes ClassNode, MethodNode, LookupSwitchInsnNode and TableSwitchInsnNode of the tree package are mutable (non-final)
  • additional checks in CheckClassAdapter, CheckMethodAdapter and CheckAnnotationAdapter
  • new constructor in SimpleVerifier with list of interfaces of the class being verified to allow isAssignableFrom check without loading this class (which may be invalid)

14 December 2005: ASM 3.0 beta (tag ASM_3_0_BETA)

  • Major changes for the new Java 6 StackMapTable attribute
    • StackMapTable support integrated in core package (new visitFrame method in MethodVisitor)
    • asm.attrs package removed
    • new commons.AnalyzerAdapter class
    • incremental stack map frames update in LocalVariablesSorter
  • ClassReader and ClassWriter constructors changed
  • ...

14 December 2005: ASM 2.2.1 (tag ASM_2_2_1)

  • bug fix in ClassReader for empty annotation array values
  • new accept method in MethodNode
  • new checks in asm.util
  • performance optimizations in LocalVariablesSorter
  • more precise type system used in analysis package
  • javadoc fixes and improvements

24 November 2005: ASM 2.2 (tag ASM_2_2)

  • pass through behavior for unknown attributes
  • optimizations for 'mostly add' transformations (new ClassWriter constructor)
  • removed constraint for visitTryCatchBlock call order with respect to visitLabel
    • visitTryCatchBlock can be called before or after its labels are visited
    • ClassReader now calls visitTryCatchBloc at the beginning of the method body
  • new AdviceAdapter class in commons
  • new constructor in GeneratorAdapter for better integration with the plain visitors/adapters
  • fixed potential endles loop in IntMap.get()
  • bug fixes in xml package
  • improved javadocs (commons, tree)
  • new tests
  • corbertura added to the build

25 August 2005: ASM 2.1 (tag ASM_2_1)

  • support for StackMapTable attribute in asm.attrs
  • restructured StackMap attribute implementation (SM and SMT are using the same frames)
  • addition of Traceable interface in asm.util.attrs
  • new 'dependencies' example
  • improved commons.Method
  • deprecated asm.tree.Insn.getByOpcode()
  • public constructor in InsnNode
  • better exception handling in analyzer
  • added Opcodes.V1_6 constant
  • javadoc improvements
  • changed code style (Eclipse formatter + Sun conventions with minor changes)
  • asm-all jar
  • bug fixes
    • correct handling of synthetic attribute vs. synthetic flag
    • bug in TraceClassVisitor
    • bug in analyzer.Frame for ASTORE
    • added BasicValue.hashCode() and DataflowValue.hashCode()
    • bug about size calculation for custom attributes

17 May 2005: ASM 2.0 (tag ASM_2_0)

  • Bug fixes

7 February 2005: ASM 2.0.RC1 (tag ASM_2_0_RC1)

  • Bug fixes
  • New visitCode() method in MethodVisitor to easily detect first instruction
  • signature support (contribution from Thomas Hallgren)
  • commons package (contribution from CLIB and other projects; not yet stable)
  • memory usage optimization in tree package (contribution from Rene Treffer)
  • performance improvements in core package
  • performance improvements in analysis package (dataflowinterpreter is now two times faster)
  • asm library plugin for Eclipse, used by Bytecode Outline plugin

21 January 2005: ASM 1.5.3 (tag ASM_1_5_3)

  • Bug fixes
  • New behavior for visitLineNumber

8 November 2004: ASM 2.0 alpha (tag ASM_2_0_ALPHA)

  • Major API changes for Java 5 attributes
    • added new FieldVisitor interface
    • added new AnnotationVisitor interface
    • renamed CodeVisitor into MethodVisitor
    • renamed Constants into Opcodes
    • added and changed methods in ClassVisitor and CodeVisitor
    • removed almost all classes in attrs package
    • removed TreeClassAdapter and TreeCodeAdapter
    • added new MemberNode, AnnotationNode and LabelNode classes
    • many changes in asm.util package
  • Added many new tests, reorganized tests classes and scripts

8 November 2004: ASM 1.5.2 (tag ASM_1_5_2)

  • Bug fixes

23 September 2004: ASM 1.5.1 (tag ASM_1_5_1)

  • Cleaned up ASMifierClassVisitor
  • Removed AnnotationElementValue
  • Added more tests for attributes and Java 5 annotations
  • Added new annotations example
  • Build package for Maven's ibiblio repository
  • Bug fixes

30 August 2004: ASM 1.5 (tag ASM_1_5)

  • Added support for class version in ClassVisitor
  • Changed behavior for unrecognized attributes
  • Added new analyzer in tree.analysis package (contribution from Bing Ran)
  • Improved build files
  • Bug fixes

11 May 2004: ASM 1.4.3 (tag ASM_1_4_3)

  • Added tree.analysis package
  • Added xml package, contributed by Eugene Kuleshov
  • Bug fixes

1 March 2004: ASM 1.4.2 (tag ASM_1_4_2)

  • Improved build files to facilitate Linux packaging
  • Bug fixes

12 December 2003: ASM 1.4.1 (tag ASM_1_4_1)

  • Added attrs package, contributed by Eugene Kuleshov

13 November 2003: ASM 1.4 (tag ASM_1_4)

  • Added attribute support

3 November 2003: ASM 1.3.6 (tag ASM_1_3_6)

  • Changed license from LGPL to BSD

8 October 2003: ASM 1.3.5 (tag ASM_1_3_5)

  • Bug fixes
  • Added thread safety support in ClassReader
  • Added equals and hashcode in Type
  • Added FAQ

9 July 2003: ASM 1.3.4 (tag ASM_1_3_4)

  • Added kASM jar (needed a small refactoring)

3 October 2002: ASM 1.3.3 (tag ASM_1_3_3)

  • Added tree package
  • Added support for GOTO_W and JSR_W
  • Added an ant target to create a debian package

6 September 2002: ASM 1.3.2 (tag ASM_1_3_2)

  • Added util package

6 September 2002: ASM 1.3.1 (tag ASM_1_3_1)

  • Bug fix

11 July 2002: ASM 1.3 (tag ASM_1_3)

  • First public version