<commit_before>'use strict';

Solver.components.push(function (solver, gl) {
    var current = null;
    
    function compileShader(name, type, source) {
        var shader;
        shader = gl.createShader(type);

         var directives = [
                    '#version 100',
                    'precision highp int;',
                    'precision highp float;',
                    'precision highp vec2;',
                    'precision highp vec3;',
                    'precision highp vec4;',
                ].join('\n');
        
        gl.shaderSource(shader, directives + '\n' + source);
        gl.compileShader(shader);
        
        if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)){
            throw name + ' shader compile failed: ' + gl.getShaderInfoLog(shader);
        }

        return shader;
    }

    solver.Program = function (name, vertex, fragment) {

        this.program = gl.createProgram();
        this.name = name;
        this.uniform_cache = {};
        this.attrib_cache = {};
        this.vertex = vertex;
        this.fragment = fragment;
        
        gl.attachShader(this.program, compileShader(vertex.file, gl.VERTEX_SHADER, vertex.source));
        gl.attachShader(this.program, compileShader(fragment.file, gl.FRAGMENT_SHADER, fragment.source));
        
        gl.linkProgram(this.program);<commit_msg>fix problem with highp in new version of firefox<commit_after>'use strict';

Solver.components.push(function (solver, gl) {
    var current = null;
    
    function compileShader(name, type, source) {
        var shader;
        shader = gl.createShader(type);

         var directives = [
                    '#version 100',
                    'precision highp int;',
                    'precision highp float;',
                ].join('\n');
        
        gl.shaderSource(shader, directives + '\n' + source);
        gl.compileShader(shader);
        
        if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)){
            throw name + ' shader compile failed: ' + gl.getShaderInfoLog(shader);
        }

        return shader;
    }

    solver.Program = function (name, vertex, fragment) {

        this.program = gl.createProgram();
        this.name = name;
        this.uniform_cache = {};
        this.attrib_cache = {};
        this.vertex = vertex;
        this.fragment = fragment;
        
        gl.attachShader(this.program, compileShader(vertex.file, gl.VERTEX_SHADER, vertex.source));
        gl.attachShader(this.program, compileShader(fragment.file, gl.FRAGMENT_SHADER, fragment.source));
        
        gl.linkProgram(this.program);
{'fraction_non_alphanumeric': 0.1156773211567732, 'fraction_numerical': 0.003424657534246575, 'mean_word_length': 1.9473094170403586, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3253598', 'n_tokens_mistral': 743, 'n_tokens_neox': 721, 'n_words': 148}